rake-compiler version 0.7.0 has been released!
= rake-compiler
rake-compiler aims to help Gem developers deal with Ruby extensions,
simplifying
code and reducing duplication.
It followss convention over configuration and sets a standardized
structure to
build and package both C and Java extensions in your gems.
This is the result of experiences dealing with several Gems that
required native
extensions across platforms and different user configurations where
details like
portability and clarity of code were lacking.
== An Overview
Let’s summarize what rake-compiler provides:
-
No custom rake tasks required. Less code duplication and errors.
-
Painlessly build extensions on different platforms (Linux, OSX and
Windows). -
Painlessly build extensions for different Ruby implementations (JRuby,
Rubinius and MRI). -
Allow multiple extensions be compiled inside the same gem.
-
Mimics RubyGems installation process, so helps as a test environment.
-
Simplify cross platform compilation of extensions (target Windows from
Linux).
Changes:
=== 0.7.0 / 2009-12-08
-
Enhancements
-
Allow generation of JRuby extensions. Thanks to Alex Coles (myabc)
for the
contribution.
This will allow, with proper JDK tools, cross compilation of JRuby
gems
from MRI.Rake::JavaExtensionTask.new(‘my_java_extension’, GEM_SPEC) do
|ext|
# most of ExtensionTask options can be used
# plus, java_compiling:
ext.java_compiling do |gem_spec|
gem_spec.post_install_message = “This is a native JRuby gem!”
end
endPlease note that cross-compiling JRuby gems requires either
JRUBY_HOME or
JRUBY_PARENT_CLASSPATH environment variables being properly set. -
Allow alteration of the Gem Specification when cross compiling.
Closes GH-3
This is useful to indicate a custom requirement message, like DLLs
installation or similar.Rake::ExtensionTask.new(‘my_extension’, GEM_SPEC) do |ext|
ext.cross_compile = true
# …
ext.cross_compiling do |gem_spec|
gem_spec.post_install_message = “You’ve installed a binary
version of this gem”
end
end
-
-
Bugfixes
- Detect GNU make independently of distribution based naming.
Thanks to flori for patches. - Usage of #dup to duplicate gemspec instead of YAML dumping.
- No longer support Ruby older than 1.8.6
- No longer support RubyGems older than 1.3.5
- Force definition of binary directory and executables. Closes GH-11
- Workaround path with spaces issues using relative paths. Closes GH-6
- Removed gemspec, GitHub gems no more
- Detect GNU make independently of distribution based naming.
-
Known issues
-
Usage of rake-compiler under projects with Jeweler requires some
tweaks
Please read issue GH-73 for Jeweler:
http://github.com/technicalpickles/jeweler/issues#issue/73For a workaround, look here:
Workaround issue with Jeweler and rake-compiler · GitHub
-