Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/pear.mk
# $FreeBSD$ | # $FreeBSD$ | ||||
# | # | ||||
# Use the PHP Extension and Application Repository | # Use the PHP Extension and Application Repository | ||||
# | # | ||||
# Feature: pear | # Feature: pear | ||||
# Usage: USES=pear | # Usage: USES=pear | ||||
# Valid ARGS: none | # Valid ARGS: env | ||||
# | # | ||||
# - env : Only provide the environment variables, no fetch/build/install | |||||
# targets. | |||||
# | |||||
# MAINTAINER= portmgr@FreeBSD.org | # MAINTAINER= portmgr@FreeBSD.org | ||||
.if !defined(_INCLUDE_USES_PEAR_MK) | .if !defined(_INCLUDE_USES_PEAR_MK) | ||||
_INCLUDE_USES_PEAR_MK= yes | _INCLUDE_USES_PEAR_MK= yes | ||||
_USES_POST+= pear | _USES_POST+= pear | ||||
.if !empty(pear_ARGS) | _valid_pear_ARGS= env | ||||
IGNORE+= USES=pear takes not arguments | |||||
# Sanity check | |||||
. for arg in ${pear_ARGS} | |||||
. if empty(_valid_pear_ARGS:M${arg}) | |||||
IGNORE= Incorrect 'USES+= pear:${cmake_ARGS}' usage: argument [${arg}] is not recognized | |||||
.endif | . endif | ||||
. endfor | |||||
php_ARGS+= flavors | |||||
.include "${USESDIR}/php.mk" | |||||
. if empty(pear_ARGS:Menv) | |||||
MASTER_SITES?= http://pear.php.net/get/ | MASTER_SITES?= http://pear.php.net/get/ | ||||
EXTRACT_SUFX?= .tgz | EXTRACT_SUFX?= .tgz | ||||
DIST_SUBDIR?= PEAR | DIST_SUBDIR?= PEAR | ||||
BUILD_DEPENDS+= pear:devel/pear | |||||
RUN_DEPENDS+= pear:devel/pear | |||||
.if !defined(USE_PHPIZE) | . if !defined(USE_PHPIZE) | ||||
NO_BUILD= yes | NO_BUILD= yes | ||||
.endif | . endif | ||||
. endif | |||||
BUILD_DEPENDS+= pear:devel/pear@${PHP_FLAVOR} | |||||
RUN_DEPENDS+= pear:devel/pear@${PHP_FLAVOR} | |||||
PEAR_PKGNAMEPREFIX= php${PHP_VER}-pear- | |||||
.if defined(PEAR_CHANNEL) && ${PEAR_CHANNEL} != "" | . if defined(PEAR_CHANNEL) && ${PEAR_CHANNEL} != "" | ||||
PKGNAMEPREFIX?= pear-${PEAR_CHANNEL}- | PEAR_${PEAR_CHANNEL:tu}_PKGNAMEPREFIX= php${PHP_VER}-pear-${PEAR_CHANNEL}- | ||||
PKGNAMEPREFIX?= ${PEAR_${PEAR_CHANNEL:tu}_PKGNAMEPREFIX} | |||||
PEARPKGREF= ${PEAR_CHANNEL}/${PORTNAME} | PEARPKGREF= ${PEAR_CHANNEL}/${PORTNAME} | ||||
PEAR_CHANNEL_VER?= >=0 | |||||
BUILD_DEPENDS+= ${PEAR_PKGNAMEPREFIX}channel-${PEAR_CHANNEL}${PEAR_CHANNEL_VER}:devel/pear-channel-${PEAR_CHANNEL}@${PHP_FLAVOR} | |||||
RUN_DEPENDS+= ${PEAR_PKGNAMEPREFIX}channel-${PEAR_CHANNEL}${PEAR_CHANNEL_VER}:devel/pear-channel-${PEAR_CHANNEL}@${PHP_FLAVOR} | |||||
.else | . else | ||||
PKGNAMEPREFIX?= pear- | PKGNAMEPREFIX?= ${PEAR_PKGNAMEPREFIX} | ||||
PEARPKGREF= ${PORTNAME} | PEARPKGREF= ${PORTNAME} | ||||
.endif | . endif | ||||
.if exists(${LOCALBASE}/bin/php-config) | . if exists(${LOCALBASE}/bin/php-config) | ||||
PHP_BASE!= ${LOCALBASE}/bin/php-config --prefix | PHP_BASE!= ${LOCALBASE}/bin/php-config --prefix | ||||
.else | . else | ||||
PHP_BASE= ${LOCALBASE} | PHP_BASE= ${LOCALBASE} | ||||
.endif | . endif | ||||
PEAR= ${LOCALBASE}/bin/pear | PEAR= ${LOCALBASE}/bin/pear | ||||
LPEARDIR= share/pear | LPEARDIR= share/pear | ||||
LPKGREGDIR= ${LPEARDIR}/packages/${PKGNAME} | LPKGREGDIR= ${LPEARDIR}/packages/${PKGNAME} | ||||
LDATADIR= ${LPEARDIR}/data/${PORTNAME} | LDATADIR= ${LPEARDIR}/data/${PORTNAME} | ||||
LDOCSDIR= share/doc/pear/${PORTNAME} | LDOCSDIR= share/doc/pear/${PORTNAME} | ||||
LEXAMPLESDIR= share/examples/pear/${PORTNAME} | LEXAMPLESDIR= share/examples/pear/${PORTNAME} | ||||
LSQLSDIR= ${LPEARDIR}/sql/${PORTNAME} | LSQLSDIR= ${LPEARDIR}/sql/${PORTNAME} | ||||
LSCRIPTSDIR= bin | LSCRIPTSDIR= bin | ||||
LTESTSDIR= ${LPEARDIR}/tests/${PORTNAME} | LTESTSDIR= ${LPEARDIR}/tests/${PORTNAME} | ||||
PEARDIR= ${PHP_BASE}/${LPEARDIR} | PEARDIR= ${PHP_BASE}/${LPEARDIR} | ||||
PKGREGDIR= ${PHP_BASE}/${LPKGREGDIR} | PKGREGDIR= ${PHP_BASE}/${LPKGREGDIR} | ||||
DATADIR= ${PHP_BASE}/${LDATADIR} | DATADIR= ${PHP_BASE}/${LDATADIR} | ||||
DOCSDIR= ${PHP_BASE}/${LDOCSDIR} | DOCSDIR= ${PHP_BASE}/${LDOCSDIR} | ||||
EXAMPLESDIR= ${PHP_BASE}/${LEXAMPLESDIR} | EXAMPLESDIR= ${PHP_BASE}/${LEXAMPLESDIR} | ||||
SQLSDIR= ${PHP_BASE}/${LSQLSDIR} | SQLSDIR= ${PHP_BASE}/${LSQLSDIR} | ||||
SCRIPTFILESDIR= ${LOCALBASE}/bin | SCRIPTFILESDIR= ${LOCALBASE}/bin | ||||
TESTSDIR= ${PHP_BASE}/${LTESTSDIR} | TESTSDIR= ${PHP_BASE}/${LTESTSDIR} | ||||
.if defined(CATEGORY) && !empty(CATEGORY) | . if defined(CATEGORY) && !empty(CATEGORY) | ||||
LINSTDIR= ${LPEARDIR}/${CATEGORY} | LINSTDIR= ${LPEARDIR}/${CATEGORY} | ||||
.else | . else | ||||
LINSTDIR= ${LPEARDIR} | LINSTDIR= ${LPEARDIR} | ||||
.endif | . endif | ||||
INSTDIR= ${PHP_BASE}/${LINSTDIR} | INSTDIR= ${PHP_BASE}/${LINSTDIR} | ||||
SUB_LIST+= PKG_NAME=${PEARPKGREF} | SUB_LIST+= PKG_NAME=${PEARPKGREF} | ||||
. if empty(pear_ARGS:Menv) | |||||
.if !defined(USE_PHPIZE) && !exists(${.CURDIR}/pkg-plist) | . if !defined(USE_PHPIZE) && !exists(${.CURDIR}/pkg-plist) | ||||
PLIST= ${WRKDIR}/PLIST | PLIST= ${WRKDIR}/PLIST | ||||
.endif | . endif | ||||
PKGINSTALL?= ${PORTSDIR}/devel/pear/pear-install | |||||
PKGDEINSTALL?= ${WRKDIR}/pear-deinstall | |||||
. endif | |||||
PLIST_SUB+= PEARDIR=${LPEARDIR} PKGREGDIR=${LPKGREGDIR} \ | PLIST_SUB+= PEARDIR=${LPEARDIR} PKGREGDIR=${LPKGREGDIR} \ | ||||
TESTSDIR=${LTESTSDIR} INSTDIR=${LINSTDIR} SQLSDIR=${LSQLSDIR} \ | TESTSDIR=${LTESTSDIR} INSTDIR=${LINSTDIR} SQLSDIR=${LSQLSDIR} \ | ||||
SCRIPTFILESDIR=${LCRIPTSDIR} | SCRIPTFILESDIR=${LCRIPTSDIR} | ||||
PKGINSTALL?= ${PORTSDIR}/devel/pear/pear-install | |||||
PKGDEINSTALL?= ${WRKDIR}/pear-deinstall | |||||
.endif | .endif | ||||
.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PEAR_POST_MK) | .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PEAR_POST_MK) | ||||
_INCLUDE_USES_PEAR_POST_MK= yes | _INCLUDE_USES_PEAR_POST_MK= yes | ||||
. if empty(pear_ARGS:Menv) | |||||
_USES_install+= 250:pear-pre-install | _USES_install+= 250:pear-pre-install | ||||
pear-pre-install: | pear-pre-install: | ||||
.if exists(${LOCALBASE}/lib/php.DIST_PHP) \ | . if exists(${LOCALBASE}/lib/php.DIST_PHP) \ | ||||
|| exists(${PHP_BASE}/lib/php.DIST_PHP) \ | || exists(${PHP_BASE}/lib/php.DIST_PHP) \ | ||||
|| exists(${LOCALBASE}/.PEAR.pkg) \ | || exists(${LOCALBASE}/.PEAR.pkg) \ | ||||
|| exists(${PHP_BASE}/.PEAR.pkg) | || exists(${PHP_BASE}/.PEAR.pkg) | ||||
@${ECHO_MSG} "" | @${ECHO_MSG} "" | ||||
@${ECHO_MSG} " Sorry, the PEAR structure has been modified;" | @${ECHO_MSG} " Sorry, the PEAR structure has been modified;" | ||||
@${ECHO_MSG} " Please deinstall your installed pear- ports." | @${ECHO_MSG} " Please deinstall your installed pear- ports." | ||||
@${ECHO_MSG} "" | @${ECHO_MSG} "" | ||||
@${FALSE} | @${FALSE} | ||||
.endif | . endif | ||||
DIRFILTER= ${SED} -En '\:^.*/[^/]*$$:s:^(.+)/[^/]*$$:\1:p' \ | DIRFILTER= ${SED} -En '\:^.*/[^/]*$$:s:^(.+)/[^/]*$$:\1:p' \ | ||||
| ( while read r; do \ | | ( while read r; do \ | ||||
C=1; \ | C=1; \ | ||||
while [ $$C = 1 ]; do \ | while [ $$C = 1 ]; do \ | ||||
echo $$r; \ | echo $$r; \ | ||||
if echo $$r | ${GREP} '/' > /dev/null; then \ | if echo $$r | ${GREP} '/' > /dev/null; then \ | ||||
r=`${DIRNAME} $$r`; \ | r=`${DIRNAME} $$r`; \ | ||||
else \ | else \ | ||||
C=0; \ | C=0; \ | ||||
fi; \ | fi; \ | ||||
done; \ | done; \ | ||||
done \ | done \ | ||||
) | ${SORT} -ur | ) | ${SORT} -ur | ||||
.if !defined(USE_PHPIZE) | . if !defined(USE_PHPIZE) | ||||
_USES_install+= 260:do-autogenerate-plist | _USES_install+= 260:do-autogenerate-plist | ||||
do-autogenerate-plist: | do-autogenerate-plist: | ||||
@${ECHO_MSG} "===> Generating packing list with pear" | @${ECHO_MSG} "===> Generating packing list with pear" | ||||
@${LN} -sf ${WRKDIR}/package.xml ${WRKSRC}/package.xml | @${LN} -sf ${WRKDIR}/package.xml ${WRKSRC}/package.xml | ||||
@cd ${WRKSRC} && ${PEAR} install -n -f -P ${WRKDIR}/inst package.xml > /dev/null 2> /dev/null | @cd ${WRKSRC} && ${PEAR} install -n -f -P ${WRKDIR}/inst package.xml > /dev/null 2> /dev/null | ||||
.for R in .channels .depdb .depdblock .filemap .lock .registry | . for R in .channels .depdb .depdblock .filemap .lock .registry | ||||
@${RM} -r ${WRKDIR}/inst/${PREFIX}/${LPEARDIR}/${R} | @${RM} -r ${WRKDIR}/inst/${PREFIX}/${LPEARDIR}/${R} | ||||
@${RM} -r ${WRKDIR}/inst/${R} | @${RM} -r ${WRKDIR}/inst/${R} | ||||
.endfor | . endfor | ||||
@FILES=`cd ${WRKDIR}/inst && ${FIND} . -type f | ${CUT} -c 2- | \ | @FILES=`cd ${WRKDIR}/inst && ${FIND} . -type f | ${CUT} -c 2- | \ | ||||
${GREP} -v -E "^${PREFIX}/"` || exit 0; \ | ${GREP} -v -E "^${PREFIX}/"` || exit 0; \ | ||||
${ECHO_CMD} $${FILES}; if ${TEST} -n "$${FILES}"; then \ | ${ECHO_CMD} $${FILES}; if ${TEST} -n "$${FILES}"; then \ | ||||
${ECHO_CMD} "Cannot generate packing list: package files outside PREFIX"; \ | ${ECHO_CMD} "Cannot generate packing list: package files outside PREFIX"; \ | ||||
exit 1; fi; | exit 1; fi; | ||||
@${ECHO_CMD} "${LPKGREGDIR}/package.xml" > ${PLIST} | @${ECHO_CMD} "${LPKGREGDIR}/package.xml" > ${PLIST} | ||||
# pkg_install needs to escape $ in directory name while pkg does not | # pkg_install needs to escape $ in directory name while pkg does not | ||||
@cd ${WRKDIR}/inst/${PREFIX} && ${FIND} . -type f | ${SORT} \ | @cd ${WRKDIR}/inst/${PREFIX} && ${FIND} . -type f | ${SORT} \ | ||||
| ${CUT} -c 3- >> ${PLIST} | | ${CUT} -c 3- >> ${PLIST} | ||||
do-install: | do-install: | ||||
@cd ${WRKSRC} && ${PEAR} install -n -f -P ${STAGEDIR} package.xml | @cd ${WRKSRC} && ${PEAR} install -n -f -P ${STAGEDIR} package.xml | ||||
# Clean up orphans re-generated by pear-install | # Clean up orphans re-generated by pear-install | ||||
.for R in .channels .depdb .depdblock .filemap .lock .registry | . for R in .channels .depdb .depdblock .filemap .lock .registry | ||||
@${RM} -r ${STAGEDIR}${PREFIX}/${LPEARDIR}/${R} | @${RM} -r ${STAGEDIR}${PREFIX}/${LPEARDIR}/${R} | ||||
@${RM} -r ${STAGEDIR}/${R} | @${RM} -r ${STAGEDIR}/${R} | ||||
.endfor | . endfor | ||||
.endif | . endif | ||||
_USES_install+= 270:do-generate-deinstall-script | _USES_install+= 270:do-generate-deinstall-script | ||||
do-generate-deinstall-script: | do-generate-deinstall-script: | ||||
@${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${PORTSDIR}/devel/pear/pear-deinstall.in > ${WRKDIR}/pear-deinstall | @${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${PORTSDIR}/devel/pear/pear-deinstall.in > ${WRKDIR}/pear-deinstall | ||||
_USES_install+= 550:pear-post-install | _USES_install+= 550:pear-post-install | ||||
pear-post-install: | pear-post-install: | ||||
@${MKDIR} ${STAGEDIR}${PKGREGDIR} | @${MKDIR} ${STAGEDIR}${PKGREGDIR} | ||||
@${INSTALL_DATA} ${WRKDIR}/package.xml ${STAGEDIR}${PKGREGDIR} | @${INSTALL_DATA} ${WRKDIR}/package.xml ${STAGEDIR}${PKGREGDIR} | ||||
show-depends: patch | show-depends: patch | ||||
@${PEAR} package-dependencies ${WRKDIR}/package.xml | @${PEAR} package-dependencies ${WRKDIR}/package.xml | ||||
. endif | |||||
.endif | .endif |