Mongrel and fastthread on ruby 1.9?

Is anybody testing mongrel on ruby 1.9. I just tried installing
mongrel on trunk 1.9 and trunk rubygems and got this error compiling
fastthread:

/Users/stephen/dev/ruby/1.9_trunk/bin/ruby extconf.rb install mongrel
–no-rdoc
creating Makefile

make
gcc -I.
-I/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/i686-darwin8.10.1
-I/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9 -I. -fno-common
-g -O2 -fno-common -pipe -fno-common -c fastthread.c
fastthread.c:13:20: error: intern.h: No such file or directory
fastthread.c:349: error: static declaration of ‘rb_mutex_locked_p’
follows non-static declaration
/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/ruby/intern.h:553:
error: previous declaration of ‘rb_mutex_locked_p’ was here
fastthread.c:366: error: static declaration of ‘rb_mutex_try_lock’
follows non-static declaration
/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/ruby/intern.h:554:
error: previous declaration of ‘rb_mutex_try_lock’ was here
fastthread.c:406: error: static declaration of ‘rb_mutex_lock’
follows non-static declaration
/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/ruby/intern.h:555:
error: previous declaration of ‘rb_mutex_lock’ was here
fastthread.c:463: error: static declaration of ‘rb_mutex_unlock’
follows non-static declaration
/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/ruby/intern.h:556:
error: previous declaration of ‘rb_mutex_unlock’ was here
fastthread.c:524: error: static declaration of ‘rb_mutex_synchronize’
follows non-static declaration
/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9/ruby/intern.h:558:
error: previous declaration of ‘rb_mutex_synchronize’ was here
fastthread.c: In function ‘wait_condvar’:
fastthread.c:626: warning: passing argument 1 of ‘rb_ensure’ from
incompatible pointer type
make: *** [fastthread.o] Error 1

No, we are not. Fastthread will almost certainly not work.

Evented Mongrel might have a better chance at working smoothly because
of all the threading changes.

Evan

On Nov 18, 2007 1:12 AM, Stephen B.

On Nov 18, 2007 3:12 AM, Stephen B.
[email protected] wrote:

-I/Users/stephen/dev/ruby/1.9_trunk/include/ruby-1.9 -I. -fno-common
fastthread.c:406: error: static declaration of ‘rb_mutex_lock’
error: previous declaration of ‘rb_mutex_synchronize’ was here
fastthread.c: In function ‘wait_condvar’:
fastthread.c:626: warning: passing argument 1 of ‘rb_ensure’ from
incompatible pointer type
make: *** [fastthread.o] Error 1


Mongrel-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-users


Luis L.
Multimedia systems

Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi

Here’s an initial patch to support ruby 1.9

On Nov 18, 2007 3:12 AM, Stephen B.
[email protected] wrote:

Is anybody testing mongrel on ruby 1.9. I just tried installing
mongrel on trunk 1.9 and trunk rubygems and got this error compiling
fastthread:

Fastthread corrected problems on Ruby 1.8 implementation of array,
mutex and synchronize.

These corrections where merged to trunk and are available under
–disable-fastthread option of configure.

Also, ruby 1.8.6 ships with these changes, so dependency of fastthread
is only required for ruby < 1.8.6


Luis L.
Multimedia systems

Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi

But anyway, you need to manually build and install mongrel from source
since the gem dependency will remain there.

Hmn, second thought: maybe we could remove the “official” dependency
on fastthread and evaluate if the ruby version you’re using is fixed?

In the same idea of cgi-eof-fix
(long-name-of-gem-to-be-easily-remembered).

'twould indeed be a nice convenience to have a mongrel gem that built on
ruby 1.9 :slight_smile:

These days even checking it out from trunk yields errors.
-R

On Nov 18, 2007 6:51 PM, Todd F. [email protected] wrote:

Here’s an initial patch to support ruby 1.9

The patch you sent has nothing in relation to what Stephen is
commenting: he couldn’t get mongrel installed as gem since fastthread
compile process failed.

Anyway, the support for 1.9 was discussed last month on #mongrel-dev
and the result was something like you attached.

