diff options
author | taca <taca> | 2015-03-08 14:41:12 +0000 |
---|---|---|
committer | taca <taca> | 2015-03-08 14:41:12 +0000 |
commit | 43beed299bdb5bdf186fa2b93dbdfb43d3af2f22 (patch) | |
tree | 39e75ef59516bdd3d1cc3f5aadc18386a937010a /lang/ruby | |
parent | 06de503ede1f14ac7208075a354700b29da3825b (diff) | |
download | pkgsrc-43beed299bdb5bdf186fa2b93dbdfb43d3af2f22.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.mk | 33 | ||||
-rw-r--r-- | lang/ruby/gem-vars.mk | 50 | ||||
-rw-r--r-- | lang/ruby/gem.mk | 61 |
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}"." |