diff options
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/Uses/gem.mk | 144 | ||||
-rw-r--r-- | Mk/bsd.ruby.mk | 139 |
2 files changed, 145 insertions, 138 deletions
diff --git a/Mk/Uses/gem.mk b/Mk/Uses/gem.mk new file mode 100644 index 000000000000..4953b9df6dc3 --- /dev/null +++ b/Mk/Uses/gem.mk @@ -0,0 +1,144 @@ +# $FreeBSD$ +# +# Support rubygem packages +# +# Feature: gem +# Usage: USES=gem[:autoplist] +# Valid args: autoplist Automatically generate packing list +# +# MAINTAINER: portmgr@FreeBSD.org + +.if !defined(_INCLUDE_USES_GEM_MK) + +_INCLUDE_USES_GEM_MK= yes + +BUILD_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems +RUN_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems + +PKGNAMEPREFIX?= rubygem- +EXTRACT_SUFX= .gem +EXTRACT_ONLY= +DIST_SUBDIR= rubygem + +EXTRACT_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems +GEMS_BASE_DIR= lib/ruby/gems/${RUBY_VER} +GEMS_DIR= ${GEMS_BASE_DIR}/gems +DOC_DIR= ${GEMS_BASE_DIR}/doc +CACHE_DIR= ${GEMS_BASE_DIR}/cache +SPEC_DIR= ${GEMS_BASE_DIR}/specifications +EXT_DIR= ${GEMS_BASE_DIR}/extensions +GEM_NAME?= ${PORTNAME}-${PORTVERSION} +GEM_LIB_DIR?= ${GEMS_DIR}/${GEM_NAME} +GEM_DOC_DIR?= ${DOC_DIR}/${GEM_NAME} +GEM_SPEC?= ${SPEC_DIR}/${GEM_NAME}.gemspec +GEM_CACHE?= ${CACHE_DIR}/${GEM_NAME}.gem +GEMSPEC= ${PORTNAME}.gemspec +GEM_ENV+= RB_USER_INSTALL=yes + +.if defined(LANG) && !empty(LANG) +GEM_ENV+= LANG=${LANG} +.else +GEM_ENV+= LANG=en_US.UTF-8 +.endif + +.if defined(LC_ALL) && !empty(LC_ALL) +GEM_ENV+= LC_ALL=${LC_ALL} +.else +GEM_ENV+= LC_ALL=en_US.UTF-8 +.endif + +.if defined(LC_CTYPE) && !empty(LC_CTYPE) +GEM_ENV+= LC_CTYPE=${LC_CTYPE} +.else +GEM_ENV+= LC_CTYPE=UTF-8 +.endif + +PLIST_SUB+= PORTVERSION="${PORTVERSION}" \ + REV="${RUBY_GEM}" \ + GEMS_BASE_DIR="lib/ruby/gems/${RUBY_VER}" \ + GEMS_DIR="${GEMS_DIR}" \ + DOC_DIR="${DOC_DIR}" \ + CACHE_DIR="${CACHE_DIR}" \ + SPEC_DIR="${SPEC_DIR}" \ + EXT_DIR="${EXT_DIR}" \ + PORT="${PORTNAME}-${PORTVERSION}" \ + GEM_NAME="${GEM_NAME}" \ + GEM_LIB_DIR="${GEM_LIB_DIR}" \ + GEM_DOC_DIR="${GEM_DOC_DIR}" \ + GEM_SPEC="${GEM_SPEC}" \ + GEM_CACHE="${GEM_CACHE}" \ + EXTRACT_SUFX="${EXTRACT_SUFX}" + +RUBYGEMBIN= ${LOCALBASE}/bin/gem${RUBY_VER:S/.//} + +. if defined(DISTFILES) +GEMFILES= ${DISTFILES:C/:[^:]+$//} +. else +GEMFILES= ${DISTNAME}${EXTRACT_SUFX} +. endif + +RUBYGEM_ARGS=-l --no-update-sources --install-dir ${STAGEDIR}${PREFIX}/lib/ruby/gems/${RUBY_VER} --ignore-dependencies --bindir=${STAGEDIR}${PREFIX}/bin + +.if ${PORT_OPTIONS:MDOCS} +RUBYGEM_ARGS+= --rdoc --ri +.else +RUBYGEM_ARGS+= --no-rdoc --no-ri +.endif + +.if !target(do-extract) +do-extract: + @${SETENV} ${GEM_ENV} ${RUBYGEMBIN} unpack --target=${WRKDIR} ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} + @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} spec --ruby ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} > ${GEMSPEC} ; then \ + if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ + ${ECHO_MSG} "===> Extraction failed unexpectedly."; \ + (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT} 75 79 ; \ + fi; \ + ${FALSE}; \ + fi) +.endif + +.if !target(do-build) +do-build: + @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} build --force ${GEMSPEC} ; then \ + if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ + ${ECHO_MSG} "===> Compilation failed unexpectedly."; \ + (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT} 75 79 ; \ + fi; \ + ${FALSE}; \ + fi) +.endif + +.if !target(do-install) +do-install: + (cd ${BUILD_WRKSRC}; ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} install ${RUBYGEM_ARGS} ${GEMFILES} -- --build-args ${CONFIGURE_ARGS}) + ${RM} -r ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR}/build_info/ + ${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f -name '*.so' -exec ${STRIP_CMD} {} + + ${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f \( -name mkmf.log -or -name gem_make.out \) -delete + ${RM} -rf ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext \ + ${STAGEDIR}${PREFIX}/${CACHE_DIR} 2> /dev/null || ${TRUE} + ${RMDIR} ${STAGEDIR}${PREFIX}/${EXT_DIR} 2> /dev/null || ${TRUE} +.if defined(NOPORTDOCS) + -@${RMDIR} ${STAGEDIR}${PREFIX}/${DOC_DIR} +.endif +.endif + +.if ${gem_ARGS} == "autoplist" +.if !target(post-install-script) +post-install-script: + @${ECHO} ${GEM_SPEC} >> ${TMPPLIST} +.if !defined(NOPORTDOCS) + @${FIND} -ds ${STAGEDIR}${PREFIX}/${DOC_DIR} -type f -print | ${SED} -E -e \ + 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} +.endif + @${FIND} -ds ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR} -type f -print | ${SED} -E -e \ + 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} + @if [ -d ${STAGEDIR}${PREFIX}/${EXT_DIR} ]; then \ + ${FIND} -ds ${STAGEDIR}${PREFIX}/${EXT_DIR} -type f -print | ${SED} -E -e \ + 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ + fi +.endif +.else +IGNORE= Incorrect 'USES+=gem:${gem_ARGS}' expecting 'USES+=gem[:autoplist]' +.endif + +.endif diff --git a/Mk/bsd.ruby.mk b/Mk/bsd.ruby.mk index e3b868ff9ac0..e8cd9c4981fa 100644 --- a/Mk/bsd.ruby.mk +++ b/Mk/bsd.ruby.mk @@ -56,10 +56,7 @@ Ruby_Include_MAINTAINER= ruby@FreeBSD.org # documents from. If this is defined and not empty, # USE_RUBY_RDTOOL is implied and RUBY_RD_HTML_FILES is # defined. -# USE_RUBYGEMS - Says that the port uses rubygems packaging system. -# RUBYGEM_AUTOPLIST - Generate packing list for rubygems based port -# automatically. -# +# USE_RUBYGEMS - Do not use this -- instead USES=gem # # [variables that each port should not (re)define] # @@ -263,24 +260,6 @@ _RUBY_VENDORDIR?= ${_RUBY_SYSLIBDIR}/ruby/vendor_ruby .if !defined(_INVALID_RUBY_VER) -.if defined(LANG) && !empty(LANG) -GEM_ENV+= LANG=${LANG} -.else -GEM_ENV+= LANG=en_US.UTF-8 -.endif - -.if defined(LC_ALL) && !empty(LC_ALL) -GEM_ENV+= LC_ALL=${LC_ALL} -.else -GEM_ENV+= LC_ALL=en_US.UTF-8 -.endif - -.if defined(LC_CTYPE) && !empty(LC_CTYPE) -GEM_ENV+= LC_CTYPE=${LC_CTYPE} -.else -GEM_ENV+= LC_CTYPE=UTF-8 -.endif - RUBY_DEFAULT_SUFFIX?= ${RUBY_DEFAULT_VER:S/.//} RUBY_DISTVERSION?= ${RUBY_VERSION} @@ -392,122 +371,6 @@ RUBY_FLAGS+= -d .endif # -# RubyGems support -# -.if defined(USE_RUBYGEMS) - -BUILD_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems -RUN_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems - -PKGNAMEPREFIX?= rubygem- -EXTRACT_SUFX= .gem -EXTRACT_ONLY= -DIST_SUBDIR= rubygem - -EXTRACT_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems -GEMS_BASE_DIR= lib/ruby/gems/${RUBY_VER} -GEMS_DIR= ${GEMS_BASE_DIR}/gems -DOC_DIR= ${GEMS_BASE_DIR}/doc -CACHE_DIR= ${GEMS_BASE_DIR}/cache -SPEC_DIR= ${GEMS_BASE_DIR}/specifications -EXT_DIR= ${GEMS_BASE_DIR}/extensions -GEM_NAME?= ${PORTNAME}-${PORTVERSION} -GEM_LIB_DIR?= ${GEMS_DIR}/${GEM_NAME} -GEM_DOC_DIR?= ${DOC_DIR}/${GEM_NAME} -GEM_SPEC?= ${SPEC_DIR}/${GEM_NAME}.gemspec -GEM_CACHE?= ${CACHE_DIR}/${GEM_NAME}.gem - -PLIST_SUB+= PORTVERSION="${PORTVERSION}" \ - REV="${RUBY_GEM}" \ - GEMS_BASE_DIR="lib/ruby/gems/${RUBY_VER}" \ - GEMS_DIR="${GEMS_DIR}" \ - DOC_DIR="${DOC_DIR}" \ - CACHE_DIR="${CACHE_DIR}" \ - SPEC_DIR="${SPEC_DIR}" \ - EXT_DIR="${EXT_DIR}" \ - PORT="${PORTNAME}-${PORTVERSION}" \ - GEM_NAME="${GEM_NAME}" \ - GEM_LIB_DIR="${GEM_LIB_DIR}" \ - GEM_DOC_DIR="${GEM_DOC_DIR}" \ - GEM_SPEC="${GEM_SPEC}" \ - GEM_CACHE="${GEM_CACHE}" \ - EXTRACT_SUFX="${EXTRACT_SUFX}" - -RUBYGEMBIN= ${LOCALBASE}/bin/gem${RUBY_VER:S/.//} - -. if defined(DISTFILES) -GEMFILES= ${DISTFILES:C/:[^:]+$//} -. else -GEMFILES= ${DISTNAME}${EXTRACT_SUFX} -. endif - -GEMSPEC= ${PORTNAME}.gemspec - -RUBYGEM_ARGS=-l --no-update-sources --install-dir ${STAGEDIR}${PREFIX}/lib/ruby/gems/${RUBY_VER} --ignore-dependencies --bindir=${STAGEDIR}${PREFIX}/bin -GEM_ENV+= RB_USER_INSTALL=yes -.if defined(NOPORTDOCS) -RUBYGEM_ARGS+= --no-rdoc --no-ri -.else -RUBYGEM_ARGS+= --rdoc --ri -.endif - -.if !target(do-extract) -do-extract: - @${SETENV} ${GEM_ENV} ${RUBYGEMBIN} unpack --target=${WRKDIR} ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} - @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} spec --ruby ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} > ${GEMSPEC} ; then \ - if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ - ${ECHO_MSG} "===> Extraction failed unexpectedly."; \ - (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT} 75 79 ; \ - fi; \ - ${FALSE}; \ - fi) -.endif - -.if !target(do-build) -do-build: - @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} build --force ${GEMSPEC} ; then \ - if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ - ${ECHO_MSG} "===> Compilation failed unexpectedly."; \ - (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT} 75 79 ; \ - fi; \ - ${FALSE}; \ - fi) -.endif - -.if !target(do-install) -do-install: - (cd ${BUILD_WRKSRC}; ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} install ${RUBYGEM_ARGS} ${GEMFILES} -- --build-args ${CONFIGURE_ARGS}) - ${RM} -r ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR}/build_info/ - ${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f -name '*.so' -exec ${STRIP_CMD} {} + - ${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f \( -name mkmf.log -or -name gem_make.out \) -delete - ${RM} -rf ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext \ - ${STAGEDIR}${PREFIX}/${CACHE_DIR} 2> /dev/null || ${TRUE} - ${RMDIR} ${STAGEDIR}${PREFIX}/${EXT_DIR} 2> /dev/null || ${TRUE} -.if defined(NOPORTDOCS) - -@${RMDIR} ${STAGEDIR}${PREFIX}/${DOC_DIR} -.endif -.endif - -. if defined(RUBYGEM_AUTOPLIST) -. if !target(post-install-script) -post-install-script: - @${ECHO} ${GEM_SPEC} >> ${TMPPLIST} -.if !defined(NOPORTDOCS) - @${FIND} -ds ${STAGEDIR}${PREFIX}/${DOC_DIR} -type f -print | ${SED} -E -e \ - 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} -.endif - @${FIND} -ds ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR} -type f -print | ${SED} -E -e \ - 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} - @if [ -d ${STAGEDIR}${PREFIX}/${EXT_DIR} ]; then \ - ${FIND} -ds ${STAGEDIR}${PREFIX}/${EXT_DIR} -type f -print | ${SED} -E -e \ - 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ - fi -. endif -. endif - -.endif # USE_RUBYGEMS - -# # extconf.rb support # .if defined(USE_RUBY_EXTCONF) |