But anyway, you need to manually build and install mongrel from source
since the gem dependency will remain there.

Hmn, second thought: maybe we could remove the “official” dependency
on fastthread and evaluate if the ruby version you’re using is fixed?

In the same idea of cgi-eof-fix
(long-name-of-gem-to-be-easily-remembered).


Luis L.
Multimedia systems

Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi

Luis L. wrote:

These corrections where merged to trunk and are available under
–disable-fastthread option of configure.

Also, ruby 1.8.6 ships with these changes, so dependency of fastthread
is only required for ruby < 1.8.6

At what stage in the installation process of which component can I
specify this flag? Do I need to specify it when invoking configure
before compiling Ruby 1.9.1 from source? And does anyone know if Mongrel
will successfully install and run afterwards? And how likely is it that
disabling fastthread will break other things?

These days even checking it out from trunk yields errors.
-R

Anybody seen anything like this before?
/Users/rogerpack/dev/ruby_19_installed/lib/ruby/site_ruby/1.9.0/mongrel/handlers.rb:214:
warning: else without rescue is useless
SyntaxError:
/Users/rogerpack/dev/ruby_19_installed/lib/ruby/site_ruby/1.9.0/mongrel/handlers.rb:208:
syntax error, unexpected ‘:’, expecting keyword_then or ‘,’ or ‘;’ or
‘\n’
…te(modified_since) rescue nil : false
… ^
/Users/rogerpack/dev/ruby_19_installed/lib/ruby/site_ruby/1.9.0/mongrel/handlers.rb:209:
syntax error, unexpected ‘:’, expecting keyword_end
… : false

with 1.9?
-R

SyntaxError:
/Users/rogerpack/dev/ruby_19_installed/lib/ruby/site_ruby/1.9.0/mongrel/handlers.rb:208:
syntax error, unexpected ‘:’, expecting keyword_then or ‘,’ or ‘;’ or
‘\n’

replacing those colons with ‘then’ seems to at least let it pass the
syntax checker.
Now if I can just get merb and hpricot to work on 1.9…
Thanks!
-R

At what stage in the installation process of which component can I
specify this flag? Do I need to specify it when invoking configure
before compiling Ruby 1.9.1 from source? And does anyone know if Mongrel
will successfully install and run afterwards? And how likely is it that
disabling fastthread will break other things?

I believe it’s
gem install something – --disable-fastthread

Hmm looks like that didn’t help.
I typically just install mongrel from the mongrel SVN into 1.9.
-=R

Roger P. wrote:

I believe it’s
gem install something – --disable-fastthread

nope. that didn’t help. but thanks anyway.

still getting the same:

$ sudo /usr/local/bin/gem install mongrel – --disable-fastthread
Building native extensions. This could take a while…
ERROR: Error installing mongrel:
ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb install mongrel – --disable-fastthread
creating Makefile

