summaryrefslogtreecommitdiff
path: root/lang/ruby
diff options
context:
space:
mode:
authortaca <taca@pkgsrc.org>2015-03-08 14:41:12 +0000
committertaca <taca@pkgsrc.org>2015-03-08 14:41:12 +0000
commit6afb26fefe95c10bbd99d37d5e79238be4b5874c (patch)
tree39e75ef59516bdd3d1cc3f5aadc18386a937010a /lang/ruby
parentbc4c0110ae744aedbb21d06ec47269ad102d1745 (diff)
downloadpkgsrc-6afb26fefe95c10bbd99d37d5e79238be4b5874c.tar.gz
* Split gem-vars.mk and gem-extract.mk from gem.mk.
* Make GEM_EXTSDIR from output of gem command instead of derived from RUBY_ARCH related variables.
Diffstat (limited to 'lang/ruby')
-rw-r--r--lang/ruby/gem-extract.mk33
-rw-r--r--lang/ruby/gem-vars.mk50
-rw-r--r--lang/ruby/gem.mk61
3 files changed, 88 insertions, 56 deletions
diff --git a/lang/ruby/gem-extract.mk b/lang/ruby/gem-extract.mk
new file mode 100644
index 00000000000..075812c9972
--- /dev/null
+++ b/lang/ruby/gem-extract.mk
@@ -0,0 +1,33 @@
+# $NetBSD: gem-extract.mk,v 1.1 2015/03/08 14:41:12 taca Exp $
+#
+# This Makefile fragment is intended to be included by packages that extract
+# Ruby gems files.
+.if !defined(_RUBYGEM_EXTRACT_MK)
+_RUBYGEM_EXTRACT_MK= # defined
+
+.include "../../lang/ruby/rubyversion.mk"
+.include "../../lang/ruby/gem-vars.mk"
+
+_GEM_DISTFILES= ${DISTFILES:M*.gem}
+
+###
+### gem-extract
+###
+### The gem-extract target extracts a standard gem file. It is an
+### automatic dependency for the post-extract target so it doesn't
+### disturb the usual do-extract actions.
+###
+.PHONY: gem-extract
+post-extract: gem-extract
+.if !target(gem-extract)
+gem-extract: fake-home
+. for _gem_ in ${_GEM_DISTFILES}
+ ${RUN} cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${RUBYGEM_ENV} \
+ ${RUBYGEM} unpack ${_DISTDIR:Q}/${_gem_:Q}
+ ${RUN} cd ${WRKDIR} && \
+ ${SETENV} ${MAKE_ENV} TZ=UTC ${RUBYGEM_ENV} \
+ ${RUBYGEM} spec --ruby ${_DISTDIR:Q}/${_gem_:Q} > ${_gem_}spec
+. endfor
+.endif
+
+.endif
diff --git a/lang/ruby/gem-vars.mk b/lang/ruby/gem-vars.mk
new file mode 100644
index 00000000000..603f6e1b03d
--- /dev/null
+++ b/lang/ruby/gem-vars.mk
@@ -0,0 +1,50 @@
+# $NetBSD: gem-vars.mk,v 1.1 2015/03/08 14:41:12 taca Exp $
+#
+# This Makefile fragment defines various make(1) variables for Ruby gems
+# support.
+#
+.if !defined(_RUBYGEM_VARS_MK)
+_RUBYGEM_VARS_MK= # defined
+
+# Specify GEM_PATH
+GEM_PATH?= ${PREFIX}/${GEM_HOME}
+
+# Base directory for Gems
+MAKE_ENV+= GEM_PATH=${GEM_PATH}
+
+RUBYGEM_LANG?= en_US.UTF-8
+RUBYGEM_ENV?= LANG=${RUBYGEM_LANG} LC_CTYPE=${RUBYGEM_LANG}
+
+FIND_PREFIX+= RUBY_PREFIX=${RUBY_BASE}
+.include "../../mk/find-prefix.mk"
+RUBYGEM= ${RUBY_PREFIX}/bin/${RUBYGEM_NAME}
+
+RUBY_GEMS_VERSION?= ${RUBY_GEMS_PKGSRC_VERS}
+
+_RUBYGEMS_MAJOR= ${RUBY_GEMS_VERSION:C/\.[0-9\.]+$//}
+_RUBYGEMS_MINORS= ${RUBY_GEMS_VERSION:C/^([0-9]+)\.*//}
+
+.if ${RUBY_VER} == "18"
+BUILD_DEPENDS+= ${RUBY_PKGPREFIX}-rubygems>=1.1.0:../../misc/rubygems
+DEPENDS+= ${RUBY_PKGPREFIX}-rubygems>=1.0.1:../../misc/rubygems
+.endif # !ruby18
+
+.if ${_RUBYGEMS_MAJOR} >= 2 && ${_RUBYGEMS_MINORS} >= 2 && exists(${RUBYGEM})
+GEM_EXTSDIR_NEEDS_SUBDIR?= yes
+RUBY_GEM_ARCH!= ${RUBYGEM} environment platform | ${SED} -e 's|.*:||'
+
+.if !empty(GEM_EXTSDIR_NEEDS_SUBDIR:M[nB][oO])
+GEM_EXTSDIR= ${GEM_HOME}/extensions/${RUBY_GEM_ARCH}/${RUBY_VER_DIR}
+.else
+GEM_EXTSDIR= ${GEM_HOME}/extensions/${RUBY_GEM_ARCH}/${RUBY_VER_DIR}/${GEM_NAME}
+.endif
+
+.endif
+
+.if !empty(GEM_EXTSDIR)
+PLIST_SUBST+= GEM_EXTSDIR=${GEM_EXTSDIR}
+.else
+PLIST_SUBST+= GEM_EXTSDIR="@comment "
+.endif
+
+.endif
diff --git a/lang/ruby/gem.mk b/lang/ruby/gem.mk
index 673737933e7..222c07fe3d4 100644
--- a/lang/ruby/gem.mk
+++ b/lang/ruby/gem.mk
@@ -1,4 +1,4 @@
-# $NetBSD: gem.mk,v 1.34 2015/01/25 16:09:16 taca Exp $
+# $NetBSD: gem.mk,v 1.35 2015/03/08 14:41:12 taca Exp $
#
# This Makefile fragment is intended to be included by packages that build
# and install Ruby gems.
@@ -127,9 +127,6 @@ GEM_BUILD?= gemspec
OVERRIDE_GEMSPEC?= # default is empty
-RUBYGEM_LANG?= en_US.UTF-8
-RUBYGEM_ENV?= LANG=${RUBYGEM_LANG} LC_CTYPE=${RUBYGEM_LANG}
-
.if !empty(OVERRIDE_GEMSPEC)
UPDATE_GEMSPEC= ../../lang/ruby/files/update-gemspec.rb
.endif
@@ -149,24 +146,7 @@ USE_RAKE?= YES
# If we're using rake to build the local gem, then include it as a
# build tool.
#
-
-FIND_PREFIX+= RUBYGEM_PREFIX=${RUBY_BASE}
-.include "../../mk/find-prefix.mk"
-RUBYGEM= ${RUBYGEM_PREFIX}/bin/${RUBYGEM_NAME}
-
-RUBY_GEMS_VERSION?= ${RUBY_GEMS_PKGSRC_VERS}
-
-_RUBYGEMS_MAJOR= ${RUBY_GEMS_VERSION:C/\.[0-9\.]+$//}
-_RUBYGEMS_MINORS= ${RUBY_GEMS_VERSION:C/^([0-9]+)\.*//}
-
-.if ${RUBY_VER} == "18"
-BUILD_DEPENDS+= ${RUBY_PKGPREFIX}-rubygems>=1.1.0:../../misc/rubygems
-DEPENDS+= ${RUBY_PKGPREFIX}-rubygems>=1.0.1:../../misc/rubygems
-.endif # !ruby18
-
-.if ${_RUBYGEMS_MAJOR} >= 2 && ${_RUBYGEMS_MINORS} >= 2
-GEM_EXTSDIR= ${GEM_HOME}/extensions/${RUBY_ARCH}/${RUBY_VER_DIR}/${GEM_NAME}
-.endif
+.include "../../lang/ruby/gem-vars.mk"
CATEGORIES+= ruby
MASTER_SITES?= ${MASTER_SITE_RUBYGEMS}
@@ -181,12 +161,6 @@ DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
EXTRACT_ONLY?= # empty
.endif
-# Specify GEM_PATH
-GEM_PATH?= ${PREFIX}/${GEM_HOME}
-
-# Base directory for Gems
-MAKE_ENV+= GEM_PATH=${GEM_PATH}
-
# Directory for the Gem to install
GEM_NAME?= ${DISTNAME}
GEM_CACHEDIR= ${GEM_HOME}/cache
@@ -208,12 +182,6 @@ PLIST_SUBST+= GEM_NAME=${GEM_NAME}
PLIST_SUBST+= GEM_LIBDIR=${GEM_LIBDIR}
PLIST_SUBST+= GEM_DOCDIR=${GEM_DOCDIR}
-.if !empty(GEM_EXTSDIR)
-PLIST_SUBST+= GEM_EXTSDIR=${GEM_EXTSDIR}
-.else
-PLIST_SUBST+= GEM_EXTSDIR="@comment "
-.endif
-
# Add indirect support for print-PLIST
_RUBY_PRINT_PLIST_GEM= /${GEM_NAME}\.info$$/ \
{ gsub(/${GEM_NAME}\.info/, "$${GEM_NAME}.info"); }
@@ -237,27 +205,7 @@ _RUBY_PRINT_PLIST_GEM+= /^${RUBY_GEM_BASE:S|/|\\/|g}/ \
{ gsub(/${RUBY_GEM_BASE:S|/|\\/|g}/, "$${RUBY_GEM_BASE}"); \
print; next; }
-###
-### gem-extract
-###
-### The gem-extract target extracts a standard gem file. It is an
-### automatic dependency for the post-extract target so it doesn't
-### disturb the usual do-extract actions.
-###
-GEM_SPECFILE?= ${WRKDIR}/${DISTNAME}.gemspec
-
-.PHONY: gem-extract
-post-extract: gem-extract
-.if !target(gem-extract)
-gem-extract: fake-home
-. for _gem_ in ${DISTFILES:M*.gem}
- ${RUN} cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} ${RUBYGEM_ENV} \
- ${RUBYGEM} unpack ${_DISTDIR:Q}/${_gem_:Q}
- ${RUN} cd ${WRKDIR} && \
- ${SETENV} ${MAKE_ENV} TZ=UTC ${RUBYGEM_ENV} \
- ${RUBYGEM} spec --ruby ${_DISTDIR:Q}/${_gem_:Q} > ${_gem_}spec
-. endfor
-.endif
+.include "../../lang/ruby/gem-extract.mk"
###
### gem-build
@@ -267,8 +215,9 @@ gem-extract: fake-home
### The local gem is then installed into a special build root under
### ${WRKDIR} (${RUBYGEM_INSTALL_ROOT}), possibly compiling any extensions.
###
+GEM_SPECFILE?= ${WRKDIR}/${DISTNAME}.gemspec
GEM_CLEANBUILD?= ext/*
-GEM_CLEANBUILD_EXTENSIONS+= gem.build_complete *.out *.log
+GEM_CLEANBUILD_EXTENSIONS+= *.out *.log
.if !empty(GEM_CLEANBUILD:M/*) || !empty(GEM_CLEANBUILD:M*../*)
PKG_FAIL_REASON= "GEM_CLEANBUILD must be relative to "${PREFIX}/${GEM_LIBDIR:Q}"."