3 # Use the PHP Extension and Application Repository
9 # MAINTAINER= portmgr@FreeBSD.org
11 .if !defined(_INCLUDE_USES_PEAR_MK)
12 _INCLUDE_USES_PEAR_MK= yes
16 IGNORE+= USES=pear takes not arguments
19 MASTER_SITES?= http://pear.php.net/get/ \
20 http://us.pear.php.net/get/ \
21 http://de.pear.php.net/get/
26 BUILD_DEPENDS+= pear:devel/pear
27 RUN_DEPENDS+= pear:devel/pear
29 .if !defined(USE_PHPIZE)
33 .if defined(PEAR_CHANNEL) && ${PEAR_CHANNEL} != ""
34 PKGNAMEPREFIX?= pear-${PEAR_CHANNEL}-
35 PEARPKGREF= ${PEAR_CHANNEL}/${PORTNAME}
38 PEARPKGREF= ${PORTNAME}
41 .if exists(${LOCALBASE}/bin/php-config)
42 PHP_BASE!= ${LOCALBASE}/bin/php-config --prefix
44 PHP_BASE= ${LOCALBASE}
46 PEAR= ${LOCALBASE}/bin/pear
48 LPKGREGDIR= ${LPEARDIR}/packages/${PKGNAME}
49 LDATADIR= ${LPEARDIR}/data/${PORTNAME}
50 LDOCSDIR= share/doc/pear/${PORTNAME}
51 LEXAMPLESDIR= share/examples/pear/${PORTNAME}
52 LSQLSDIR= ${LPEARDIR}/sql/${PORTNAME}
54 LTESTSDIR= ${LPEARDIR}/tests/${PORTNAME}
55 PEARDIR= ${PHP_BASE}/${LPEARDIR}
56 PKGREGDIR= ${PHP_BASE}/${LPKGREGDIR}
57 DATADIR= ${PHP_BASE}/${LDATADIR}
58 DOCSDIR= ${PHP_BASE}/${LDOCSDIR}
59 EXAMPLESDIR= ${PHP_BASE}/${LEXAMPLESDIR}
60 SQLSDIR= ${PHP_BASE}/${LSQLSDIR}
61 SCRIPTFILESDIR= ${LOCALBASE}/bin
62 TESTSDIR= ${PHP_BASE}/${LTESTSDIR}
63 .if defined(CATEGORY) && !empty(CATEGORY)
64 LINSTDIR= ${LPEARDIR}/${CATEGORY}
68 INSTDIR= ${PHP_BASE}/${LINSTDIR}
70 SUB_LIST+= PKG_NAME=${PEARPKGREF}
72 .if !defined(USE_PHPIZE) && !exists(${.CURDIR}/pkg-plist)
73 PLIST= ${WRKDIR}/PLIST
75 PLIST_SUB+= PEARDIR=${LPEARDIR} PKGREGDIR=${LPKGREGDIR} \
76 TESTSDIR=${LTESTSDIR} INSTDIR=${LINSTDIR} SQLSDIR=${LSQLSDIR} \
77 SCRIPTFILESDIR=${LCRIPTSDIR}
79 PKGINSTALL?= ${PORTSDIR}/devel/pear/pear-install
80 PKGDEINSTALL?= ${WRKDIR}/pear-deinstall
83 .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PEAR_POST_MK)
84 _INCLUDE_USES_PEAR_POST_MK= yes
86 _USES_install+= 250:pear-pre-install
88 .if exists(${LOCALBASE}/lib/php.DIST_PHP) \
89 || exists(${PHP_BASE}/lib/php.DIST_PHP) \
90 || exists(${LOCALBASE}/.PEAR.pkg) \
91 || exists(${PHP_BASE}/.PEAR.pkg)
93 @${ECHO_MSG} " Sorry, the PEAR structure has been modified;"
94 @${ECHO_MSG} " Please deinstall your installed pear- ports."
99 DIRFILTER= ${SED} -En '\:^.*/[^/]*$$:s:^(.+)/[^/]*$$:\1:p' \
100 | ( while read r; do \
102 while [ $$C = 1 ]; do \
104 if echo $$r | ${GREP} '/' > /dev/null; then \
105 r=`${DIRNAME} $$r`; \
113 .if !defined(USE_PHPIZE)
114 _USES_install+= 260:do-autogenerate-plist
115 do-autogenerate-plist:
116 @${ECHO_MSG} "===> Generating packing list with pear"
117 @${LN} -sf ${WRKDIR}/package.xml ${WRKSRC}/package.xml
118 @cd ${WRKSRC} && ${PEAR} install -n -f -P ${WRKDIR}/inst package.xml > /dev/null 2> /dev/null
119 .for R in .channels .depdb .depdblock .filemap .lock .registry
120 @${RM} -rf ${WRKDIR}/inst/${PREFIX}/${LPEARDIR}/${R}
121 @${RM} -rf ${WRKDIR}/inst/${R}
123 @FILES=`cd ${WRKDIR}/inst && ${FIND} . -type f | ${CUT} -c 2- | \
124 ${GREP} -v -E "^${PREFIX}/"` || exit 0; \
125 ${ECHO_CMD} $${FILES}; if ${TEST} -n "$${FILES}"; then \
126 ${ECHO_CMD} "Cannot generate packing list: package files outside PREFIX"; \
128 @${ECHO_CMD} "${LPKGREGDIR}/package.xml" > ${PLIST}
129 # pkg_install needs to escape $ in directory name while pkg does not
130 @cd ${WRKDIR}/inst/${PREFIX} && ${FIND} . -type f | ${SORT} \
131 | ${CUT} -c 3- >> ${PLIST}
134 @cd ${WRKSRC} && ${PEAR} install -n -f -P ${STAGEDIR} package.xml
135 # Clean up orphans re-generated by pear-install
136 .for R in .channels .depdb .depdblock .filemap .lock .registry
137 @${RM} -rf ${STAGEDIR}${PREFIX}/${LPEARDIR}/${R}
138 @${RM} -rf ${STAGEDIR}/${R}
142 _USES_install+= 270:do-generate-deinstall-script
143 do-generate-deinstall-script:
144 @${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${PORTSDIR}/devel/pear/pear-deinstall.in > ${WRKDIR}/pear-deinstall
146 _USES_install+= 550:pear-post-install
148 @${MKDIR} ${STAGEDIR}${PKGREGDIR}
149 @${INSTALL_DATA} ${WRKDIR}/package.xml ${STAGEDIR}${PKGREGDIR}
152 @${PEAR} package-dependencies ${WRKDIR}/package.xml