make
gcc -I. -I/usr/local/include/ruby-1.9.1/i386-darwin9.5.0
-I/usr/local/include/ruby-1.9.1/ruby/backward
-I/usr/local/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
-fno-common -D_XOPEN_SOURCE=1 -O2 -g -Wall -Wno-parentheses -fno-common
-pipe -fno-common -o fastthread.o -c fastthread.c
fastthread.c:13:20: error: intern.h: No such file or directory
In file included from fastthread.c:14:
/usr/local/include/ruby-1.9.1/ruby/backward/rubysig.h:14:2: warning:
#warning rubysig.h is obsolete
fastthread.c:349: error: static declaration of ‘rb_mutex_locked_p’
follows non-static declaration
/usr/local/include/ruby-1.9.1/ruby/intern.h:674: error: previous
declaration of ‘rb_mutex_locked_p’ was here
fastthread.c:366: error: static declaration of ‘rb_mutex_try_lock’
follows non-static declaration
/usr/local/include/ruby-1.9.1/ruby/intern.h:675: error: previous
declaration of ‘rb_mutex_try_lock’ was here
fastthread.c: In function ‘lock_mutex’:
fastthread.c:392: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c:392: error: (Each undeclared identifier is reported only
once
fastthread.c:392: error: for each function it appears in.)
fastthread.c: At top level:
fastthread.c:406: error: static declaration of ‘rb_mutex_lock’ follows
non-static declaration
/usr/local/include/ruby-1.9.1/ruby/intern.h:676: error: previous
declaration of ‘rb_mutex_lock’ was here
fastthread.c: In function ‘set_critical’:
fastthread.c:438: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c: In function ‘unlock_mutex’:
fastthread.c:447: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c: At top level:
fastthread.c:463: error: static declaration of ‘rb_mutex_unlock’ follows
non-static declaration
/usr/local/include/ruby-1.9.1/ruby/intern.h:677: error: previous
declaration of ‘rb_mutex_unlock’ was here
fastthread.c: In function ‘rb_mutex_exclusive_unlock’:
fastthread.c:499: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c: At top level:
fastthread.c:524: error: static declaration of ‘rb_mutex_synchronize’
follows non-static declaration
/usr/local/include/ruby-1.9.1/ruby/intern.h:679: error: previous
declaration of ‘rb_mutex_synchronize’ was here
fastthread.c: In function ‘wait_condvar’:
fastthread.c:620: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c:626: warning: passing argument 1 of ‘rb_ensure’ from
incompatible pointer type
fastthread.c: In function ‘rb_condvar_broadcast’:
fastthread.c:684: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c: In function ‘signal_condvar’:
fastthread.c:703: error: ‘rb_thread_critical’ undeclared (first use in
this function)
fastthread.c: In function ‘rb_queue_marshal_load’:
fastthread.c:824: error: ‘struct RArray’ has no member named ‘len’
fastthread.c:828: error: ‘struct RArray’ has no member named ‘ptr’
fastthread.c:828: error: ‘struct RArray’ has no member named ‘len’
fastthread.c: In function ‘Init_fastthread’:
fastthread.c:1182: error: ‘rb_thread_critical’ undeclared (first use in
this function)
make: *** [fastthread.o] Error 1

Gem files will remain installed in
/usr/local/lib/ruby/gems/1.9.1/gems/fastthread-1.0.1 for inspection.
Results logged to
/usr/local/lib/ruby/gems/1.9.1/gems/fastthread-1.0.1/ext/fastthread/gem_make.ou

i’ve tried downloading mongrel as a tarball and installing via setup.rb,
but that doesn’t work either:

