This update to rubinius 1.2.3 brings some bug fixes and performance improvements. Release notes are at http://rubini.us/releases/1.2.3/
They changed the build system slightly and broke it by default on OpenBSD, but I already committed the changes upstream. 1.2.3 also updates the bundled rubygems version to 1.5.2, so I ported the patches from lang/jruby to re-enable the .require_paths file creation so that you can still build gem ports without changing the PLISTs. Currently, ruby 1.8 and ruby 1.9 use rubygems 1.3.7, jruby uses rubygems 1.5.1, and rubinius 1.5.2. Updating ruby 1.8 to a later version of rubygems is easy (the devel/ruby-gems port), but updating the ruby 1.9 port is trickier because they bundle rubygems 1.3.7. We're safe for the time being, but I think the plan is to remove the .require_paths file handling entirely, and once jruby or rubinius goes to a rubygems version that does so, this will need to be dealt with. Tested on amd64 and i386. Looking for OKs. Jeremy Index: Makefile =================================================================== RCS file: /cvs/ports/lang/rubinius/Makefile,v retrieving revision 1.9 diff -u -p -r1.9 Makefile --- Makefile 10 Mar 2011 20:40:33 -0000 1.9 +++ Makefile 22 Mar 2011 16:54:11 -0000 @@ -4,8 +4,8 @@ SHARED_ONLY= Yes COMMENT = Ruby virtual machine and core library -V= 1.2.2 -DISTNAME = rubinius-${V}-20110222 +V= 1.2.3 +DISTNAME = rubinius-${V}-20110315 PKGNAME = rubinius-$V CATEGORIES = lang lang/ruby @@ -52,7 +52,7 @@ CONFIGURE_ENV += LDFLAGS="-L${LOCALBASE} MAKE_ENV += CC="${CC}" do-configure: - ${SUBST_CMD} ${WRKSRC}/rakelib/vm.rake + ${SUBST_CMD} ${WRKSRC}/rakelib/blueprint.rb cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${MAKE_ENV} ${RUBY} configure \ --prefix=${PREFIX}/lib/rubinius --skip-prebuilt --rake=${RAKE} Index: distinfo =================================================================== RCS file: /cvs/ports/lang/rubinius/distinfo,v retrieving revision 1.3 diff -u -p -r1.3 distinfo --- distinfo 10 Mar 2011 20:40:33 -0000 1.3 +++ distinfo 21 Mar 2011 17:35:16 -0000 @@ -1,5 +1,5 @@ -MD5 (rubinius-1.2.2-20110222.tar.gz) = WRJDePt+4EDp7k5HNtifwA== -RMD160 (rubinius-1.2.2-20110222.tar.gz) = 8wW1P15i/9z2/tPHnx5vJQhy7wE= -SHA1 (rubinius-1.2.2-20110222.tar.gz) = Vakxszd9XXBCas21B60Uiarp1cw= -SHA256 (rubinius-1.2.2-20110222.tar.gz) = kcHKO9wTJSV3fu8PbELKBuYiYGVXCt4SfqUo/rISk0c= -SIZE (rubinius-1.2.2-20110222.tar.gz) = 9011164 +MD5 (rubinius-1.2.3-20110315.tar.gz) = l4LasYwt1ECva3bo61vA8A== +RMD160 (rubinius-1.2.3-20110315.tar.gz) = 6098MEz6NZLcj3UJajjWfA51MLU= +SHA1 (rubinius-1.2.3-20110315.tar.gz) = cybif0WeKZ3QwpBd6bVANMxwzL4= +SHA256 (rubinius-1.2.3-20110315.tar.gz) = UZAB7ZoRFNCZYPGf8q3TG+A7e1+lIYkuTHttHJDYDes= +SIZE (rubinius-1.2.3-20110315.tar.gz) = 9485259 Index: patches/patch-kernel_common_hash_rb =================================================================== RCS file: patches/patch-kernel_common_hash_rb diff -N patches/patch-kernel_common_hash_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-kernel_common_hash_rb 21 Mar 2011 23:24:30 -0000 @@ -0,0 +1,29 @@ +$OpenBSD$ + +Backport Hash#entries fix from upstream git (8953e3d0a). + +--- kernel/common/hash.rb.orig Tue Mar 15 10:48:59 2011 ++++ kernel/common/hash.rb Mon Mar 21 16:23:02 2011 +@@ -62,7 +62,12 @@ class Hash + + attr_reader :size + +- attr_reader :entries ++ # #entries is a method provided by Enumerable which calls #to_a, ++ # so we have to not collide with that. ++ def __entries__ ++ @entries ++ end ++ + attr_reader :capacity + attr_reader :max_entries + +@@ -600,7 +605,7 @@ class Hash + # Normally this would be a call to __setup__, + # but that will create a new unused Tuple + # that we would wind up replacing anyways. +- @entries = other.entries.dup ++ @entries = other.__entries__.dup + @capacity = other.capacity + @mask = @capacity - 1 + @max_entries = other.max_entries Index: patches/patch-lib_ruby_site_ruby_1_8_rubygems_installer_rb =================================================================== RCS file: patches/patch-lib_ruby_site_ruby_1_8_rubygems_installer_rb diff -N patches/patch-lib_ruby_site_ruby_1_8_rubygems_installer_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-lib_ruby_site_ruby_1_8_rubygems_installer_rb 22 Mar 2011 16:52:51 -0000 @@ -0,0 +1,25 @@ +$OpenBSD: patch-lib_ruby_site_ruby_1_8_rubygems_installer_rb,v 1.1 2011/03/18 23:01:22 jeremy Exp $ + +Create .require_paths file for compatibility with PLISTs for +ruby 1.8 and ruby 1.9. + +--- lib/rubygems/installer.rb.orig Tue Feb 8 09:30:23 2011 ++++ lib/rubygems/installer.rb Tue Feb 8 15:12:26 2011 +@@ -39,7 +39,7 @@ class Gem::Installer + + include Gem::UserInteraction + +- include Gem::RequirePathsBuilder if Gem::QUICKLOADER_SUCKAGE ++ include Gem::RequirePathsBuilder + + ## + # The directory a gem's executables will be installed into +@@ -171,7 +171,7 @@ class Gem::Installer + generate_bin + write_spec + +- write_require_paths_file_if_needed if Gem::QUICKLOADER_SUCKAGE ++ write_require_paths_file_if_needed + + # HACK remove? Isn't this done in multiple places? + cached_gem = File.join @gem_home, "cache", @gem.split(/\//).pop Index: patches/patch-lib_ruby_site_ruby_1_8_rubygems_require_paths_builder_rb =================================================================== RCS file: patches/patch-lib_ruby_site_ruby_1_8_rubygems_require_paths_builder_rb diff -N patches/patch-lib_ruby_site_ruby_1_8_rubygems_require_paths_builder_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-lib_ruby_site_ruby_1_8_rubygems_require_paths_builder_rb 22 Mar 2011 16:53:02 -0000 @@ -0,0 +1,14 @@ +$OpenBSD: patch-lib_ruby_site_ruby_1_8_rubygems_require_paths_builder_rb,v 1.1 2011/03/18 23:01:22 jeremy Exp $ + +Create .require_paths file for compatibility with PLISTs for +ruby 1.8 and ruby 1.9. + +--- lib/rubygems/require_paths_builder.rb.orig Tue Feb 8 15:12:05 2011 ++++ lib/rubygems/require_paths_builder.rb Tue Feb 8 15:12:43 2011 +@@ -14,5 +14,5 @@ module Gem::RequirePathsBuilder + file.puts spec.bindir if spec.bindir + end + end +-end if Gem::QUICKLOADER_SUCKAGE ++end + Index: patches/patch-rakelib_blueprint_rb =================================================================== RCS file: patches/patch-rakelib_blueprint_rb diff -N patches/patch-rakelib_blueprint_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-rakelib_blueprint_rb 21 Mar 2011 23:09:30 -0000 @@ -0,0 +1,30 @@ +$OpenBSD$ + +Backport OpenBSD build fix I added to upstream git (59e0f1d). + +Use in-tree libffi instead of building bundled version. + +--- rakelib/blueprint.rb.orig Tue Mar 15 10:48:59 2011 ++++ rakelib/blueprint.rb Mon Mar 21 13:59:40 2011 +@@ -44,7 +44,8 @@ Daedalus.blueprint do |i| + when /linux/i + gcc.ldflags << '-Wl,--export-dynamic' << "-lrt" << "-lcrypt" + when /openbsd/i +- gcc.ldflags << '-lcrypto' << '-pthread' << '-lssl' << "-ldl" << "-rdynamic" ++ gcc.ldflags << '-lcrypto' << '-pthread' << '-lssl' << "-rdynamic" << "-Wl,--export-dynamic" ++ make = "gmake" + when /haiku/i + gcc.ldflags << "-ldl" << "-lnetwork" + when /bsd/i +@@ -139,10 +140,9 @@ Daedalus.blueprint do |i| + + ffi = i.external_lib "vm/external_libs/libffi" do |l| + l.cflags = ["-Ivm/external_libs/libffi/include"] +- l.objects = [l.file(".libs/libffi.a")] ++ l.objects = ["${LOCALBASE}/lib/libffi.a"] + l.to_build do |x| + x.command "./configure" unless File.exists?("Makefile") +- x.command make + end + end + Index: patches/patch-rakelib_vm_rake =================================================================== RCS file: patches/patch-rakelib_vm_rake diff -N patches/patch-rakelib_vm_rake --- patches/patch-rakelib_vm_rake 10 Mar 2011 20:40:33 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,62 +0,0 @@ -$OpenBSD: patch-rakelib_vm_rake,v 1.2 2011/03/10 20:40:33 jeremy Exp $ - -Use intree versions of libffi, instead of bundled versions. - ---- rakelib/vm.rake.orig Tue Feb 15 14:46:13 2011 -+++ rakelib/vm.rake Thu Feb 17 10:14:23 2011 -@@ -53,7 +53,7 @@ dep_file = "vm/.depends.mf" - vm_objs = %w[ vm/drivers/cli.o ] - vm_srcs = %w[ vm/drivers/cli.cpp ] - --EX_INC = %w[ libtommath libgdtoa onig libffi/include -+EX_INC = %w[ libtommath libgdtoa onig - ].map { |f| "vm/external_libs/#{f}" } - - INSN_GEN = %w[ vm/gen/instruction_names.cpp -@@ -141,11 +141,11 @@ file "vm/external_libs/libgdtoa/libgdtoa.a" => libgdto - EXTERNALS = %W[ vm/external_libs/libtommath/libtommath.a - vm/external_libs/libgdtoa/libgdtoa.a - vm/external_libs/onig/.libs/libonig.a -- vm/external_libs/libffi/.libs/libffi.a ] -+ ${LOCALBASE}/lib/libffi.a ] - - INCLUDES = EX_INC + %w[vm/test/cxxtest vm .] - --extra = %w!/usr/local/include /opt/local/include! -+extra = %w!${LOCALBASE}/include ${LOCALBASE}/include! - - extra.each do |dir| - INCLUDES << dir if File.directory?(dir) -@@ -470,6 +470,7 @@ objs.zip(srcs).each do |obj, src| - end - - files EXTERNALS do |t| -+ next if t =~ /libffi/ - path = File.join(*split_all(t.name)[0..2]) - configure_path = File.join(path, 'configure') - -@@ -648,6 +649,7 @@ namespace :vm do - desc "Clean up, including all external libs" - task :distclean => :clean do - EXTERNALS.each do |lib| -+ next if lib =~ /libffi/ - path = File.join(*(lib.split(File::SEPARATOR)[0..-2].reject{|i| i =~ /^\./})) - system "cd #{path}; #{make} clean || true" - end -@@ -700,12 +702,12 @@ def ex_libs # needs to be method to delay running of l - unless defined? $ex_libs then - $ex_libs = EXTERNALS.reverse - -- if File.directory?("/usr/local/lib") -- $ex_libs << "-L/usr/local/lib" -+ if File.directory?("${LOCALBASE}/lib") -+ $ex_libs << "-L${LOCALBASE}/lib" - end - -- if File.directory?("/opt/local/lib") -- $ex_libs << "-L/opt/local/lib" -+ if File.directory?("${LOCALBASE}/lib") -+ $ex_libs << "-L${LOCALBASE}/lib" - end - - $ex_libs << "-ldl" unless RUBY_PLATFORM =~ /bsd|haiku/ Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/lang/rubinius/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 10 Mar 2011 20:40:33 -0000 1.3 +++ pkg/PLIST 21 Mar 2011 21:58:02 -0000 @@ -1129,6 +1129,19 @@ lib/rubinius/lib/rubinius/documentation/ lib/rubinius/lib/rubinius/documentation/2011/02/17/ lib/rubinius/lib/rubinius/documentation/2011/02/17/rubinius-what-s-next/ lib/rubinius/lib/rubinius/documentation/2011/02/17/rubinius-what-s-next/index.html +lib/rubinius/lib/rubinius/documentation/2011/02/22/ +lib/rubinius/lib/rubinius/documentation/2011/02/22/rubinius-multiple-branches-with-rvm/ +lib/rubinius/lib/rubinius/documentation/2011/02/22/rubinius-multiple-branches-with-rvm/index.html +lib/rubinius/lib/rubinius/documentation/2011/02/23/ +lib/rubinius/lib/rubinius/documentation/2011/02/23/introduction-to-fancy/ +lib/rubinius/lib/rubinius/documentation/2011/02/23/introduction-to-fancy/index.html +lib/rubinius/lib/rubinius/documentation/2011/02/25/ +lib/rubinius/lib/rubinius/documentation/2011/02/25/why-use-rubinius/ +lib/rubinius/lib/rubinius/documentation/2011/02/25/why-use-rubinius/index.html +lib/rubinius/lib/rubinius/documentation/2011/03/ +lib/rubinius/lib/rubinius/documentation/2011/03/11/ +lib/rubinius/lib/rubinius/documentation/2011/03/11/making-rubinius-rbc-files-disappear/ +lib/rubinius/lib/rubinius/documentation/2011/03/11/making-rubinius-rbc-files-disappear/index.html lib/rubinius/lib/rubinius/documentation/404.html lib/rubinius/lib/rubinius/documentation/422.html lib/rubinius/lib/rubinius/documentation/500.html @@ -1333,6 +1346,8 @@ lib/rubinius/lib/rubinius/documentation/ lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-a-ruby-spec/index.html lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-a-ticket/ lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-a-ticket/index.html +lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-benchmarks/ +lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-benchmarks/index.html lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-documentation/ lib/rubinius/lib/rubinius/documentation/doc/en/how-to/write-documentation/index.html lib/rubinius/lib/rubinius/documentation/doc/en/index-of-terms/ @@ -1905,6 +1920,8 @@ lib/rubinius/lib/rubinius/documentation/ lib/rubinius/lib/rubinius/documentation/releases/1.2.0/index.html lib/rubinius/lib/rubinius/documentation/releases/1.2.1/ lib/rubinius/lib/rubinius/documentation/releases/1.2.1/index.html +lib/rubinius/lib/rubinius/documentation/releases/1.2.2/ +lib/rubinius/lib/rubinius/documentation/releases/1.2.2/index.html lib/rubinius/lib/rubinius/documentation/releases/${V}/ lib/rubinius/lib/rubinius/documentation/releases/${V}/index.html lib/rubinius/lib/rubinius/documentation/releases/index.html @@ -2055,8 +2072,12 @@ lib/rubinius/lib/rubygems/install_update lib/rubinius/lib/rubygems/install_update_options.rbc lib/rubinius/lib/rubygems/installer.rb lib/rubinius/lib/rubygems/installer.rbc +lib/rubinius/lib/rubygems/installer_test_case.rb +lib/rubinius/lib/rubygems/installer_test_case.rbc lib/rubinius/lib/rubygems/local_remote_options.rb lib/rubinius/lib/rubygems/local_remote_options.rbc +lib/rubinius/lib/rubygems/mock_gem_ui.rb +lib/rubinius/lib/rubygems/mock_gem_ui.rbc lib/rubinius/lib/rubygems/old_format.rb lib/rubinius/lib/rubygems/old_format.rbc lib/rubinius/lib/rubygems/package/ @@ -2075,6 +2096,8 @@ lib/rubinius/lib/rubygems/package/tar_re lib/rubinius/lib/rubygems/package/tar_reader.rbc lib/rubinius/lib/rubygems/package/tar_reader/entry.rb lib/rubinius/lib/rubygems/package/tar_reader/entry.rbc +lib/rubinius/lib/rubygems/package/tar_test_case.rb +lib/rubinius/lib/rubygems/package/tar_test_case.rbc lib/rubinius/lib/rubygems/package/tar_writer.rb lib/rubinius/lib/rubygems/package/tar_writer.rbc lib/rubinius/lib/rubygems/package_task.rb @@ -2106,6 +2129,8 @@ lib/rubinius/lib/rubygems/spec_fetcher.r lib/rubinius/lib/rubygems/spec_fetcher.rbc lib/rubinius/lib/rubygems/specification.rb lib/rubinius/lib/rubygems/specification.rbc +lib/rubinius/lib/rubygems/test_case.rb +lib/rubinius/lib/rubygems/test_case.rbc lib/rubinius/lib/rubygems/test_utilities.rb lib/rubinius/lib/rubygems/test_utilities.rbc lib/rubinius/lib/rubygems/text.rb @@ -2509,6 +2534,7 @@ lib/rubinius/runtime/common/undefined.rb lib/rubinius/runtime/common/variable_scope.rbc lib/rubinius/runtime/common/vm.rbc lib/rubinius/runtime/delta/ +lib/rubinius/runtime/delta/agent.rbc lib/rubinius/runtime/delta/class.rbc lib/rubinius/runtime/delta/codeloader.rbc lib/rubinius/runtime/delta/ctype.rbc