building an extension gem and including a library source

Discussion in 'Ruby' started by Emmanuel Oga, Sep 7, 2007.

  1. Emmanuel Oga

    Emmanuel Oga Guest

    I'm building an extension gem for http://libharu.sourceforge.net/ My
    intent is to help the spread of the library by uploading it to rubyforge
    (it is already uploaded and working for the windows version, check: gem
    install hpdf on win)

    In LINUX, this library and the ruby extension is very easy to setup in
    the traditional way. Just untar and run:

    /configure --cflags=-fPIC
    make

    This makes libharu.so, wich will be needed by the ruby extension. Then

    ruby extconf.rb
    make
    cp hpdf.so /var/lib/gems/hpdf/lib # << Path must be correct on your
    system

    That's all. The problem comes when i try to package the gem with
    rubygems. I have no problems with the gem specification, but for the
    extconf.rb i made a horrible hack that, tough works, is very, very ugly,
    and dependes on "sh" and "sudo" to work properly, wich i don't know if
    will always be available:

    --------------------------------------------------------------------------
    # First build the library. Horrible hack!
    source_dir= File.join(File.dirname(__FILE__), './libharu')
    system("cd #{source_dir}; sudo sh ./configure --cflags=-fPIC; make")

    # From now on is ok
    require 'mkmf'
    $CPPFLAGS = $CPPFLAGS + " -I./libharu/include"
    $LDFLAGS = $LDFLAGS + " -L./libharu"
    $LIBS = $LIBS + " -lhpdf -lpng -lz"
    create_makefile 'hpdf'
    --------------------------------------------------------------------------

    How can i change the gem spec or the extconf.rb file to avoid the use of
    sh and sudo? I tought of moving all the .c and .h files to the same dir,
    but i don't know if i will need special flags to compile the whole thing
    !
    --
    Posted via http://www.ruby-forum.com/.
    Emmanuel Oga, Sep 7, 2007
    #1
    1. Advertising

  2. Emmanuel Oga

    Tom M Guest

    Are you using the Gem::Specifications#extesions method? in your
    gemspec? This builds the extension when you install the gem
    automatically. You just say

    spec.extensions = ["ext/[whatever]/extconf.rb"]

    in your gemspec
    Tom M, Sep 7, 2007
    #2
    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. Jim Freeze
    Replies:
    6
    Views:
    154
    Chad Fowler
    May 13, 2005
  2. Stefan Achatz

    Problems building gem with c-extension

    Stefan Achatz, May 30, 2005, in forum: Ruby
    Replies:
    0
    Views:
    93
    Stefan Achatz
    May 30, 2005
  3. Austin 7873
    Replies:
    5
    Views:
    173
    Eric Hodel
    Jan 27, 2007
  4. Iñaki Baz Castillo
    Replies:
    1
    Views:
    144
    Iñaki Baz Castillo
    Feb 28, 2011
  5. Simon Hardy-Francis
    Replies:
    2
    Views:
    50
    Rustom Mody
    Mar 23, 2014
Loading...

Share This Page