[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Compiling native extension into Ruby

David Craine

1/11/2005 6:18:00 PM

I'm trying to compile the BerkeleyDB ruby extension into the ruby
executable for ruby 1.8.2. I've placed the extension directory
underneath the <ruby>/ext directory. When I do configure and make the
build process tries to build the BerkleyDB extension but it fails
because it can't find the Berkeley libraries. Normally when building
this extension you have to specifiy the --with-db-dir=<db dir>
parameter when running the extconf.rb file. But I cannot figure out
how to pass this same information into the configure/make process for
ruby. Anyone have any ideas regarding this?

Dave Craine
4 Answers

ts

1/11/2005 6:23:00 PM

0

>>>>> "D" == David Craine <dave@infoether.com> writes:

D> ruby. Anyone have any ideas regarding this?

you don't need to put it into ruby-1.8.2/ext

* Install normally ruby

* extract bdb-0.5.4 *outside* the ruby directory

* then run

ruby extconf.rb --with-db-dir=...
make
make install


Guy Decoux



David Craine

1/11/2005 6:35:00 PM

0

RIght...I've got that part. But what I'm trying to do is compile and
statically link the extension into the ruby executable itself. I've
created an entry in the <ruby>/ext/Setup file for bdb so that it will
try and build it when Ruby builds. When I try to make ruby it will
actually try and compile the bdb extension, but without passing in the
--with-db-dir parameter. I need to know how to pass this parameter
through to the extconf.rb file for the bdb extension when running the
make file for ruby.

Dave

On Jan 11, 2005, at 1:22 PM, ts wrote:

>>>>>> "D" == David Craine <dave@infoether.com> writes:
>
> D> ruby. Anyone have any ideas regarding this?
>
> you don't need to put it into ruby-1.8.2/ext
>
> * Install normally ruby
>
> * extract bdb-0.5.4 *outside* the ruby directory
>
> * then run
>
> ruby extconf.rb --with-db-dir=...
> make
> make install
>
>
> Guy Decoux
>
>
>

YANAGAWA Kazuhisa

1/11/2005 11:01:00 PM

0

In Message-Id: <72066A76-63FF-11D9-AF42-000393CC7770@infoether.com>
David Craine <dave@infoether.com> writes:

> actually try and compile the bdb extension, but without passing in the
> --with-db-dir parameter. I need to know how to pass this parameter
> through to the extconf.rb file for the bdb extension when running the
> make file for ruby.

Then give the option to configure. Ruby's configure passes unknown
options to extmk.rb, which then use that options to make extension
libraries.


--
kjana@dm4lab.to January 12, 2005
It is never late to mend.



ts

1/12/2005 11:42:00 AM

0

>>>>> "D" == David Craine <dave@infoether.com> writes:

D> RIght...I've got that part. But what I'm trying to do is compile and
D> statically link the extension into the ruby executable itself. I've
D> created an entry in the <ruby>/ext/Setup file for bdb so that it will
D> try and build it when Ruby builds. When I try to make ruby it will
D> actually try and compile the bdb extension, but without passing in the
D> --with-db-dir parameter. I need to know how to pass this parameter
D> through to the extconf.rb file for the bdb extension when running the
D> make file for ruby.

There is a bug in extconf.rb for bdb, not really a surprise for me :-)

Try it with

uln% cd ext
uln%

uln% tar zxf ~/ruby/perso/db/bdb-0.5.4.tar.gz
uln%

uln% rm -r bdb-0.5.4/extconf.rb bdb-0.5.4/bdbxml*
uln%

uln% cd ..
uln%

uln% tail -1 ext/Setup
bdb-0.5.4/src
uln%

uln% ./configure --prefix=$HOME/local/r182 --with-db-dir=$HOME/local/db4.3.21 > /dev/null
uln%

uln% make

[...]

compiling bdb-0.5.4/src
make[1]: Entering directory `/opt/ts/ruby/tmp/ruby-1.8.2/ext/bdb-0.5.4/src'
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c bdb.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c env.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c log.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c transaction.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c cursor.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c common.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c lock.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c delegator.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c sequence.c
gcc -g -O2 -I. -I../../.. -I../../../. -I../../.././ext/bdb-0.5.4/src -I/opt/ts/local/db4.3.21/include -c recnum.c
ar cru bdb.a bdb.o env.o log.o transaction.o cursor.o common.o lock.o delegator.o sequence.o recnum.o
make[1]: Leaving directory `/opt/ts/ruby/tmp/ruby-1.8.2/ext/bdb-0.5.4/src'

[...]

make[1]: Entering directory `/opt/ts/ruby/tmp/ruby-1.8.2'
gcc -g -O2 -I. -I. -o ext/extinit.o -c ext/extinit.c
gcc -g -O2 -rdynamic -Wl,-export-dynamic -L. -L'/opt/ts/local/db4.3.21/lib' -Wl,-R'/opt/ts/local/db4.3.21/lib' main.o ext/extinit.o ext/bdb-0.5.4/src/bdb.a -lruby-static -ldl -lcrypt -lm -ldb-4.3 -o ruby
make[1]: Leaving directory `/opt/ts/ruby/tmp/ruby-1.8.2'
uln%

uln% ./ruby -e 'p BDB::VERSION'
"Sleepycat Software: Berkeley DB 4.3.21: (November 8, 2004)"
uln%



Guy Decoux