Compiling native extension into Ruby

Discussion in 'Ruby' started by David Craine, Jan 11, 2005.

  1. David Craine

    David Craine Guest

    --Apple-Mail-1-458716087
    Content-Transfer-Encoding: 7bit
    Content-Type: text/plain;
    charset=US-ASCII;
    format=flowed

    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
    --Apple-Mail-1-458716087--
     
    David Craine, Jan 11, 2005
    #1
    1. Advertising

  2. David Craine

    ts Guest

    >>>>> "D" == David Craine <> 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
     
    ts, Jan 11, 2005
    #2
    1. Advertising

  3. David Craine

    David Craine Guest

    --Apple-Mail-2-459741324
    Content-Transfer-Encoding: 7bit
    Content-Type: text/plain;
    charset=US-ASCII;
    format=flowed

    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 <> 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
    >
    >
    >


    --Apple-Mail-2-459741324--
     
    David Craine, Jan 11, 2005
    #3
  4. In Message-Id: <>
    David Craine <> 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.


    --
    January 12, 2005
    It is never late to mend.
     
    YANAGAWA Kazuhisa, Jan 11, 2005
    #4
  5. David Craine

    ts Guest

    >>>>> "D" == David Craine <> 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
     
    ts, Jan 12, 2005
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Sarah Tanembaum

    ruby-mysql native extension for mswin32

    Sarah Tanembaum, Dec 19, 2004, in forum: Ruby
    Replies:
    1
    Views:
    128
    Justin Rudd
    Dec 19, 2004
  2. Lon Baker
    Replies:
    1
    Views:
    227
    Csaba Henk
    Mar 21, 2005
  3. Axel
    Replies:
    3
    Views:
    119
    Curt Hibbs
    Sep 1, 2005
  4. Yvon Thoraval

    writing native ObjC extension to ruby ??

    Yvon Thoraval, Aug 7, 2006, in forum: Ruby
    Replies:
    10
    Views:
    218
    Robert Klemme
    Aug 8, 2006
  5. aj
    Replies:
    7
    Views:
    264
    Caleb Clausen
    May 1, 2010
Loading...

Share This Page