Rake-compiler 0.7.0 Released

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
      end

      Please 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
  • Known issues