Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/gem.mk
# Support rubygem packages | # Support rubygem packages | ||||
# | # | ||||
# Feature: gem | # Feature: gem | ||||
# Usage: USES=gem[:noautoplist] | # Usage: USES=gem[:noautoplist] | ||||
# Valid args: noautoplist Don't generate the plist automatically | # Valid args: noautoplist Don't generate the plist automatically | ||||
# | # | ||||
# MAINTAINER: ruby@FreeBSD.org | # MAINTAINER: ruby@FreeBSD.org | ||||
.if !defined(_INCLUDE_USES_GEM_MK) | .if !defined(_INCLUDE_USES_GEM_MK) | ||||
_INCLUDE_USES_GEM_MK= yes | _INCLUDE_USES_GEM_MK= yes | ||||
_valid_ARGS= noautoplist | _valid_ARGS= noautoplist | ||||
# Sanity check | # Sanity check | ||||
.for arg in ${gem_ARGS} | . for arg in ${gem_ARGS} | ||||
. if empty(_valid_ARGS:M${arg}) | . if empty(_valid_ARGS:M${arg}) | ||||
IGNORE= Incorrect 'USES+= gem:${gem_ARGS}' usage: argument [${arg}] is not recognized | IGNORE= Incorrect 'USES+= gem:${gem_ARGS}' usage: argument [${arg}] is not recognized | ||||
. endif | . endif | ||||
.endfor | . endfor | ||||
BUILD_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems | BUILD_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems | ||||
RUN_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems | RUN_DEPENDS+= ${RUBYGEMBIN}:devel/ruby-gems | ||||
PKGNAMEPREFIX?= rubygem- | PKGNAMEPREFIX?= rubygem- | ||||
EXTRACT_SUFX= .gem | EXTRACT_SUFX= .gem | ||||
EXTRACT_ONLY= | EXTRACT_ONLY= | ||||
DIST_SUBDIR= rubygem | DIST_SUBDIR= rubygem | ||||
Show All 31 Lines | PLIST_SUB+= PORTVERSION="${PORTVERSION}" \ | ||||
GEM_LIB_DIR="${GEM_LIB_DIR}" \ | GEM_LIB_DIR="${GEM_LIB_DIR}" \ | ||||
GEM_DOC_DIR="${GEM_DOC_DIR}" \ | GEM_DOC_DIR="${GEM_DOC_DIR}" \ | ||||
GEM_SPEC="${GEM_SPEC}" \ | GEM_SPEC="${GEM_SPEC}" \ | ||||
GEM_CACHE="${GEM_CACHE}" \ | GEM_CACHE="${GEM_CACHE}" \ | ||||
EXTRACT_SUFX="${EXTRACT_SUFX}" | EXTRACT_SUFX="${EXTRACT_SUFX}" | ||||
RUBYGEMBIN= ${LOCALBASE}/bin/gem | RUBYGEMBIN= ${LOCALBASE}/bin/gem | ||||
. if defined(DISTFILES) | . if defined(DISTFILES) | ||||
GEMFILES= ${DISTFILES:C/:[^:]+$//} | GEMFILES= ${DISTFILES:C/:[^:]+$//} | ||||
. else | . else | ||||
GEMFILES= ${DISTNAME}${EXTRACT_SUFX} | GEMFILES= ${DISTNAME}${EXTRACT_SUFX} | ||||
. endif | . endif | ||||
RUBYGEM_ARGS=-l --no-update-sources --install-dir ${STAGEDIR}${PREFIX}/lib/ruby/gems/${RUBY_VER} --ignore-dependencies --bindir=${STAGEDIR}${PREFIX}/bin | 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} | . if ${PORT_OPTIONS:MDOCS} | ||||
RUBYGEM_ARGS+= --document rdoc,ri | RUBYGEM_ARGS+= --document rdoc,ri | ||||
.else | . else | ||||
RUBYGEM_ARGS+= --no-document | RUBYGEM_ARGS+= --no-document | ||||
.endif | . endif | ||||
.if !target(do-extract) | . if !target(do-extract) | ||||
do-extract: | do-extract: | ||||
@${SETENV} ${GEM_ENV} ${RUBYGEMBIN} unpack --target=${WRKDIR} ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} | @${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 \ | @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} spec --ruby ${DISTDIR}/${DIST_SUBDIR}/${GEMFILES} > ${GEMSPEC} ; then \ | ||||
if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ | if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ | ||||
${ECHO_MSG} "===> Extraction failed unexpectedly."; \ | ${ECHO_MSG} "===> Extraction failed unexpectedly."; \ | ||||
(${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \ | (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \ | ||||
fi; \ | fi; \ | ||||
${FALSE}; \ | ${FALSE}; \ | ||||
fi) | fi) | ||||
.endif | . endif | ||||
.if !target(do-build) | . if !target(do-build) | ||||
do-build: | do-build: | ||||
@(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} build --force ${GEMSPEC} ; then \ | @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} build --force ${GEMSPEC} ; then \ | ||||
if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ | if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \ | ||||
${ECHO_MSG} "===> Compilation failed unexpectedly."; \ | ${ECHO_MSG} "===> Compilation failed unexpectedly."; \ | ||||
(${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \ | (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \ | ||||
fi; \ | fi; \ | ||||
${FALSE}; \ | ${FALSE}; \ | ||||
fi) | fi) | ||||
.endif | . endif | ||||
.if !target(do-install) | . if !target(do-install) | ||||
do-install: | do-install: | ||||
(cd ${BUILD_WRKSRC}; ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} install ${RUBYGEM_ARGS} ${GEMFILES} -- ${CONFIGURE_ARGS}) | (cd ${BUILD_WRKSRC}; ${SETENV} ${GEM_ENV} ${RUBYGEMBIN} install ${RUBYGEM_ARGS} ${GEMFILES} -- ${CONFIGURE_ARGS}) | ||||
${RM} -r ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR}/build_info/ | ${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 '*.so' -exec ${STRIP_CMD} {} + | ||||
${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f \( -name mkmf.log -or -name gem_make.out \) -delete | ${FIND} ${STAGEDIR}${PREFIX}/${GEMS_BASE_DIR} -type f \( -name mkmf.log -or -name gem_make.out \) -delete | ||||
${FIND} ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext -type f -not -name '*.so' -delete 2> /dev/null || ${TRUE} | ${FIND} ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext -type f -not -name '*.so' -delete 2> /dev/null || ${TRUE} | ||||
${FIND} ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext -type d -empty -delete 2> /dev/null || ${TRUE} | ${FIND} ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR}/ext -type d -empty -delete 2> /dev/null || ${TRUE} | ||||
${RM} -r ${STAGEDIR}${PREFIX}/${CACHE_DIR} 2> /dev/null || ${TRUE} | ${RM} -r ${STAGEDIR}${PREFIX}/${CACHE_DIR} 2> /dev/null || ${TRUE} | ||||
${RMDIR} ${STAGEDIR}${PREFIX}/${EXT_DIR} 2> /dev/null || ${TRUE} | ${RMDIR} ${STAGEDIR}${PREFIX}/${EXT_DIR} 2> /dev/null || ${TRUE} | ||||
${RMDIR} ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} 2> /dev/null || ${TRUE} | ${RMDIR} ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} 2> /dev/null || ${TRUE} | ||||
.if !${PORT_OPTIONS:MDOCS} | . if !${PORT_OPTIONS:MDOCS} | ||||
-@${RMDIR} ${STAGEDIR}${PREFIX}/${DOC_DIR} | -@${RMDIR} ${STAGEDIR}${PREFIX}/${DOC_DIR} | ||||
.endif | . endif | ||||
.endif | . endif | ||||
.if empty(gem_ARGS:Mnoautoplist) | . if empty(gem_ARGS:Mnoautoplist) | ||||
_USES_install+= 820:gem-autoplist | _USES_install+= 820:gem-autoplist | ||||
gem-autoplist: | gem-autoplist: | ||||
@${ECHO_CMD} ${GEM_SPEC} >> ${TMPPLIST} | @${ECHO_CMD} ${GEM_SPEC} >> ${TMPPLIST} | ||||
.if ${PORT_OPTIONS:MDOCS} | . if ${PORT_OPTIONS:MDOCS} | ||||
@${FIND} -ds ${STAGEDIR}${PREFIX}/${DOC_DIR} -type f -print | ${SED} -E -e \ | @${FIND} -ds ${STAGEDIR}${PREFIX}/${DOC_DIR} -type f -print | ${SED} -E -e \ | ||||
's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} | 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} | ||||
.endif | . endif | ||||
@${FIND} -ds ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR} -type f -print | ${SED} -E -e \ | @${FIND} -ds ${STAGEDIR}${PREFIX}/${GEM_LIB_DIR} -type f -print | ${SED} -E -e \ | ||||
's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} | 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} | ||||
@if [ -d ${STAGEDIR}${PREFIX}/${EXT_DIR} ]; then \ | @if [ -d ${STAGEDIR}${PREFIX}/${EXT_DIR} ]; then \ | ||||
${FIND} -ds ${STAGEDIR}${PREFIX}/${EXT_DIR} -type f -print | ${SED} -E -e \ | ${FIND} -ds ${STAGEDIR}${PREFIX}/${EXT_DIR} -type f -print | ${SED} -E -e \ | ||||
's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ | 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ | ||||
fi | fi | ||||
@if [ -d ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} ]; then \ | @if [ -d ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} ]; then \ | ||||
${FIND} -ds ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} -type f -print | ${SED} -E -e \ | ${FIND} -ds ${STAGEDIR}${PREFIX}/${PLUGINS_DIR} -type f -print | ${SED} -E -e \ | ||||
's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ | 's,^${STAGEDIR}${PREFIX}/?,,' >> ${TMPPLIST} ; \ | ||||
fi | fi | ||||
.endif | . endif | ||||
.endif | .endif |