Here's a new version of the port, after feedback from lan...@. The RUBY and RAKE variables are now used, REGRESS_DEPENDS has been fixed, and the port now installs to /usr/local/lib/rubinius. I've also copied a patch from lang/ruby/1.8 that makes the same change to FileUtils#mkdir_p so that you don't get systrace warnings when building ports. Additionally, I've precreated the gem directories and site_ruby directory, so that the existing PLISTs for gem ports will work.
I've also made the changes to ruby.port.mk so you can build rbx
versions of the gem and extconf ports, which I've tested
successfully on about 10 different ports. The ruby.port.mk
changes are inlined below.
Tested on i386. Looking for OKs.
Jeremy
Index: ruby.port.mk
===================================================================
RCS file: /cvs/ports/lang/ruby/ruby.port.mk,v
retrieving revision 1.37
diff -N -u -p ruby.port.mk
--- ruby.port.mk 17 Nov 2010 08:05:18 -0000 1.37
+++ ruby.port.mk 18 Nov 2010 23:42:20 -0000
@@ -13,7 +13,7 @@ CATEGORIES+= lang/ruby
.if !defined(MODRUBY_REV)
. if ${CONFIGURE_STYLE:L:Mgem} || ${CONFIGURE_STYLE:L:Mextconf}
. if !defined(FLAVORS)
-FLAVORS?= ruby18 ruby19
+FLAVORS?= ruby18 ruby19 rbx
. if !${CONFIGURE_STYLE:L:Mext} && !${CONFIGURE_STYLE:L:Mextconf}
FLAVORS+= jruby
. endif
@@ -43,21 +43,26 @@ MODRUBY_REV= 1.8
# Check for conflicting FLAVORs and set MODRUBY_REV appropriately based
# on the FLAVOR.
. elif ${FLAVOR:L:Mruby18}
-. if ${FLAVOR:L:Mruby19} || ${FLAVOR:L:Mjruby}
+. if ${FLAVOR:L:Mruby19} || ${FLAVOR:L:Mjruby} || ${FLAVOR:L:Mrbx}
ERRORS+= "Fatal: Conflicting flavors used: ${FLAVOR}"
. endif
FLAVOR= ${FLAVOR:L:Nruby18}
MODRUBY_REV= 1.8
. elif ${FLAVOR:L:Mruby19}
-. if ${FLAVOR:L:Mruby18} || ${FLAVOR:L:Mjruby}
+. if ${FLAVOR:L:Mruby18} || ${FLAVOR:L:Mjruby} || ${FLAVOR:L:Mrbx}
ERRORS+= "Fatal: Conflicting flavors used: ${FLAVOR}"
. endif
MODRUBY_REV= 1.9
. elif ${FLAVOR:L:Mjruby}
-. if ${FLAVOR:L:Mruby18} || ${FLAVOR:L:Mruby19}
+. if ${FLAVOR:L:Mruby18} || ${FLAVOR:L:Mruby19} || ${FLAVOR:L:Mrbx}
ERRORS+= "Fatal: Conflicting flavors used: ${FLAVOR}"
. endif
MODRUBY_REV= jruby
+. elif ${FLAVOR:L:Mrbx}
+. if ${FLAVOR:L:Mruby18} || ${FLAVOR:L:Mruby19} || ${FLAVOR:L:Mjruby}
+ERRORS+= "Fatal: Conflicting flavors used: ${FLAVOR}"
+. endif
+MODRUBY_REV= rbx
. endif
. endif
.endif
@@ -82,6 +87,14 @@ MODRUBY_PKGSPEC= ruby->=1.9,<=1.10
MODRUBY_PKG_PREFIX= ruby19
MODRUBY_FLAVOR = ruby19
GEM_BIN_SUFFIX= 19
+.elif ${MODRUBY_REV} == rbx
+MODRUBY_LIBREV = 1.8
+#.poison MODRUBY_BINREV
+#.poison MODRUBY_PKGSPEC
+#.poison MODRUBY_WANTLIB
+MODRUBY_PKG_PREFIX = rbx
+MODRUBY_FLAVOR = rbx
+MODRUBY_RBX_VERSION = 1.1
.elif ${MODRUBY_REV} == jruby
MODRUBY_LIBREV= 1.8
@@ -110,6 +123,11 @@ RSPEC= ${RUBY} -S spec
# Without this, JRuby often fails with a memory error.
MAKE_ENV+= JAVA_MEM='-Xms256m -Xmx256m'
+.elif ${MODRUBY_REV} == rbx
+RUBY= ${LOCALBASE}/bin/rbx
+RAKE= ${RUBY} -S rake
+RSPEC= ${RUBY} -S spec
+MODRUBY_RSPEC_DEPENDS = devel/ruby-rspec,${MODRUBY_FLAVOR}
.else
RUBY= ${LOCALBASE}/bin/ruby${MODRUBY_BINREV}
RAKE= ${LOCALBASE}/bin/rake${MODRUBY_BINREV}
@@ -126,6 +144,8 @@ MODRUBY_REGRESS?=
.if ${MODRUBY_REV} == jruby
MODRUBY_RUN_DEPENDS= lang/jruby
+.elif ${MODRUBY_REV} == rbx
+MODRUBY_RUN_DEPENDS= lang/rubinius
.else
MODRUBY_WANTLIB= ruby${MODRUBY_BINREV}
MODRUBY_RUN_DEPENDS= ${MODRUBY_PKGSPEC}:lang/ruby/${MODRUBY_REV}
@@ -143,6 +163,8 @@ MODRUBY_ICONV_DEPENDS= ${MODRUBY_RUN_DEPENDS}
# location of ruby libraries
.if ${MODRUBY_REV} == jruby
MODRUBY_LIBDIR= ${LOCALBASE}/jruby/lib/ruby
+.elif ${MODRUBY_REV} == rbx
+MODRUBY_LIBDIR= ${LOCALBASE}/lib/rubinius/${MODRUBY_RBX_VERSION}
.else
MODRUBY_LIBDIR= ${LOCALBASE}/lib/ruby
.endif
@@ -252,14 +274,20 @@ GEM= ${RUBY} -S gem
# empty for ruby 1.8 and ruby 1.9, which install into /usr/local.
GEM_REL= jruby/
GEM_BASE_LIB= ${GEM_BASE}/jruby/${MODRUBY_LIBREV}
+. elif ${MODRUBY_REV} == rbx
+GEM= ${RUBY} -S gem
+GEM_REL=
+GEM_BASE_LIB= ${GEM_BASE}/rbx/${MODRUBY_LIBREV}
+GEM_BIN = lib/rubinius/${MODRUBY_RBX_VERSION}/gems/bin
+GEM_LIB = lib/rubinius/${MODRUBY_RBX_VERSION}/gems/${MODRUBY_LIBREV}
. else
GEM= ${LOCALBASE}/bin/gem${MODRUBY_BINREV}
GEM_REL=
GEM_BASE_LIB= ${GEM_BASE}/ruby/${MODRUBY_LIBREV}
. endif
GEM_BASE= ${WRKDIR}/gem-tmp/.gem
-GEM_BIN= ${GEM_REL}bin
-GEM_LIB= ${GEM_REL}lib/ruby/gems/${MODRUBY_LIBREV}
+GEM_BIN ?= ${GEM_REL}bin
+GEM_LIB ?= ${GEM_REL}lib/ruby/gems/${MODRUBY_LIBREV}
GEM_ABS_PATH= ${PREFIX}/${GEM_LIB}
GEM_BASE_BIN= ${GEM_BASE_LIB}/bin
# We purposely do not install documentation for ruby gems, because
rubinius_port.tar.gz
Description: application/tar-gz
