Hi,
I'm developing a library that includes a C extension, so during development I need to keep re-compiling the extension before testing.
I'm using Hoe for packaging, so I've added the following task to my Rakefile.rb which allows me to rebuild the extension using extconf.rb/make. My library has a further dependency on an external C library (libR), at the moment this is semi-hardcoded into the script by referencing the environment variable R_HOME:
desc "Uses extconf.rb and make to build the extension"
task :build_extension do
Dir.chdir('ext')
system("ruby extconf.rb --with-R-dir=$R_HOME")
system("make")
Dir.chdir('..')
end
Two questions (I'm pretty new with Rake/Hoe so forgive me if these are obvious):
1. The 'build_extension' task works fine, but seems a little hacky, how do other people build extensions with Rake/Hoe?
2. Can I retrospectively add this task as a dependency of the 'test' task, so that when I run my tests I can ensure the library is freshly built?
Alex Gutteridge
Bioinformatics Center
Kyoto University
I'm developing a library that includes a C extension, so during development I need to keep re-compiling the extension before testing.
I'm using Hoe for packaging, so I've added the following task to my Rakefile.rb which allows me to rebuild the extension using extconf.rb/make. My library has a further dependency on an external C library (libR), at the moment this is semi-hardcoded into the script by referencing the environment variable R_HOME:
desc "Uses extconf.rb and make to build the extension"
task :build_extension do
Dir.chdir('ext')
system("ruby extconf.rb --with-R-dir=$R_HOME")
system("make")
Dir.chdir('..')
end
Two questions (I'm pretty new with Rake/Hoe so forgive me if these are obvious):
1. The 'build_extension' task works fine, but seems a little hacky, how do other people build extensions with Rake/Hoe?
RubyGems looks for both an extconf.rb and an 'extension' rake task.
2. Can I retrospectively add this task as a dependency of the 'test' task, so that when I run my tests I can ensure the library is freshly built?
I'm not sure how to do this with rake, but we'd accept a patch to Hoe.
···
On Jan 15, 2007, at 17:53, Alex Gutteridge wrote:
--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
I LIT YOUR GEM ON FIRE!
Alex Gutteridge wrote:
2. Can I retrospectively add this task as a dependency of the 'test' task, so that when I run my tests I can ensure the library is freshly built?
Yes. I forget exactly, but it's something easy like Rake::Task['test'].prerequisites << 'build_extension'.
Devin