Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > building an extension gem and including a library source

Reply
Thread Tools

building an extension gem and including a library source

 
 
Emmanuel Oga
Guest
Posts: n/a
 
      09-07-2007
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/.

 
Reply With Quote
 
 
 
 
Tom M
Guest
Posts: n/a
 
      09-07-2007
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


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
gemspec: How to install a Ruby extension into GEM/lib/SOME_DIR/rather than GEM/lib/ IƱaki Baz Castillo Ruby 1 02-28-2011 03:26 PM
RubyGems 0.9.1 calling a gem with gem '<gem>' Austin 7873 Ruby 5 01-27-2007 10:05 PM
Problems building gem with c-extension Stefan Achatz Ruby 0 05-30-2005 05:17 PM
C Library/Source code for building up a VoIP connection ? Martin Maurer UK VOIP 2 05-14-2005 02:08 PM
sqlite-ruby gem not building extension Jim Freeze Ruby 6 05-13-2005 11:18 AM



Advertisments