Sync Mk with ports
[dports.git] / Mk / Uses / pear.mk
1 # $FreeBSD$
2 #
3 # Use the PHP Extension and Application Repository
4 #
5 # Feature:      pear
6 # Usage:        USES=pear
7 # Valid ARGS:   none
8 #
9 # MAINTAINER=   portmgr@FreeBSD.org
10
11 .if !defined(_INCLUDE_USES_PEAR_MK)
12 _INCLUDE_USES_PEAR_MK=  yes
13 _USES_POST+=    pear
14
15 .if !empty(pear_ARGS)
16 IGNORE+=        USES=pear takes not arguments
17 .endif
18
19 MASTER_SITES?=  http://pear.php.net/get/ \
20                 http://us.pear.php.net/get/ \
21                 http://de.pear.php.net/get/
22
23 EXTRACT_SUFX?=  .tgz
24 DIST_SUBDIR?=   PEAR
25
26 BUILD_DEPENDS+= pear:devel/pear
27 RUN_DEPENDS+=   pear:devel/pear
28
29 .if !defined(USE_PHPIZE)
30 NO_BUILD=       yes
31 .endif
32
33 .if defined(PEAR_CHANNEL) && ${PEAR_CHANNEL} != ""
34 PKGNAMEPREFIX?= pear-${PEAR_CHANNEL}-
35 PEARPKGREF=     ${PEAR_CHANNEL}/${PORTNAME}
36 .else
37 PKGNAMEPREFIX?= pear-
38 PEARPKGREF=     ${PORTNAME}
39 .endif
40
41 .if exists(${LOCALBASE}/bin/php-config)
42 PHP_BASE!=      ${LOCALBASE}/bin/php-config --prefix
43 .else
44 PHP_BASE=       ${LOCALBASE}
45 .endif
46 PEAR=           ${LOCALBASE}/bin/pear
47 LPEARDIR=       share/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}
53 LSCRIPTSDIR=    bin
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}
65 .else
66 LINSTDIR=       ${LPEARDIR}
67 .endif
68 INSTDIR=        ${PHP_BASE}/${LINSTDIR}
69
70 SUB_LIST+=      PKG_NAME=${PEARPKGREF}
71
72 .if !defined(USE_PHPIZE) && !exists(${.CURDIR}/pkg-plist)
73 PLIST=          ${WRKDIR}/PLIST
74 .endif
75 PLIST_SUB+=     PEARDIR=${LPEARDIR} PKGREGDIR=${LPKGREGDIR} \
76                 TESTSDIR=${LTESTSDIR} INSTDIR=${LINSTDIR} SQLSDIR=${LSQLSDIR} \
77                 SCRIPTFILESDIR=${LCRIPTSDIR}
78
79 PKGINSTALL?=    ${PORTSDIR}/devel/pear/pear-install
80 PKGDEINSTALL?=  ${WRKDIR}/pear-deinstall
81
82 .endif
83 .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PEAR_POST_MK)
84 _INCLUDE_USES_PEAR_POST_MK=     yes
85
86 _USES_install+= 250:pear-pre-install
87 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)
92         @${ECHO_MSG} ""
93         @${ECHO_MSG} "  Sorry, the PEAR structure has been modified;"
94         @${ECHO_MSG} "  Please deinstall your installed pear- ports."
95         @${ECHO_MSG} ""
96         @${FALSE}
97 .endif
98
99 DIRFILTER=      ${SED} -En '\:^.*/[^/]*$$:s:^(.+)/[^/]*$$:\1:p' \
100                     | ( while read r; do \
101                         C=1; \
102                         while [ $$C = 1 ]; do \
103                             echo $$r; \
104                             if echo $$r | ${GREP} '/' > /dev/null; then \
105                                 r=`${DIRNAME} $$r`; \
106                             else  \
107                                 C=0; \
108                             fi; \
109                         done; \
110                     done \
111               ) | ${SORT} -ur
112
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}
122 .endfor
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"; \
127         exit 1; fi;
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}
132
133 do-install:
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}
139 .endfor
140 .endif
141
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
145
146 _USES_install+= 550:pear-post-install
147 pear-post-install:
148         @${MKDIR} ${STAGEDIR}${PKGREGDIR}
149         @${INSTALL_DATA} ${WRKDIR}/package.xml ${STAGEDIR}${PKGREGDIR}
150
151 show-depends: patch
152         @${PEAR} package-dependencies ${WRKDIR}/package.xml
153
154 .endif