—> bin
<— bin
—> lib
—> lib/mongrel
<— lib/mongrel
<— lib
—> ext
—> ext/http11
/usr/local/bin/ruby /usr/local/src/mongrel-1.1.5/ext/http11/extconf.rb
checking for main() in -lc… yes
creating Makefile
—> ext/http11/conftest.dSYM
—> ext/http11/conftest.dSYM/Contents
—> ext/http11/conftest.dSYM/Contents/Resources
—> ext/http11/conftest.dSYM/Contents/Resources/DWARF
<— ext/http11/conftest.dSYM/Contents/Resources/DWARF
<— ext/http11/conftest.dSYM/Contents/Resources
<— ext/http11/conftest.dSYM/Contents
<— ext/http11/conftest.dSYM
<— ext/http11
—> ext/http11_java
—> ext/http11_java/org
—> ext/http11_java/org/jruby
—> ext/http11_java/org/jruby/mongrel
<— ext/http11_java/org/jruby/mongrel
<— ext/http11_java/org/jruby
<— ext/http11_java/org
<— ext/http11_java
<— ext
—> bin
<— bin
—> lib
—> lib/mongrel
<— lib/mongrel
<— lib
—> ext
—> ext/http11
make
gcc -I. -I/usr/local/include/ruby-1.9.1/i386-darwin9.5.0
-I/usr/local/include/ruby-1.9.1/ruby/backward
-I/usr/local/include/ruby-1.9.1
-I/usr/local/src/mongrel-1.1.5/ext/http11 -D_XOPEN_SOURCE
-D_DARWIN_C_SOURCE -fno-common -D_XOPEN_SOURCE=1 -O2 -g -Wall
-Wno-parentheses -fno-common -pipe -fno-common -o http11.o -c http11.c
http11.c: In function ‘http_field’:
http11.c:77: error: ‘struct RString’ has no member named ‘ptr’
http11.c:77: error: ‘struct RString’ has no member named ‘len’
http11.c:77: warning: left-hand operand of comma expression has no
effect
http11.c:77: warning: statement with no effect
http11.c: In function ‘header_done’:
http11.c:172: error: ‘struct RString’ has no member named ‘ptr’
http11.c:174: error: ‘struct RString’ has no member named ‘ptr’
http11.c:176: error: ‘struct RString’ has no member named ‘ptr’
http11.c:177: error: ‘struct RString’ has no member named ‘len’
http11.c: In function ‘HttpParser_execute’:
http11.c:298: error: ‘struct RString’ has no member named ‘ptr’
http11.c:299: error: ‘struct RString’ has no member named ‘len’
make: *** [http11.o] Error 1
./setup.rb:655:in command': system("make") failed (RuntimeError) from ./setup.rb:664:inmake’
from ./setup.rb:1258:in setup_dir_ext' from ./setup.rb:1532:inblock in traverse’
from ./setup.rb:1549:in dive_into' from ./setup.rb:1530:intraverse’
from ./setup.rb:1534:in block (2 levels) in traverse' from ./setup.rb:1533:ineach’
from ./setup.rb:1533:in block in traverse' from ./setup.rb:1549:indive_into’
from ./setup.rb:1530:in traverse' from ./setup.rb:1524:inblock in exec_task_traverse’
from ./setup.rb:1519:in each' from ./setup.rb:1519:inexec_task_traverse’
from ./setup.rb:1246:in exec_setup' from ./setup.rb:996:inexec_setup’
from ./setup.rb:813:in invoke' from ./setup.rb:773:ininvoke’
from ./setup.rb:1578:in `’

I assume that’s the equivalent of using SVN trunk?

tarball

On Fri, Nov 21, 2008 at 11:02 PM, Joe C. [email protected]
wrote:

will successfully install and run afterwards? And how likely is it that
disabling fastthread will break other things?

When compiling ruby from source (either 1.8.6 or 1.9) both get
fastthread enabled by default, you need to explicitly disable it in
case that you don’t want it (which I will doubt).

So unless you depend on a package made by debian which they decided
not to enable that helpful flag, you will not need to worry.

Again, modern Ruby no need for fastthread (is built-in in ruby) so
mongrel will remove fastthread from the dependency and required if
present.

That sounds better explanation?


Luis L.
AREA 17

Human beings, who are almost unique in having the ability to learn from
the experience of others, are also remarkable for their apparent
disinclination to do so.
Douglas Adams

On Sat, Nov 22, 2008 at 9:08 PM, Roger P. [email protected]
wrote:

At what stage in the installation process of which component can I
specify this flag? Do I need to specify it when invoking configure
before compiling Ruby 1.9.1 from source? And does anyone know if Mongrel
will successfully install and run afterwards? And how likely is it that
disabling fastthread will break other things?

I believe it’s
gem install something – --disable-fastthread

No, is a ruby configure process, not gem installation.

Mongrel will no longer mark fastthread as dependency but try to
require it if is found.


Luis L.
AREA 17

Human beings, who are almost unique in having the ability to learn from
the experience of others, are also remarkable for their apparent
disinclination to do so.
Douglas Adams

Mongrel will no longer mark fastthread as dependency but try to
require it if is found.

Nice.
-=R

On Sat, Nov 22, 2008 at 9:41 PM, Roger P. [email protected]
wrote:

Hmm looks like that didn’t help.
I typically just install mongrel from the mongrel SVN into 1.9.
-=R

?

Sorry but I get lost if you cut the whole thread that you reply to.

fastthread dependency is not removed right now, is planned.


Luis L.
AREA 17

Human beings, who are almost unique in having the ability to learn from
the experience of others, are also remarkable for their apparent
disinclination to do so.
Douglas Adams