Tweak net/gssdp version 0.14.10
[dports.git] / devel / pear / bsd.pear.mk
1 # $FreeBSD$
2
3 # Common code for pear- ports.
4
5 MASTER_SITES?=  http://pear.php.net/get/ \
6                 http://us.pear.php.net/get/ \
7                 http://de.pear.php.net/get/
8 .if defined(PEAR_DIST_SUFX)
9 EXTRACT_SUFX=   ${PEAR_DIST_SUFX}
10 .else
11 EXTRACT_SUFX=   .tgz
12 .endif
13 DIST_SUBDIR?=   PEAR
14
15 RUN_DEPENDS+=   pear:${PORTSDIR}/devel/pear
16
17 .if defined(PEAR_CATSRC)
18 PEARWRKSRC?=    ${WRKSRC}/${CATEGORY}
19 .else
20 PEARWRKSRC?=    ${WRKSRC}
21 .endif
22
23 .if !defined(USE_PHPIZE)
24 NO_BUILD=       yes
25 .endif
26
27 .if defined(PEAR_CHANNEL) && ${PEAR_CHANNEL} != ""
28 PKGNAMEPREFIX?= pear-${PEAR_CHANNEL}-
29 PEARPKGREF=     ${PEAR_CHANNEL}/${PORTNAME}
30 .else
31 PKGNAMEPREFIX?= pear-
32 PEARPKGREF=     ${PORTNAME}
33 .endif
34
35 .if exists(${LOCALBASE}/bin/php-config)
36 PHP_BASE!=      ${LOCALBASE}/bin/php-config --prefix
37 .else
38 PHP_BASE=       ${LOCALBASE}
39 .endif
40 PEAR=           ${LOCALBASE}/bin/pear
41 LPEARDIR=       share/pear
42 LPKGREGDIR=     ${LPEARDIR}/packages/${PKGNAME}
43 LDATADIR=       ${LPEARDIR}/data/${PORTNAME}
44 LDOCSDIR=       share/doc/pear/${PORTNAME}
45 LEXAMPLESDIR=   share/examples/pear/${PORTNAME}
46 LSQLSDIR=       ${LPEARDIR}/sql/${PORTNAME}
47 LSCRIPTSDIR=    bin
48 LTESTSDIR=      ${LPEARDIR}/tests/${PORTNAME}
49 PEARDIR=        ${PHP_BASE}/${LPEARDIR}
50 PKGREGDIR=      ${PHP_BASE}/${LPKGREGDIR}
51 DATADIR=        ${PHP_BASE}/${LDATADIR}
52 DOCSDIR=        ${PHP_BASE}/${LDOCSDIR}
53 EXAMPLESDIR=    ${PHP_BASE}/${LEXAMPLESDIR}
54 SQLSDIR=        ${PHP_BASE}/${LSQLSDIR}
55 SCRIPTFILESDIR= ${LOCALBASE}/bin
56 TESTSDIR=       ${PHP_BASE}/${LTESTSDIR}
57 .if defined(CATEGORY) && !empty(CATEGORY)
58 LINSTDIR=       ${LPEARDIR}/${CATEGORY}
59 .else
60 LINSTDIR=       ${LPEARDIR}
61 .endif
62 INSTDIR=        ${PHP_BASE}/${LINSTDIR}
63
64 SUB_LIST+=      PKG_NAME=${PEARPKGREF}
65
66 .if !defined(USE_PHPIZE) && !exists(${.CURDIR}/pkg-plist)
67 PLIST=          ${WRKDIR}/PLIST
68 .endif
69 PLIST_SUB+=     PEARDIR=${LPEARDIR} PKGREGDIR=${LPKGREGDIR} \
70                 TESTSDIR=${LTESTSDIR} INSTDIR=${LINSTDIR} SQLSDIR=${LSQLSDIR} \
71                 SCRIPTFILESDIR=${LCRIPTSDIR}
72
73 PKGINSTALL?=    ${PORTSDIR}/devel/pear/pear-install
74 PKGDEINSTALL?=  ${WRKDIR}/pear-deinstall
75
76 FILES?=
77 DATA?=
78 DOCS?=
79 EXAMPLES?=
80 SQLS?=
81 SCRIPTFILES?=
82 TESTS?=
83 _DATADIR?=      data
84 _DOCSDIR?=      docs
85 _EXAMPLESDIR?=  examples
86 _SQLSDIR?=      sql
87 _TESTSDIR?=     tests
88
89 # this is an easy way to eliminate duplicate entries in a variable :)
90 # if someone knows how to achieve the result without this terrible
91 # hack, please tell me!
92 .for v in FILES DOCS TESTS EXAMPLES SQLS SCRIPTFILES DATA
93 X${v}DIRS=      ${${v}:M*/*:C;/[^/]+$;;}
94 . for XD in ${X${v}DIRS}
95 ALREADYTHERE=   0
96 .  for D in ${${v}DIRS}
97 DD=     ${D}
98 .   if ${DD} == ${XD}
99 ALREADYTHERE=   1
100 .   endif
101 .  endfor
102 .  if ${ALREADYTHERE} == 0
103 ${v}DIRS+=              ${XD}
104 .  endif
105 . endfor
106 .endfor
107
108 pear-pre-install:
109 .if exists(${LOCALBASE}/lib/php.DIST_PHP)       \
110         || exists(${PHP_BASE}/lib/php.DIST_PHP) \
111         || exists(${LOCALBASE}/.PEAR.pkg)       \
112         || exists(${PHP_BASE}/.PEAR.pkg)
113         @${ECHO_MSG} ""
114         @${ECHO_MSG} "  Sorry, the PEAR structure has been modified;"
115         @${ECHO_MSG} "  Please deinstall your installed pear- ports."
116         @${ECHO_MSG} ""
117         @${FALSE}
118 .endif
119
120 DIRFILTER=      ${SED} -En '\:^.*/[^/]*$$:s:^(.+)/[^/]*$$:\1:p' \
121                     | ( while read r; do \
122                         C=1; \
123                         while [ $$C = 1 ]; do \
124                             echo $$r; \
125                             if echo $$r | ${GREP} '/' > /dev/null; then \
126                                 r=`${DIRNAME} $$r`; \
127                             else  \
128                                 C=0; \
129                             fi; \
130                         done; \
131                     done \
132               ) | ${SORT} -ur
133
134 .if !defined(USE_PHPIZE)
135 do-generate-plist:
136 . if !exists(${.CURDIR}/pkg-plist)
137         @${ECHO_MSG} "===>   Generating packing list"; \
138         (for file in ${FILES}; do echo "${LINSTDIR}/$${file}"; done; \
139         for file in ${TESTS}; do echo "${LTESTSDIR}/$${file}"; done; \
140         for file in ${DATA}; do echo "${LDATADIR}/$${file}"; done; \
141         for file in ${SQLS}; do echo "${LSQLSDIR}/$${file}"; done; \
142         for file in ${SCRIPTFILES}; do echo "${LSCRIPTSDIR}/$${file}"; done; \
143         for file in ${DOCS}; do echo "%%PORTDOCS%%${LDOCSDIR}/$${file}"; done; \
144         for file in ${EXAMPLES}; do echo "%%PORTDOCS%%${LEXAMPLESDIR}/$${file}"; done; \
145         echo "${LPKGREGDIR}/package.xml"; \
146         for d in ${FILES} ${FILES:H}; do echo $${d}; done | ${DIRFILTER} | \
147             while read dir; do echo "@dirrmtry ${LINSTDIR}/$${dir}"; done; \
148         for d in ${TESTS}; do echo $${d}; done | ${DIRFILTER} | \
149             while read dir; do echo "@dirrm ${LTESTSDIR}/$${dir}"; done; \
150         for d in ${DATA}; do echo $${d}; done | ${DIRFILTER} | \
151             while read dir; do echo "@dirrm ${LDATADIR}/$${dir}"; done; \
152         for d in ${SQLS}; do echo $${d}; done | ${DIRFILTER} | \
153             while read dir; do echo "@dirrm ${LSQLSDIR}/$${dir}"; done; \
154         for d in ${DOCS}; do echo $${d}; done | ${DIRFILTER} | \
155             while read dir; do echo "%%PORTDOCS%%@dirrm ${LDOCSDIR}/$${dir}"; done; \
156         for d in ${EXAMPLES}; do echo $${d}; done | ${DIRFILTER} | \
157             while read dir; do echo "%%PORTDOCS%%@dirrm ${LEXAMPLESDIR}/$${dir}"; done; \
158         if [ -n "${TESTS}" ]; then echo "@dirrm ${LTESTSDIR}"; fi; \
159         if [ -n "${DATA}" ]; then echo "@dirrm ${LDATADIR}"; fi; \
160         if [ -n "${SQLS}" ]; then echo "@dirrm ${LSQLSDIR}"; fi; \
161         if [ -n "${DOCS}" ]; then echo "%%PORTDOCS%%@dirrm ${LDOCSDIR}"; fi; \
162         if [ -n "${EXAMPLES}" ]; then echo "%%PORTDOCS%%@dirrm ${LEXAMPLESDIR}"; fi; \
163         echo "@dirrm ${LPKGREGDIR}"; \
164         if [ -n "${CATEGORY}" ]; then echo "@dirrmtry ${LINSTDIR}"; fi; \
165         if [ -n "${CATEGORY:M*/*}" ]; then echo "@dirrmtry ${LINSTDIR:H}"; fi; \
166         echo "@dirrmtry ${LPKGREGDIR:H}"; \
167         echo "@dirrmtry ${LDOCSDIR:H}"; \
168         echo "@dirrmtry ${LEXAMPLESDIR:H}"; \
169         echo "@dirrmtry ${LTESTSDIR:H}"; \
170         echo "@dirrmtry ${LDATADIR:H}"; \
171         echo "@dirrmtry ${LSQLSDIR:H}") > ${PLIST}
172 . endif
173
174 . for t in files docs tests sqls scriptfiles examples data
175 .  if !target(do-install-${t}-msg)
176 do-install-${t}-msg: .USE
177 .  endif
178 . endfor
179
180 do-autogenerate-plist: patch
181         @${ECHO_MSG} "===>   Generating packing list with pear"
182         @${LN} -sf ${WRKDIR}/package.xml ${WRKSRC}/package.xml
183         @cd ${WRKSRC} && ${PEAR} install -n -f -P ${WRKDIR}/inst package.xml > /dev/null 2> /dev/null
184 .for R in .channels .depdb .depdblock .filemap .lock .registry
185         @${RM} -rf ${WRKDIR}/inst/${PREFIX}/${LPEARDIR}/${R}
186 .endfor
187         @FILES=`cd ${WRKDIR}/inst && ${FIND} . -type f | ${CUT} -c 2- | \
188         ${GREP} -v -E "^${PREFIX}/"` || exit 0; \
189         ${ECHO_CMD} $${FILES}; if ${TEST} -n "$${FILES}"; then \
190         ${ECHO_CMD} "Cannot generate packing list: package files outside PREFIX"; \
191         exit 1; fi;
192         @${ECHO_CMD} "${LPKGREGDIR}/package.xml" > ${PLIST}
193 # pkg_install needs to escape $ in directory name while pkg does not
194         @cd ${WRKDIR}/inst/${PREFIX} && ${FIND} . -type f | ${SORT} \
195         | ${CUT} -c 3- >> ${PLIST}
196         @cd ${WRKDIR}/inst/${PREFIX} && ${FIND} . -type d | ${SORT} -r | \
197         ${CUT} -c 3- | \
198         while read d ; do \
199                 if [ ! -d "${LOCALBASE}/$${d}" ]; then \
200                         ${ECHO_CMD} "@dirrmtry $${d}" >> ${PLIST}; \
201                 fi; \
202         done
203         @${ECHO_CMD} "@dirrm ${LPKGREGDIR}" >> ${PLIST}
204         @${ECHO_CMD} "@dirrmtry ${LPKGREGDIR:H}" >> ${PLIST}
205
206 . if defined(PEAR_AUTOINSTALL)
207 pre-install:    pear-pre-install do-autogenerate-plist do-generate-deinstall-script
208 do-install:     do-auto-install pear-post-install
209
210 . else
211 pre-install:    pear-pre-install do-generate-plist do-generate-deinstall-script
212 do-install:     do-install-files do-install-docs do-install-tests do-install-sqls \
213                 do-install-scriptfiles do-install-examples do-install-data \
214                 pear-post-install
215 . endif
216
217 do-auto-install:
218         @${ECHO_MSG} "===>   Installing package with pear"
219         @cd ${WRKSRC} && ${PEAR} install -n -f -P ${STAGEDIR} package.xml
220 # Clean up orphans re-generated by pear-install
221 .for R in .channels .depdb .depdblock .filemap .lock .registry
222         @${RM} -rf ${STAGEDIR}${PREFIX}/${LPEARDIR}/${R}
223 .endfor
224
225 do-install-files: do-install-files-msg
226         @${MKDIR} ${STAGEDIR}${INSTDIR}
227 . for dir in ${FILESDIRS}
228         @${MKDIR} ${STAGEDIR}${INSTDIR}/${dir}
229 . endfor
230 . for file in ${FILES}
231         @${INSTALL_DATA} ${PEARWRKSRC}/${file} ${STAGEDIR}${INSTDIR}/${file}
232 . endfor
233
234 do-install-docs: do-install-docs-msg
235 . if !defined(NOPORTDOCS) && !empty(DOCS)
236         @${ECHO_MSG} "===> Installing documentation in ${DOCSDIR}."
237         @${MKDIR} ${STAGEDIR}${DOCSDIR}
238 .  for dir in ${DOCSDIRS}
239         @${MKDIR} ${STAGEDIR}${DOCSDIR}/${dir}
240 .  endfor
241 .  for file in ${DOCS}
242         @${INSTALL_DATA} ${WRKSRC}/${_DOCSDIR}/${file} ${STAGEDIR}${DOCSDIR}/${file}
243 .  endfor
244 . endif
245
246 do-install-tests: do-install-tests-msg
247 . if !empty(TESTS)
248         @${ECHO_MSG} "===> Installing tests in ${TESTSDIR}."
249         @${MKDIR} ${STAGEDIR}${TESTSDIR}
250 .  for dir in ${TESTSDIRS}
251         @${MKDIR} ${STAGEDIR}${TESTSDIR}/${dir}
252 .  endfor
253 .  for file in ${TESTS}
254         @${INSTALL_DATA} ${WRKSRC}/${_TESTSDIR}/${file} ${STAGEDIR}${TESTSDIR}/${file}
255 .  endfor
256 . endif
257
258 do-install-data: do-install-data-msg
259 . if !empty(DATA)
260         @${ECHO_MSG} "===> Installing data in ${DATADIR}."
261         @${MKDIR} ${STAGEDIR}${DATADIR}
262 .  for dir in ${DATADIRS}
263         @${MKDIR} ${STAGEDIR}${DATADIR}/${dir}
264 .  endfor
265 .  for file in ${DATA}
266         @${INSTALL_DATA} ${WRKSRC}/${_DATADIR}/${file} ${STAGEDIR}${DATADIR}/${file}
267 .  endfor
268 . endif
269
270 do-install-sqls: do-install-sqls-msg
271 . if !empty(SQLS)
272         @${ECHO_MSG} "===> Installing sqls in ${SQLSDIR}."
273         @${MKDIR} ${STAGEDIR}${SQLSDIR}
274 .  for dir in ${SQLSDIRS}
275         @${MKDIR} ${STAGEDIR}${SQLSDIR}/${dir}
276 .  endfor
277 .  for file in ${SQLS}
278         @${INSTALL_DATA} ${WRKSRC}/${_SQLSDIR}/${file} ${STAGEDIR}${SQLSDIR}/${file}
279 .  endfor
280 . endif
281
282 do-install-scriptfiles: do-install-scriptfiles-msg
283 . if !empty(SCRIPTFILES)
284         @${ECHO_MSG} "===> Installing scripts in ${SCRIPTFILESDIR}."
285 .  for file in ${SCRIPTFILES}
286         @${CP} ${WRKSRC}/pear-${file} ${WRKSRC}/${file}
287         @${REINPLACE_CMD} -e "s|@php_bin@|${SCRIPTFILESDIR}/php|g" ${WRKSRC}/${file}
288         @${REINPLACE_CMD} -e "s|@php_dir@|${PREFIX}/lib/php|g" ${WRKSRC}/${file}
289         @${REINPLACE_CMD} -e "s|@include_path@|${PREFIX}/${LPEARDIR}|g" ${WRKSRC}/${file}
290         @${INSTALL_SCRIPT} ${WRKSRC}/${file} ${STAGEDIR}${SCRIPTFILESDIR}/${file}
291 .  endfor
292 . endif
293
294 do-install-examples: do-install-examples-msg
295 . if !defined(NOPORTDOCS) && !empty(EXAMPLES)
296         @${ECHO_MSG} "===> Installing examples in ${EXAMPLESDIR}."
297         @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
298 .  for dir in ${EXAMPLESDIRS}
299         @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/${dir}
300 .  endfor
301 .  for file in ${EXAMPLES}
302         @${INSTALL_DATA} ${WRKSRC}/${_EXAMPLESDIR}/${file} ${STAGEDIR}${EXAMPLESDIR}/${file}
303 .  endfor
304 . endif
305 .endif
306
307 do-generate-deinstall-script:
308         @${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${PORTSDIR}/devel/pear/pear-deinstall.in > ${WRKDIR}/pear-deinstall
309
310 pear-post-install:
311         @${MKDIR} ${STAGEDIR}${PKGREGDIR}
312         @${INSTALL_DATA} ${WRKDIR}/package.xml ${STAGEDIR}${PKGREGDIR}
313
314 show-depends: patch
315         @${PEAR} package-dependencies ${WRKDIR}/package.xml