1 | # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 |
---|
2 | # $Id: Portfile 71588 2010-09-17 05:21:24Z ryandesign@macports.org $ |
---|
3 | |
---|
4 | PortSystem 1.0 |
---|
5 | |
---|
6 | name php5 |
---|
7 | conflicts php5-devel php52 |
---|
8 | # Keep version of php5 in sync with bundled php5 extension ports. |
---|
9 | # Increment revision of php5-eaccelerator when updating version of php5. |
---|
10 | epoch 1 |
---|
11 | version 5.3.20 |
---|
12 | revision 2 |
---|
13 | set major [lindex [split ${version} .] 0] |
---|
14 | set my_name php${major} |
---|
15 | dist_subdir ${my_name} |
---|
16 | categories lang php www |
---|
17 | maintainers ryandesign jwa |
---|
18 | platforms darwin freebsd |
---|
19 | license PHP-3.01 |
---|
20 | use_parallel_build yes |
---|
21 | |
---|
22 | description PHP: Hypertext Preprocessor |
---|
23 | |
---|
24 | long_description PHP is a widely-used general-purpose scripting \ |
---|
25 | language that is especially suited for developing \ |
---|
26 | web sites, but can also be used for command-line \ |
---|
27 | scripting. |
---|
28 | |
---|
29 | homepage http://www.php.net/ |
---|
30 | master_sites php |
---|
31 | |
---|
32 | distname php-${version} |
---|
33 | use_bzip2 yes |
---|
34 | |
---|
35 | checksums \ |
---|
36 | [suffix ${distname}] \ |
---|
37 | md5 00241b9e89e93adf3baac32c56211e4e \ |
---|
38 | sha1 64d505884bc43ae3bf1f50c1d4b1cc4a8b749962 \ |
---|
39 | rmd160 e50668e3376b8790cf47f3b6cd91e4a7004f5cd5 |
---|
40 | |
---|
41 | depends_build port:pkgconfig \ |
---|
42 | port:autoconf213 |
---|
43 | |
---|
44 | depends_lib path:bin/gsed:gsed \ |
---|
45 | port:libtool \ |
---|
46 | port:libevent \ |
---|
47 | port:libxml2 \ |
---|
48 | port:bzip2 \ |
---|
49 | port:mhash \ |
---|
50 | port:pcre \ |
---|
51 | port:readline \ |
---|
52 | port:zlib |
---|
53 | |
---|
54 | # Use -p1 to accommodate the Suhosin patch |
---|
55 | patch.pre_args -p1 |
---|
56 | patchfiles patch-configure.in.diff \ |
---|
57 | patch-scripts-php-config.in.diff |
---|
58 | |
---|
59 | use_autoconf yes |
---|
60 | autoconf.cmd ${prefix}/bin/autoconf213 |
---|
61 | |
---|
62 | set phpinidir ${prefix}/etc/${my_name} |
---|
63 | set extraphpinidir ${prefix}/var/db/${my_name} |
---|
64 | |
---|
65 | destroot.keepdirs ${destroot}${extraphpinidir} |
---|
66 | |
---|
67 | if {${configure.compiler} == "clang"} { |
---|
68 | configure.compiler llvm-gcc-4.2 |
---|
69 | } |
---|
70 | |
---|
71 | configure.args --mandir=${prefix}/share/man \ |
---|
72 | --infodir=${prefix}/share/info \ |
---|
73 | --with-config-file-path=${phpinidir} \ |
---|
74 | --with-config-file-scan-dir=${extraphpinidir} \ |
---|
75 | --disable-all \ |
---|
76 | --enable-bcmath \ |
---|
77 | --enable-ctype \ |
---|
78 | --enable-dom \ |
---|
79 | --enable-fileinfo \ |
---|
80 | --enable-filter \ |
---|
81 | --enable-hash \ |
---|
82 | --enable-json \ |
---|
83 | --enable-libxml \ |
---|
84 | --enable-pdo \ |
---|
85 | --enable-phar \ |
---|
86 | --enable-session \ |
---|
87 | --enable-simplexml \ |
---|
88 | --enable-tokenizer \ |
---|
89 | --enable-xml \ |
---|
90 | --enable-xmlreader \ |
---|
91 | --enable-xmlwriter \ |
---|
92 | --with-bz2=${prefix} \ |
---|
93 | --with-mhash=${prefix} \ |
---|
94 | --with-pcre-regex=${prefix} \ |
---|
95 | --with-readline=${prefix} \ |
---|
96 | --with-libxml-dir=${prefix} \ |
---|
97 | --with-zlib=${prefix} \ |
---|
98 | --without-pear \ |
---|
99 | --disable-cgi |
---|
100 | |
---|
101 | # php5-mysql +mysqlnd needs mysqlnd support compiled into php |
---|
102 | configure.env-append PHP_MYSQLND_ENABLED=yes |
---|
103 | |
---|
104 | configure.universal_args-delete --disable-dependency-tracking |
---|
105 | |
---|
106 | platform darwin 10 { |
---|
107 | configure.env-append LIBS=-lresolv |
---|
108 | } |
---|
109 | |
---|
110 | variant no_web conflicts apache apache2 fastcgi description {Don't include any web server support} {} |
---|
111 | |
---|
112 | # Build an Apache 1 module. On Mac OS X, it uses Apple's provided Apache 1 server. |
---|
113 | # On other platforms, the MacPorts apache port is used. Keep the options here |
---|
114 | # in sync with those in the relevant part of the post-destroot phase. |
---|
115 | variant apache conflicts apache2 no_web description {Add Apache 1 web server module} { |
---|
116 | if { ! [variant_isset macosx] && (![info exists os.subplatform] || ${os.subplatform} != "macosx") } { |
---|
117 | depends_lib-append \ |
---|
118 | port:apache |
---|
119 | configure.args-append \ |
---|
120 | --with-apxs=${prefix}/sbin/apxs |
---|
121 | } else { |
---|
122 | destroot.violate_mtree yes |
---|
123 | configure.args-append \ |
---|
124 | --with-apxs=/usr/sbin/apxs |
---|
125 | } |
---|
126 | } |
---|
127 | |
---|
128 | # Build an Apache 2.2 module. Keep the options here in sync with those in the |
---|
129 | # relevant part of the post-destroot phase. |
---|
130 | variant apache2 conflicts apache no_web description {Add Apache 2.2 web server module} { |
---|
131 | pre-configure { |
---|
132 | # Checking for mod_cgi.so is a convenient way to verify apache2 is using its |
---|
133 | # +preforkmpm variant. (+eventmpm and +workermpm instead provide mod_cgid.so.) |
---|
134 | if {![file exists ${prefix}/apache2/modules/mod_cgi.so]} { |
---|
135 | ui_error "To use ${name} with the +apache2 variant, apache2 must be installed with the +preforkmpm variant." |
---|
136 | return -code error "incompatible apache2 installation" |
---|
137 | } |
---|
138 | } |
---|
139 | destroot.violate_mtree yes |
---|
140 | depends_lib-append \ |
---|
141 | port:apache2 |
---|
142 | configure.args-append \ |
---|
143 | --with-apxs2=${prefix}/apache2/bin/apxs |
---|
144 | } |
---|
145 | |
---|
146 | # Build a FastCGI binary. Keep the options here in sync with those in the |
---|
147 | # relevant part of the post-destroot phase. |
---|
148 | variant fastcgi conflicts no_web description {Add FastCGI web server binary} { |
---|
149 | if { ![variant_isset apache] && ![variant_isset apache2] } { |
---|
150 | configure.args-delete \ |
---|
151 | --disable-cgi |
---|
152 | configure.args-append \ |
---|
153 | --enable-cgi \ |
---|
154 | --enable-fpm \ |
---|
155 | --with-fpm-user=_www \ |
---|
156 | --with-fpm-group=_www |
---|
157 | } |
---|
158 | startupitem.create yes |
---|
159 | startupitem.name php-fpm |
---|
160 | startupitem.executable ${prefix}/bin/php-fpm |
---|
161 | startupitem.pidfile auto ${prefix}/var/run/php-fpm.pid |
---|
162 | } |
---|
163 | |
---|
164 | foreach {old_variant new_port} { |
---|
165 | gmp gmp |
---|
166 | imap imap |
---|
167 | macports_snmp snmp |
---|
168 | mssql mssql |
---|
169 | mysql4 mysql |
---|
170 | mysql5 mysql |
---|
171 | mysqlnd mysql |
---|
172 | oracle oracle |
---|
173 | pcntl pcntl |
---|
174 | postgresql82 postgresql |
---|
175 | postgresql83 postgresql |
---|
176 | pspell pspell |
---|
177 | snmp snmp |
---|
178 | sockets sockets |
---|
179 | sqlite sqlite |
---|
180 | tidy tidy |
---|
181 | } { |
---|
182 | eval [subst { |
---|
183 | variant ${old_variant} description "Obsolete; install ${my_name}-${new_port} port instead" { |
---|
184 | pre-configure { |
---|
185 | ui_msg "The +${old_variant} variant is obsolete. Please install the ${my_name}-${new_port} port instead." |
---|
186 | } |
---|
187 | } |
---|
188 | }] |
---|
189 | } |
---|
190 | |
---|
191 | variant ipc description {Add semaphore, shared memory and IPC functions} { |
---|
192 | configure.args-append \ |
---|
193 | --enable-shmop \ |
---|
194 | --enable-sysvsem \ |
---|
195 | --enable-sysvshm \ |
---|
196 | --enable-sysvmsg |
---|
197 | } |
---|
198 | |
---|
199 | if {![variant_isset apache] && ![variant_isset apache2] && ![variant_isset fastcgi] && ![variant_isset no_web]} { |
---|
200 | default_variants +apache2 |
---|
201 | } |
---|
202 | |
---|
203 | variant pear description {Add PEAR} { |
---|
204 | configure.args-delete \ |
---|
205 | --without-pear |
---|
206 | configure.args-append \ |
---|
207 | --with-pear=${prefix}/lib/php |
---|
208 | destroot.target-append \ |
---|
209 | install-pear |
---|
210 | destroot.args-append \ |
---|
211 | PHP_PEAR_INSTALL_DIR=${prefix}/lib/php |
---|
212 | post-destroot { |
---|
213 | #nuke pear-stuff in ${destroot} |
---|
214 | system -W ${destroot} "rm -rf .channels .depdb .depdblock .filemap .lock" |
---|
215 | |
---|
216 | system "if \[ -f ${prefix}/lib/php/.depdblock \]; then rm -f ${destroot}${prefix}/lib/php/.depdblock; fi" |
---|
217 | system "if \[ -f ${prefix}/lib/php/.depdb \]; then rm -f ${destroot}${prefix}/lib/php/.depdb; fi" |
---|
218 | system "if \[ -f ${prefix}/lib/php/.filemap \]; then rm -f ${destroot}${prefix}/lib/php/.filemap; fi" |
---|
219 | system "if \[ -f ${prefix}/lib/php/.lock \]; then rm -f ${destroot}${prefix}/lib/php/.lock; fi" |
---|
220 | system "if \[ -d ${prefix}/lib/php/.channels \]; then rm -rf ${destroot}${prefix}/lib/php/.channels; fi" |
---|
221 | } |
---|
222 | } |
---|
223 | |
---|
224 | variant suhosin description {Add Suhosin patch} { |
---|
225 | pre-fetch { |
---|
226 | if {"darwin" == ${os.platform} && ${os.major} < 9} { |
---|
227 | ui_error "The suhosin variant requires Mac OS X 10.5 or greater." |
---|
228 | return -code error "incompatible Mac OS X version" |
---|
229 | } |
---|
230 | set suhosin_available 1 |
---|
231 | if {!${suhosin_available}} { |
---|
232 | ui_error "There is no suhosin patch for PHP ${version} yet. Please check back later." |
---|
233 | } |
---|
234 | if {![file exists ${prefix}/var/db/php5/suhosin.ini]} { |
---|
235 | ui_msg "You may also be interested in the suhosin extension, a related but different piece of software. See the php5-suhosin port." |
---|
236 | } |
---|
237 | if {!${suhosin_available}} { |
---|
238 | return -code error "unavailable variant" |
---|
239 | } |
---|
240 | } |
---|
241 | set suhosin_patch_version ${version}-0.9.10 |
---|
242 | set suhosin_patch suhosin-patch-${suhosin_patch_version}.patch.gz |
---|
243 | patch_sites-append http://download.suhosin.org/ |
---|
244 | patchfiles-append patch-suhosin-before.diff |
---|
245 | patchfiles-append ${suhosin_patch} |
---|
246 | patchfiles-append patch-suhosin-after.diff |
---|
247 | checksums-append ${suhosin_patch} \ |
---|
248 | rmd160 ce43921fd9b183b154713ecda98294f6c68d5f22 \ |
---|
249 | sha256 4438caeab0a10c6c94aee9f7eaa703f5799f97d4e0579f43a947bb7314e38317 |
---|
250 | } |
---|
251 | |
---|
252 | destroot.args INSTALL_ROOT=${destroot} |
---|
253 | |
---|
254 | destroot.target install-cli install-build install-headers install-programs |
---|
255 | |
---|
256 | post-destroot { |
---|
257 | # Copy the Apache 1 module. |
---|
258 | if { [variant_isset apache] } { |
---|
259 | xinstall -m 755 -d ${destroot}${prefix}/libexec/apache \ |
---|
260 | ${destroot}${prefix}/etc/apache/extra |
---|
261 | xinstall -m 755 ${worksrcpath}/libs/libphp5.so ${destroot}${prefix}/libexec/apache/ |
---|
262 | xinstall -m 755 -c ${filespath}/mod_php.conf ${destroot}$prefix/etc/apache/extra |
---|
263 | } |
---|
264 | |
---|
265 | # Copy the Apache 2.2 module. |
---|
266 | if { [variant_isset apache2] } { |
---|
267 | xinstall -m 755 -d ${destroot}${prefix}/apache2/modules \ |
---|
268 | ${destroot}${prefix}/apache2/conf/extra |
---|
269 | xinstall -m 755 ${worksrcpath}/libs/libphp5.so ${destroot}${prefix}/apache2/modules/ |
---|
270 | xinstall -m 755 -c ${filespath}/mod_php.conf ${destroot}${prefix}/apache2/conf/extra |
---|
271 | } |
---|
272 | |
---|
273 | if { [variant_isset fastcgi] } { |
---|
274 | # If we've built an Apache module (any version) then the FastCGI binary |
---|
275 | # will not have been built, so we need to run through the whole process |
---|
276 | # again and build just the FastCGI binary. Keep the options here in sync |
---|
277 | # with the options specified in the apache and apache2 variants. |
---|
278 | if { [variant_isset apache] } { |
---|
279 | if { ![variant_isset macosx] && (![info exists os.subplatform] || ${os.subplatform} != "macosx") } { |
---|
280 | configure.args-delete \ |
---|
281 | --with-apxs=${prefix}/sbin/apxs |
---|
282 | } else { |
---|
283 | configure.args-delete \ |
---|
284 | --with-apxs=/usr/sbin/apxs |
---|
285 | } |
---|
286 | } |
---|
287 | if { [variant_isset apache2] } { |
---|
288 | configure.args-delete \ |
---|
289 | --with-apxs2=${prefix}/apache2/bin/apxs |
---|
290 | } |
---|
291 | |
---|
292 | # Run the build again to get the FastCGI binary. Keep the options here |
---|
293 | # in sync with those in the fastcgi variant. |
---|
294 | if { [variant_isset apache] || [variant_isset apache2] } { |
---|
295 | configure.args-delete \ |
---|
296 | --disable-cgi |
---|
297 | configure.args-append \ |
---|
298 | --enable-cgi \ |
---|
299 | --enable-fpm \ |
---|
300 | --with-fpm-user=_www \ |
---|
301 | --with-fpm-group=_www |
---|
302 | ui_msg "$UI_PREFIX Configuring ${name} again for fastcgi" |
---|
303 | command_exec configure |
---|
304 | ui_msg "$UI_PREFIX Building ${name} again for fastcgi" |
---|
305 | command_exec build |
---|
306 | ui_msg "$UI_PREFIX Staging ${name} fastcgi into destroot" |
---|
307 | } |
---|
308 | |
---|
309 | # Move the FPM binary to the bin dir |
---|
310 | xinstall -m 755 ${worksrcpath}/sapi/fpm/php-fpm ${prefix}/bin |
---|
311 | } |
---|
312 | |
---|
313 | #file rename ${destroot}${prefix}/etc/pear.conf ${destroot}${prefix}/etc/pear.conf.sample |
---|
314 | |
---|
315 | # Copy the default php.ini files. |
---|
316 | xinstall -m 755 -d ${destroot}${phpinidir} |
---|
317 | xinstall -m 644 -W ${worksrcpath} \ |
---|
318 | php.ini-development \ |
---|
319 | php.ini-production \ |
---|
320 | ${destroot}${phpinidir} |
---|
321 | |
---|
322 | # Copy mysqlnd headers. |
---|
323 | xinstall -d ${destroot}${prefix}/include/php/ext/mysqlnd |
---|
324 | eval xinstall -m 644 [glob ${worksrcpath}/ext/mysqlnd/*.h] ${destroot}${prefix}/include/php/ext/mysqlnd |
---|
325 | } |
---|
326 | |
---|
327 | pre-activate { |
---|
328 | set filepath ${extraphpinidir}/.turd_${name} |
---|
329 | if {[file exists ${filepath}]} { |
---|
330 | delete ${filepath} |
---|
331 | } |
---|
332 | } |
---|
333 | |
---|
334 | post-activate { |
---|
335 | if {[file exists ${prefix}/etc/php.ini] && ![file exists ${phpinidir}/php.ini]} { |
---|
336 | move ${prefix}/etc/php.ini ${phpinidir} |
---|
337 | ui_msg "Your ${prefix}/etc/php.ini has been moved to ${phpinidir}/php.ini" |
---|
338 | ui_msg "" |
---|
339 | } |
---|
340 | if {![file exists ${phpinidir}/php.ini]} { |
---|
341 | ui_msg "To customize php, copy" |
---|
342 | ui_msg "${phpinidir}/php.ini-development (if this is a development server) or" |
---|
343 | ui_msg "${phpinidir}/php.ini-production (if this is a production server) to" |
---|
344 | ui_msg "${phpinidir}/php.ini and then make changes." |
---|
345 | } else { |
---|
346 | ui_msg "You may need to update your php.ini for any changes that have been made" |
---|
347 | ui_msg "in this version of php. Compare ${phpinidir}/php.ini with" |
---|
348 | ui_msg "${phpinidir}/php.ini-development (if this is a development server) or" |
---|
349 | ui_msg "${phpinidir}/php.ini-production (if this is a production server)." |
---|
350 | } |
---|
351 | |
---|
352 | if {[variant_isset fastcgi]} { |
---|
353 | ui_msg "* copy ${prefix}/etc/php-fpm.conf.sample to ${prefix}/etc/php-fpm.conf" |
---|
354 | } |
---|
355 | |
---|
356 | if {![variant_isset no_web]} { |
---|
357 | ui_msg "" |
---|
358 | ui_msg "If this is your first install, you need to activate PHP in your web server." |
---|
359 | if {![variant_isset fastcgi]} { |
---|
360 | if {[variant_isset apache]} { |
---|
361 | set moduledir ${prefix}/libexec/modules |
---|
362 | set apxs ${prefix}/apache/bin/apxs |
---|
363 | } |
---|
364 | if {[variant_isset apache2]} { |
---|
365 | set moduledir ${prefix}/apache2/modules |
---|
366 | set apxs ${prefix}/apache2/bin/apxs |
---|
367 | } |
---|
368 | ui_msg "" |
---|
369 | ui_msg "To enable PHP in Apache, run" |
---|
370 | ui_msg " cd ${moduledir}" |
---|
371 | ui_msg " ${apxs} -a -e -n \"${my_name}\" lib${my_name}.so" |
---|
372 | } |
---|
373 | } |
---|
374 | |
---|
375 | #ui_msg "* copy ${prefix}/etc/pear.conf.sample to ${prefix}/etc/pear.conf" |
---|
376 | } |
---|
377 | |
---|
378 | variant debug description {Enable debug support (useful to analyze a PHP-related core dump)} { |
---|
379 | configure.args-append --enable-debug |
---|
380 | } |
---|
381 | |
---|
382 | test.run yes |
---|
383 | |
---|
384 | livecheck.type regex |
---|
385 | livecheck.url ${homepage}downloads.php |
---|
386 | livecheck.regex get/php-(5\\.\[0-9.\]+)\\.tar |
---|