On 2013/03/05 15:15, Jeremy Evans wrote:
> This updates ruby.port.mk so that it builds packages for ruby 2.0
> using the ruby20 FLAVOR, and works after the upgrade of jruby to
> 1.7.
> 
> Tested on amd64 and i386.  Looking for OKs to commit this when
> ruby 2.0 and jruby 1.7 are committed.

The conditionals to check for mismatching flavours are getting a bit
unwieldy, what do you think about doing this? or is it too much magic?
(other minor change compared to your diff is that I lined up whitespace
in the block of lines like ".if ${MODRUBY_REV} == ... / MODYRUBY_LIBREV
/ MODRUBY_BINREV").

Index: ruby.port.mk
===================================================================
RCS file: /cvs/ports/lang/ruby/ruby.port.mk,v
retrieving revision 1.56
diff -u -p -r1.56 ruby.port.mk
--- ruby.port.mk        4 Mar 2013 18:39:06 -0000       1.56
+++ ruby.port.mk        7 Mar 2013 10:01:21 -0000
@@ -24,7 +24,7 @@ MODRUBY_HANDLE_FLAVORS ?= No
 # If ruby.pork.mk should handle FLAVORs, define a separate FLAVOR
 # for each ruby interpreter
 .    if !defined(FLAVORS)
-FLAVORS?=              ruby18 ruby19 rbx jruby
+FLAVORS?=              ruby18 ruby19 ruby20 rbx jruby
 .    endif
 
 # Instead of adding flavors to the end of the package name, we use
@@ -47,40 +47,30 @@ SUBST_VARS+=                GEM_BIN_SUFFIX GEM_MAN_SUF
 
 FLAVOR?=
 # Without a FLAVOR, assume the use of ruby 1.9.
-.     if empty(FLAVOR)
+.    if empty(FLAVOR)
 FLAVOR =               ruby19
-.     endif
+.    endif
 
 # Check for conflicting FLAVORs and set MODRUBY_REV appropriately based
 # on the FLAVOR.
-.    if ${FLAVOR:Mruby18}
-.      if ${FLAVOR:Mruby19} || ${FLAVOR:Mjruby} || ${FLAVOR:Mrbx}
-ERRORS+=               "Fatal: Conflicting flavors used: ${FLAVOR}"
+.    for i in ruby18 ruby19 ruby20 jruby rbx
+.      if ${FLAVOR:M$i}
+MODRUBY_REV = ${i:C/ruby([0-9])/\1./}
+.        if ${FLAVOR:N$i:Mruby18} || ${FLAVOR:N$i:Mruby19} || \
+            ${FLAVOR:N$i:Mruby20} || ${FLAVOR:N$i:Mjruby} || \
+           ${FLAVOR:N$i:Mrbx}
+ERRORS += "Fatal: Conflicting flavors used: ${FLAVOR}"
+.        endif
 .      endif
-MODRUBY_REV=           1.8
+.    endfor
+
 
+
+.    if ${FLAVOR:Mruby18}
 # Handle updates from older ruby 1.8 ports that didn't use the ruby18
 # FLAVOR by adding a @pkgpath entry to the PLIST.
 SUBST_VARS+=   PKGPATH
 PKG_ARGS+=     -f ${PORTSDIR}/lang/ruby/ruby18.PLIST
-
-.    elif ${FLAVOR:Mruby19}
-.      if ${FLAVOR:Mruby18} || ${FLAVOR:Mjruby} || ${FLAVOR:Mrbx}
-ERRORS+=               "Fatal: Conflicting flavors used: ${FLAVOR}"
-.      endif
-MODRUBY_REV=           1.9
-
-.    elif ${FLAVOR:Mjruby}
-.      if ${FLAVOR:Mruby18} || ${FLAVOR:Mruby19} || ${FLAVOR:Mrbx}
-ERRORS+=               "Fatal: Conflicting flavors used: ${FLAVOR}"
-.      endif
-MODRUBY_REV=           jruby
-
-.    elif ${FLAVOR:Mrbx}
-.      if ${FLAVOR:Mruby18} || ${FLAVOR:Mruby19} || ${FLAVOR:Mjruby}
-ERRORS+=               "Fatal: Conflicting flavors used: ${FLAVOR}"
-.      endif
-MODRUBY_REV=           rbx
 .    endif
 .  endif
 .endif
@@ -106,20 +96,25 @@ MODRUBY_PKG_PREFIX =       ${MODRUBY_FLAVOR}
 GEM_BIN_SUFFIX =       
 
 .if ${MODRUBY_REV} == 1.8
-MODRUBY_LIBREV=                1.8
-MODRUBY_BINREV=                18
-MODRUBY_PKG_PREFIX=    ruby
+MODRUBY_LIBREV =       1.8
+MODRUBY_BINREV =       18
+MODRUBY_PKG_PREFIX =   ruby
 MODRUBY_FLAVOR =       ruby18
-GEM_MAN_SUFFIX =       
+GEM_MAN_SUFFIX =
 .elif ${MODRUBY_REV} == 1.9
-MODRUBY_LIBREV=                1.9.1
-MODRUBY_BINREV=                19
+MODRUBY_LIBREV =       1.9.1
+MODRUBY_BINREV =       19
 MODRUBY_FLAVOR =       ruby19
-GEM_BIN_SUFFIX=                19
-# Have the ruby 1.9 manpage match the binary name.
+GEM_BIN_SUFFIX =       19
+GEM_MAN_SUFFIX =       ${GEM_BIN_SUFFIX}
+.elif ${MODRUBY_REV} == 2.0
+MODRUBY_LIBREV =       2.0
+MODRUBY_BINREV =       20
+MODRUBY_FLAVOR =       ruby20
+GEM_BIN_SUFFIX =       20
 GEM_MAN_SUFFIX =       ${GEM_BIN_SUFFIX}
 .elif ${MODRUBY_REV} == jruby
-MODRUBY_LIBREV=                1.8
+MODRUBY_LIBREV =       1.8
 
 # Set these during development of ruby.port.mk to make sure
 # nothing is broken.  However, turn them off before committing,
@@ -149,9 +144,6 @@ RAKE=                       ${RUBY} -S rake
 RSPEC=                 ${RUBY} -S spec
 MODRUBY_BIN_RSPEC =    ${RUBY} -S rspec
 MODRUBY_BIN_TESTRB =   ${RUBY} -S testrb
-
-# 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
@@ -346,7 +338,7 @@ SUBST_VARS+=        ^GEM_LIB ^GEM_BIN DISTNAME
 .  if ${MODRUBY_REV} == jruby
 GEM=           ${RUBY} -S gem
 GEM_BIN =      jruby/bin
-GEM_LIB =      jruby/lib/ruby/gems/${MODRUBY_LIBREV}
+GEM_LIB =      jruby/lib/ruby/gems/1.8
 GEM_BASE_LIB=  ${GEM_BASE}/jruby/${MODRUBY_LIBREV}
 .  elif ${MODRUBY_REV} == rbx
 GEM=           ${RUBY} -S gem
@@ -362,6 +354,7 @@ GEM_BASE_LIB=       ${GEM_BASE}/ruby/${MODRUBY
 GEM_BASE=      ${WRKDIR}/gem-tmp/.gem
 GEM_ABS_PATH=  ${PREFIX}/${GEM_LIB}
 GEM_BASE_BIN=  ${GEM_BASE_LIB}/bin
+
 # We purposely do not install documentation for ruby gems, because
 # the filenames are generated differently on different ruby versions,
 # and most use 1 file per method, which is insane.
@@ -394,7 +387,7 @@ MODRUBY_BUILD_TARGET = \
            pax -wz -s '/^\.\///' -f ${_GEM_DATAFILE}; \
     cd ${_GEM_CONTENT} && tar -cf ${WRKDIR}/${_GEM_PATCHED} *.gz; \
     mkdir -p ${GEM_BASE}; \
-    env -i ${MAKE_ENV} HOME=${GEM_BASE}/.. GEM_HOME=${GEM_BASE} \
+    env -i ${MAKE_ENV} HOME=`dirname ${GEM_BASE}` GEM_HOME=${GEM_BASE} \
            make="make V=1" \
            ${GEM} install ${GEM_FLAGS} ${WRKDIR}/${_GEM_PATCHED} \
            -- ${CONFIGURE_ARGS}
@@ -477,9 +470,7 @@ MODRUBY_REGRESS_TARGET ?=   test
 .    endif
 
 MODRUBY_REGRESS_ENV ?= 
-.    if ${MODRUBY_REV} == 1.9
 MODRUBY_REGRESS_ENV += RUBYLIB=.:"$$RUBYLIB"
-.    endif
 MODRUBY_REGRESS_DIR ?= ${WRKSRC}
 do-regress:
        cd ${MODRUBY_REGRESS_DIR} && ${SETENV} ${MAKE_ENV} HOME=${WRKBUILD} \

Reply via email to