aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/gem.mk144
-rw-r--r--Mk/bsd.ruby.mk139
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)