source: trunk/dports/lang/php/Portfile @ 132157

Last change on this file since 132157 was 132157, checked in by ryandesign@…, 5 years ago

php: update php56 to 5.6.5; update php55 to 5.5.21; update php54 to 5.4.37 (#46656)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 46.4 KB
Line 
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 132157 2015-01-25 01:55:01Z ryandesign@macports.org $
3
4PortSystem              1.0
5PortGroup               php 1.1
6PortGroup               compiler_blacklist_versions 1.0
7
8name                    php
9platforms               darwin freebsd
10maintainers             ryandesign
11license                 PHP-3.01
12default master_sites    {php:get/[lindex ${distfiles} 0]/from/this/mirror?dummy=}
13use_parallel_build      yes
14livecheck.type          none
15
16description             PHP: Hypertext Preprocessor
17
18long_description        PHP is a widely-used general-purpose scripting \
19                        language that is especially suited for developing \
20                        web sites, but can also be used for command-line \
21                        scripting.
22
23# The list of PHP branches this port provides.
24php.branches            5.2 5.3 5.4 5.5 5.6
25
26# Fix for users specifying the subport name with the wrong case.
27set subport             [string tolower ${subport}]
28
29# Get rootname from subport.
30regexp {^php\d+-(.+)$} ${subport} -> php.rootname
31
32# Returns true if the subport is a SAPI, false otherwise (extension, stub port).
33proc is_sapi_subport {} {
34    global name subport php.rootname
35    if {${name} eq ${subport}} {
36        return no
37    }
38    if {[regexp {^php\d+$} ${subport}]} {
39        return yes
40    }
41    return [expr {-1 != [lsearch -exact [list apache2handler cgi fpm] ${php.rootname}]}]
42}
43
44# Returns true if the subport is an extension, false otherwise (SAPI, stub port).
45proc is_extension_subport {} {
46    global name subport
47    if {${name} eq ${subport}} {
48        return no
49    }
50    return [expr {![is_sapi_subport]}]
51}
52
53if {![is_extension_subport]} {
54    categories          lang www
55    homepage            http://www.php.net/
56}
57
58set subport_branch      [php.branch_from_subport]
59
60# Remember to increment revision of ${php}-eaccelerator when updating version of ${php}.
61switch ${subport_branch} {
62    5.2 {
63        version         5.2.17
64        master_sites    http://museum.php.net/php5/
65        use_bzip2       yes
66        set suhosin_available       yes
67        set suhosin_patch_version   5.2.16-0.9.7
68        set suhosin_patch           suhosin-patch-${suhosin_patch_version}.patch.gz
69        checksums       ${distname}${extract.suffix} \
70                        md5     b27947f3045220faf16e4d9158cbfe13 \
71                        rmd160  567fa8d718b93fb83a89494c83a8bec224ac99e9 \
72                        sha256  e81beb13ec242ab700e56f366e9da52fd6cf18961d155b23304ca870e53f116c \
73                        ${suhosin_patch} \
74                        rmd160  b28b70faf136b3e04c5b483da0f4c2279378f43a \
75                        sha256  aae115a318d80b3f32cedf876e7a8e4b932febb1b0c743c0b398003ebe122f91
76    }
77    5.3 {
78        version         5.3.29
79        use_bzip2       yes
80        set suhosin_available       yes
81        set suhosin_patch_version   5.3.9-0.9.10
82        set suhosin_patch           suhosin-patch-${suhosin_patch_version}.patch.gz
83        checksums       ${distname}${extract.suffix} \
84                        md5     9469e240cbe6ac865aeaec89b253dd30 \
85                        rmd160  e57beb4fdda41bca81b5856161bc97f3c5e3e9da \
86                        sha256  c4e1cf6972b2a9c7f2777a18497d83bf713cdbecabb65d3ff62ba441aebb0091 \
87                        ${suhosin_patch} \
88                        rmd160  ce43921fd9b183b154713ecda98294f6c68d5f22 \
89                        sha256  4438caeab0a10c6c94aee9f7eaa703f5799f97d4e0579f43a947bb7314e38317
90    }
91    5.4 {
92        epoch           1
93        version         5.4.37
94        use_bzip2       yes
95        checksums       md5     1962086593e8e39342674be0483db439 \
96                        rmd160  9aa559cd4c4c63701133194b59ccff0f241a2241 \
97                        sha256  857bf6675eeb0ae9c3cd6f9ccdb2a9b7bf89dcfda7f0a80857638fe023f3a8ad
98    }
99    5.5 {
100        epoch           2
101        version         5.5.21
102        use_xz          yes
103        checksums       md5     79664ce44f7c93f355a25a3fe3dcc91b \
104                        rmd160  3664ad034b06bf92f48cfc2c3309407fc0a1ef6e \
105                        sha256  f2583540b2698d7d0ee9cfc071c2b56ccc64a52a2b53101511ba8df5b126d6d2
106    }
107    5.6 {
108        epoch           2
109        version         5.6.5
110        use_xz          yes
111        checksums       md5     541a480e1f8747219074c99f3e9edbcc \
112                        rmd160  041a17247eff41a9a5083a7bf1291d0932cf8c79 \
113                        sha256  c5ef4abaef8c1ea66dcfd5a075a2f357b666aff5c5b686fca7c78c1cfd64e996
114    }
115}
116#     5.7 {
117#         # When this becomes a stable version, remove the overrides for homepage,
118#         # master_sites and livecheck, and update php.latest_stable_branch in the
119#         # php-1.1 portgroup.
120#         version         5.7
121#         homepage        http://qa.php.net/
122#         master_sites    http://downloads.php.net/tyrael/
123#         use_xz          yes
124#         checksums       md5     0123456789 \
125#                         rmd160  0123456789 \
126#                         sha256  0123456789
127#         livecheck.url   ${homepage}
128#         livecheck.regex php-([strsed ${subport_branch} {g/\\./\\./}](?:\\.\[0-9.\]+)*(?:(?:alpha|beta|RC)\\d+|-latest))\\.tar
129#     }
130
131# Iterate through branches in reverse order, so that the list of subports in
132# "port info" will show newer versions before older versions.
133set i [llength ${php.branches}]
134while {[incr i -1] >= 0} {
135
136set branch              [lindex ${php.branches} ${i}]
137set major               [lindex [split ${branch} .] 0]
138set php                 php[php.suffix_from_branch ${branch}]
139
140if {[regexp "^${php}" ${subport}]} {
141
142dist_subdir             php${major}
143
144if {[is_sapi_subport]} {
145   
146    depends_build       port:pkgconfig
147   
148    if {${subport} ne ${php}} {
149        depends_lib     port:${php}
150    }
151   
152    depends_lib-append  path:bin/gsed:gsed \
153                        port:libiconv \
154                        port:libxml2 \
155                        port:bzip2 \
156                        port:mhash \
157                        port:pcre \
158                        port:zlib
159   
160    # Use -p1 to accommodate the Suhosin patch
161    patch.pre_args      -p1
162    patchfiles          patch-${php}-scripts-php-config.in.diff
163   
164    if {[vercmp ${branch} 5.2] <= 0} {
165        patchfiles-append \
166                        patch-${php}-libxml-2.9.diff \
167                        patch-${php}-pcre-8.30.diff
168    }
169   
170    # https://trac.macports.org/ticket/31590
171    # Tested all subports (except oracle) and they built with clang-425.  The reported failure was with Xcode 4.2.
172    # Xcode 4.3 may work, but leaving it blacklisted due to lack of testing
173    compiler.blacklist  {clang < 400} macports-clang-2.9 macports-clang-3.0 macports-clang-3.1
174   
175    set phpinidir       ${prefix}/etc/${php}
176    set extraphpinidir  ${prefix}/var/db/${php}
177   
178    configure.args      --mandir=${prefix}/share/man \
179                        --infodir=${prefix}/share/info \
180                        --program-suffix=[php.suffix_from_branch ${branch}] \
181                        --includedir=${prefix}/include/${php} \
182                        --libdir=${prefix}/lib/${php} \
183                        --with-config-file-path=${phpinidir} \
184                        --with-config-file-scan-dir=${extraphpinidir} \
185                        --disable-all \
186                        --enable-bcmath \
187                        --enable-ctype \
188                        --enable-dom \
189                        --enable-filter \
190                        --enable-hash \
191                        --enable-json \
192                        --enable-libxml \
193                        --enable-pdo \
194                        --enable-session \
195                        --enable-simplexml \
196                        --enable-tokenizer \
197                        --enable-xml \
198                        --enable-xmlreader \
199                        --enable-xmlwriter \
200                        --with-bz2=${prefix} \
201                        --with-mhash=${prefix} \
202                        --with-pcre-regex=${prefix} \
203                        --with-libxml-dir=${prefix} \
204                        --with-zlib=${prefix} \
205                        --without-pear \
206                        --disable-cgi \
207                        --disable-cli
208   
209    if {[vercmp ${branch} 5.3] >= 0} {
210        configure.args-append \
211                        --enable-fileinfo \
212                        --enable-phar \
213                        --disable-fpm
214       
215        # ${php}-mysql +mysqlnd needs mysqlnd support compiled into the SAPI
216        configure.env-append \
217                        PHP_MYSQLND_ENABLED=yes
218    }
219   
220    if {[vercmp ${branch} 5.4] >= 0} {
221        # https://bugs.php.net/bug.php?id=68114
222        configure.args-append ac_cv_decimal_fp_supported=no
223    }
224   
225    configure.universal_args-delete --disable-dependency-tracking
226   
227    test.run            yes
228   
229    destroot.args       INSTALL_ROOT=${destroot}
230   
231    variant debug description {Enable debug support (useful to analyze a PHP-related core dump)} {
232        configure.args-append   --enable-debug
233    }
234   
235    if {[vercmp ${branch} 5.3] <= 0} {
236    variant suhosin description {Add Suhosin patch} {
237        pre-fetch {
238            if {${os.platform} eq "darwin" && ${os.major} < 9} {
239                ui_error "The suhosin variant requires Mac OS X 10.5 or greater."
240                return -code error "incompatible Mac OS X version"
241            }
242            if {!${suhosin_available}} {
243                ui_error "There is no suhosin patch for PHP ${version} yet. Please check back later."
244            }
245            if {![file exists ${extraphpinidir}/suhosin.ini]} {
246                ui_msg "You may also be interested in the suhosin extension, a related but different piece of software. See the ${php}-suhosin port."
247            }
248            if {!${suhosin_available}} {
249                return -code error "unavailable variant"
250            }
251        }
252        patch_sites-append          http://download.suhosin.org/
253        if {${suhosin_available}} {
254            if {[vercmp ${branch} 5.3] >= 0} {
255                patchfiles-append   patch-${php}-suhosin-before.diff
256            }
257            patchfiles-append       ${suhosin_patch}
258            if {[vercmp ${branch} 5.3] >= 0} {
259                patchfiles-append   patch-${php}-suhosin-after.diff
260            }
261        }
262    }
263    }
264   
265    if {${subport} ne ${php}} {
266        notes-append "If this is your first install, you need to enable ${subport} in your web server."
267    }
268   
269}
270
271}
272
273### CLI SAPI ###
274
275subport ${php} {
276    PortGroup               select 1.0
277   
278    if {[vercmp ${branch} 5.2] == 0} {
279        revision            10
280    }
281   
282    depends_run             port:php_select
283   
284    select.group            php
285    select.file             ${filespath}/${subport}
286   
287    configure.args-replace  --disable-cli --enable-cli
288   
289    destroot.target         install-cli install-build install-headers install-programs
290   
291    destroot.keepdirs       ${destroot}${extraphpinidir}
292   
293    post-destroot {
294        # Copy the default php.ini files.
295        xinstall -m 755 -d ${destroot}${phpinidir}
296        if {[vercmp ${branch} 5.3] >= 0} {
297            xinstall -m 644 -W ${worksrcpath} \
298                php.ini-development \
299                php.ini-production \
300                ${destroot}${phpinidir}
301        } else {
302            xinstall -m 644 -W ${worksrcpath} \
303                php.ini-dist \
304                php.ini-recommended \
305                ${destroot}${phpinidir}
306        }
307       
308        if {[vercmp ${branch} 5.3] >= 0} {
309            # Copy mysqlnd headers.
310            xinstall -d ${destroot}${prefix}/include/${php}/php/ext/mysqlnd
311            eval xinstall -m 644 [glob ${worksrcpath}/ext/mysqlnd/*.h] ${destroot}${prefix}/include/${php}/php/ext/mysqlnd
312        }
313    }
314   
315    # Include the readline extension http://www.php.net/readline directly in
316    # the PHP CLI SAPI because until PHP 6 the interactive mode "php -a" won't
317    # work with a separately built readline extension.
318    # https://bugs.php.net/bug.php?id=53878
319    # Users might prefer readline over libedit because only readline supports
320    # readline_list_history() (http://www.php.net/readline-list-history).
321    # On the other hand we want libedit to be the default because its license
322    # is compatible with PHP's which means PHP can be distributable.
323    variant libedit conflicts readline description {Build readline extension using libedit library} {
324        depends_lib-append      port:libedit
325        configure.args-append   --with-libedit=${prefix}
326    }
327    variant readline conflicts libedit description {Build readline extension using readline library} {
328        depends_lib-append      port:readline
329        configure.args-append   --with-readline=${prefix}
330    }
331    if {![variant_isset readline]} {
332        default_variants +libedit
333    }
334   
335    if {[vercmp ${branch} 5.4] < 0} {
336        notes-append "
337PHP ${branch} has reached end-of-life. Please upgrade to PHP 5.4 or newer. The newest stable version is ${php.latest_stable_branch}.
338
339To learn how to update your code, please read the following guides:
340
341    http://php.net/manual/en/migration53.php
342    http://php.net/manual/en/migration54.php
343    http://php.net/manual/en/migration55.php
344    http://php.net/manual/en/migration56.php
345
346
347"
348    }
349   
350    if {[vercmp ${branch} ${php.latest_stable_branch}] > 0} {
351        notes-append "${php} @${version}_${revision} is a development preview—do not use it in production!\n\n\n"
352    }
353   
354    if {![file exists ${phpinidir}/php.ini]} {
355        if {[vercmp ${branch} 5.3] >= 0} {
356            notes-append "
357To customize ${php}, copy\
358${phpinidir}/php.ini-development (if this is a development server) or\
359${phpinidir}/php.ini-production (if this is a production server) to\
360${phpinidir}/php.ini and then make changes.
361"
362        } else {
363            notes-append "
364To customize ${php}, copy ${phpinidir}/php.ini-recommended to\
365${phpinidir}/php.ini and then make changes.
366"
367        }
368    } else {
369        if {[vercmp ${branch} 5.3] >= 0} {
370            notes-append "
371You may need to update your php.ini for any changes that have been made\
372in this version of ${php}. Compare ${phpinidir}/php.ini with\
373${phpinidir}/php.ini-development (if this is a development server) or\
374${phpinidir}/php.ini-production (if this is a production server).
375"
376        } else {
377            notes-append "
378You may need to update your php.ini for any changes that have been made\
379in this version of ${php}. Compare ${phpinidir}/php.ini with\
380${phpinidir}/php.ini-recommended.
381"
382        }
383    }
384   
385    # Enable livecheck for the two most recent stable PHP branches and the development branch.
386    if {[vercmp ${branch} [lindex ${php.branches} end-2]] >= 0} {
387        livecheck.type      regex
388        default livecheck.url   ${homepage}downloads.php
389        default livecheck.regex {get/php-([strsed ${branch} {g/\\./\\./}](?:\\.\[0-9.\]+)*)\\.tar}
390    }
391}
392
393### Apache 2 handler SAPI ###
394
395subport ${php}-apache2handler {
396    PortGroup               active_variants 1.1
397   
398    description             ${php} Apache 2 Handler SAPI
399   
400    long_description        ${description}
401   
402    homepage                http://www.php.net/install.unix.apache2
403   
404    depends_lib-append      port:apache2
405   
406    require_active_variants apache2 preforkmpm
407   
408    set apxs ${prefix}/apache2/bin/apxs
409    set confdir ${prefix}/apache2/conf
410    set moduledir ${prefix}/apache2/modules
411   
412    configure.args-append   --with-apxs2=${apxs}
413   
414    build.target            libs/libphp5.bundle
415   
416    destroot.violate_mtree  yes
417   
418    destroot {
419        xinstall -m 755 -d ${destroot}${moduledir} ${destroot}${confdir}/extra
420        xinstall -m 644 ${worksrcpath}/libs/libphp5.so ${destroot}${moduledir}/mod_${php}.so
421        xinstall -m 644 ${filespath}/mod_php.conf ${destroot}${confdir}/extra/mod_${php}.conf
422    }
423   
424    notes-append "
425
426To enable ${subport}, run:
427
428    cd ${moduledir}
429    sudo ${apxs} -a -e -n php${major} mod_${php}.so
430"
431}
432
433### CGI SAPI ###
434
435subport ${php}-cgi {
436    description             ${php} CGI SAPI
437   
438    long_description        ${description}
439   
440    homepage                http://www.php.net/install.unix.commandline
441   
442    configure.args-delete   --disable-cgi
443    if {[vercmp ${branch} 5.3] >= 0} {
444        configure.args-append --enable-cgi
445    } else {
446        configure.args-append --enable-fastcgi --enable-force-cgi-redirect
447    }
448   
449    if {[vercmp ${branch} 5.4] >= 0} {
450        build.target        cgi
451        destroot.target     install-cgi
452    } else {
453        destroot {
454            xinstall ${worksrcpath}/sapi/cgi/php-cgi ${destroot}${prefix}/bin/php-cgi[php.suffix_from_branch ${branch}]
455        }
456    }
457   
458}
459
460### FPM SAPI ###
461
462if {[vercmp ${branch} 5.3] >= 0} {
463subport ${php}-fpm {
464    description             ${php} FPM SAPI
465   
466    long_description        ${description}
467   
468    homepage                http://www.php.net/install.fpm
469   
470    set fpmuser             nobody
471    set fpmgroup            nobody
472   
473    patchfiles-append       patch-${php}-sapi-fpm-php-fpm.conf.in.diff
474   
475    post-patch {
476        reinplace "s|@PHP@|${php}|g" ${worksrcpath}/sapi/fpm/php-fpm.conf.in
477    }
478   
479    configure.args-replace  --disable-fpm --enable-fpm
480    configure.args-append   --datadir=${prefix}/share/examples/${php} \
481                            --sysconfdir=${phpinidir} \
482                            --with-fpm-user=${fpmuser} \
483                            --with-fpm-group=${fpmgroup}
484   
485    build.target            fpm
486   
487    destroot.target         install-fpm
488   
489    destroot.keepdirs       ${destroot}${prefix}/var/log/${php} \
490                            ${destroot}${prefix}/var/run/${php}
491   
492    post-destroot {
493        xinstall -d -o ${fpmuser} -g ${fpmgroup} ${destroot}${prefix}/var/log/${php} ${destroot}${prefix}/var/run/${php}
494    }
495   
496    startupitem.create      yes
497    startupitem.executable  ${prefix}/sbin/php-fpm[php.suffix_from_branch ${branch}]
498   
499    if {![file exists ${phpinidir}/php-fpm.conf]} {
500        notes-append "
501
502To use ${subport}, copy\
503${phpinidir}/php-fpm.conf.default to\
504${phpinidir}/php-fpm.conf and make changes if desired.
505"
506    } else {
507        notes-append "
508
509You may need to update your php-fpm.conf for any changes that have been made\
510in this version of ${subport}. Compare ${phpinidir}/php-fpm.conf with\
511${phpinidir}/php-fpm.conf.default.
512"
513    }
514}
515}
516
517### Bundled extensions ###
518
519subport ${php}-calendar {
520    description             a PHP extension for converting between different \
521                            calendar formats
522   
523    long_description        ${description}
524}
525
526subport ${php}-curl {
527    categories-append       net www
528   
529    description             a PHP interface to the curl library, which lets you \
530                            download files from servers with a variety of protocols
531   
532    long_description        ${description}
533   
534    depends_lib-append      port:curl
535   
536    configure.args-append   --with-curl=${prefix}
537}
538
539subport ${php}-dba {
540    categories-append       databases
541   
542    description             a PHP interface for accessing DBM databases such as \
543                            BerkeleyDB
544   
545    long_description        ${description}
546   
547    variant gdbm conflicts qdbm description {Add GDBM support} {
548        depends_lib-append      port:gdbm
549        configure.args-append   --with-gdbm=${prefix}
550    }
551   
552    variant qdbm conflicts gdbm description {Add QDBM support} {
553        depends_lib-append      port:qdbm
554        configure.args-append   --with-qdbm=${prefix}
555    }
556}
557
558if {[vercmp ${branch} 5.3] >= 0} {
559subport ${php}-enchant {
560    categories-append       textproc devel
561   
562    description             a PHP interface to enchant
563   
564    long_description        ${name} is ${description}, a common API for many spell libraries.
565   
566    depends_lib-append      port:enchant
567   
568    configure.args-append   --with-enchant=${prefix}
569   
570    post-destroot {
571        set docdir ${prefix}/share/doc/${subport}
572        xinstall -d ${destroot}${docdir}
573        xinstall -m 644 -W ${destroot.dir} CREDITS ${destroot}${docdir}
574       
575        set examplesdir ${prefix}/share/examples/${subport}
576        xinstall -d ${destroot}${examplesdir}
577        xinstall -m 644 ${destroot.dir}/docs/examples/example1.php \
578            ${destroot}${examplesdir}
579    }
580}
581}
582
583subport ${php}-exif {
584    categories-append       graphics
585   
586    description             a PHP interface to the EXIF image metadata functions
587   
588    long_description        ${description}
589}
590
591subport ${php}-ftp {
592    categories-append       net
593   
594    description             a PHP extension for accessing file servers using the \
595                            File Transfer Protocol
596   
597    long_description        ${description}
598   
599    depends_lib-append      port:openssl
600   
601    configure.args-append   --with-openssl-dir=${prefix}
602}
603
604subport ${php}-gd {
605    categories-append       graphics
606   
607    description             a PHP interface to the gd library
608   
609    long_description        ${description}
610   
611    depends_lib-append      port:freetype \
612                            port:jpeg \
613                            port:libpng \
614                            port:zlib
615   
616    patchfiles-append       patch-${php}-ext-gd-config.m4.diff
617   
618    configure.args-append   --with-freetype-dir=${prefix} \
619                            --with-jpeg-dir=${prefix} \
620                            --with-png-dir=${prefix} \
621                            --with-zlib-dir=${prefix} \
622                            --enable-gd-native-ttf
623   
624    variant t1lib description {Add PostScript Type 1 font support with t1lib} {
625        depends_lib-append      port:t1lib
626        configure.args-append   --with-t1lib=${prefix}
627    }
628}
629
630subport ${php}-gettext {
631    categories-append       devel
632   
633    description             a PHP interface to the gettext natural language \
634                            support functions
635   
636    long_description        ${description}
637   
638    depends_lib-append      port:gettext
639   
640    configure.args-append   --with-gettext=${prefix}
641}
642
643subport ${php}-gmp {
644    categories-append       devel math
645   
646    description             a PHP interface to GMP, the GNU multiprocessing \
647                            library through which you can work with \
648                            arbitrary-length integers
649   
650    long_description        ${description}
651   
652    depends_lib-append      port:gmp
653   
654    if {[vercmp ${branch} 5.2] <= 0} {
655        patchfiles-append   patch-${php}-ext-gmp-gmp.c.diff
656    }
657   
658    configure.args-append   --with-gmp=${prefix}
659}
660
661subport ${php}-iconv {
662    categories-append       textproc
663   
664    description             a PHP interface to the libiconv character encoding \
665                            conversion functions
666   
667    long_description        ${description}
668   
669    depends_lib-append      port:libiconv
670   
671    configure.args-append   --with-iconv=${prefix}
672}
673
674subport ${php}-imap {
675    categories-append       mail
676   
677    description             a PHP interface to the IMAP protocol
678   
679    long_description        ${description}
680   
681    depends_build-append    port:cclient
682   
683    depends_lib-append      port:kerberos5 \
684                            port:libcomerr
685   
686    configure.args-append   --with-imap=${prefix} \
687                            --with-imap-ssl=${prefix} \
688                            --with-kerberos=${prefix}
689}
690
691if {[vercmp ${branch} 5.3] >= 0} {
692subport ${php}-intl {
693    if {[vercmp ${branch} 5.3] == 0} {
694        revision            1
695    }
696   
697    categories-append       devel
698   
699    description             internationalization extension for PHP
700   
701    long_description        Internationalization extension implements ICU \
702                            library functionality in PHP.
703   
704    depends_lib-append      port:icu
705}
706}
707
708subport ${php}-ipc {
709    php.extensions          shmop sysvmsg sysvsem sysvshm
710   
711    description             interprocess communication extensions for PHP
712   
713    long_description        PHP extensions for interprocess communication (IPC), including the \
714                            shmop, sysvmsg, sysvsem, and sysvshm extensions.
715}
716
717subport ${php}-ldap {
718    categories-append       databases
719   
720    description             a PHP interface to LDAP
721
722    long_description        ${subport} is ${description}, the Lightweight Directory \
723                            Access Protocol, which is used to access Directory \
724                            Servers.
725   
726    depends_lib-append      port:openldap \
727                            port:cyrus-sasl2
728   
729    configure.args-append   --with-ldap=${prefix} \
730                            --with-ldap-sasl=${prefix}
731}
732
733subport ${php}-mbstring {
734    categories-append       textproc
735   
736    description             a PHP extension for manipulating strings in multibyte \
737                            encodings
738   
739    long_description        ${description}
740}
741
742subport ${php}-mcrypt {
743    categories-append       security
744   
745    description             a PHP interface to the mcrypt library, which offers \
746                            a wide variety of algorithms
747   
748    long_description        ${description}
749   
750    depends_lib-append      port:libmcrypt
751   
752    # The mcrypt extension may be using libtool unnecessarily; monitor
753    # https://bugs.php.net/bug.php?id=54500
754    depends_lib-append      port:libtool
755   
756    configure.args-append   --with-mcrypt=${prefix}
757}
758
759subport ${php}-mssql {
760    php.extensions          mssql pdo_dblib
761   
762    categories-append       databases
763   
764    description             a PHP interface to MSSQL using FreeTDS, including \
765                            the mssql and pdo_dblib extensions
766   
767    long_description        ${description}
768   
769    depends_lib-append      port:freetds
770   
771    configure.args-append   --with-mssql=${prefix} \
772                            --with-pdo-dblib=${prefix}
773}
774
775subport ${php}-mysql {
776    php.extensions          mysql mysqli pdo_mysql
777   
778    categories-append       databases
779   
780    description             a PHP interface to MySQL databases, including the \
781                            mysql, mysqli and pdo_mysql extensions
782   
783    long_description        ${description}
784   
785    depends_lib-append      port:zlib
786   
787    configure.args-append   --with-zlib-dir=${prefix}
788   
789    if {[vercmp ${branch} 5.3] >= 0} {
790    variant mysqlnd conflicts mysql4 mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL Native Driver} {
791        configure.args-append   --with-mysql=mysqlnd \
792                                --with-mysqli=mysqlnd \
793                                --with-pdo-mysql=mysqlnd
794       
795        configure.cppflags-append   -I${worksrcpath}
796       
797        set phpini ${prefix}/etc/${php}/php.ini
798        notes "
799To use mysqlnd with a local MySQL server, edit ${phpini} and set\
800mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket\
801to the path to your MySQL server's socket file.
802
803For mysql5, use ${prefix}/var/run/mysql5/mysqld.sock
804For mysql51, use ${prefix}/var/run/mysql51/mysqld.sock
805For mysql55, use ${prefix}/var/run/mysql55/mysqld.sock
806For mysql56, use ${prefix}/var/run/mysql56/mysqld.sock
807For mariadb, use ${prefix}/var/run/mariadb/mysqld.sock
808For percona, use ${prefix}/var/run/percona/mysqld.sock
809"
810    }
811    }
812   
813    variant mysql4 conflicts mysqlnd mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 4 libraries} {
814        depends_lib-append      port:mysql4
815       
816        configure.args-append   --with-mysql=${prefix} \
817                                --with-pdo-mysql=${prefix}
818    }
819   
820    variant mysql5 conflicts mysqlnd mysql4 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 5 libraries} {
821        depends_lib-append      path:bin/mysql_config5:mysql5
822       
823        post-extract {
824            file mkdir ${workpath}/mysql5
825            file link -symbolic ${workpath}/mysql5/lib ${prefix}/lib/mysql5
826            file link -symbolic ${workpath}/mysql5/include ${prefix}/include/mysql5
827        }
828       
829        configure.args-append   --with-mysql=${workpath}/mysql5 \
830                                --with-mysqli=${prefix}/bin/mysql_config5 \
831                                --with-pdo-mysql=${prefix}/bin/mysql_config5 \
832                                --with-mysql-sock=${prefix}/var/run/mysql5/mysqld.sock
833    }
834   
835    variant mysql51 conflicts mysqlnd mysql4 mysql5 mysql55 mysql56 mariadb percona description {Use MySQL 5.1 libraries} {
836        depends_lib-append      port:mysql51
837       
838        post-extract {
839            file mkdir ${workpath}/mysql51
840            file link -symbolic ${workpath}/mysql51/lib ${prefix}/lib/mysql51
841            file link -symbolic ${workpath}/mysql51/include ${prefix}/include/mysql51
842        }
843       
844        configure.args-append   --with-mysql=${workpath}/mysql51 \
845                                --with-mysqli=${prefix}/lib/mysql51/bin/mysql_config \
846                                --with-pdo-mysql=${prefix}/lib/mysql51/bin/mysql_config \
847                                --with-mysql-sock=${prefix}/var/run/mysql51/mysqld.sock
848    }
849   
850    variant mysql55 conflicts mysqlnd mysql4 mysql5 mysql51 mysql56 mariadb percona description {Use MySQL 5.5 libraries} {
851        depends_lib-append      port:mysql55
852       
853        post-extract {
854            file mkdir ${workpath}/mysql55
855            file link -symbolic ${workpath}/mysql55/lib ${prefix}/lib/mysql55
856            file link -symbolic ${workpath}/mysql55/include ${prefix}/include/mysql55
857        }
858       
859        configure.args-append   --with-mysql=${workpath}/mysql55 \
860                                --with-mysqli=${prefix}/lib/mysql55/bin/mysql_config \
861                                --with-pdo-mysql=${prefix}/lib/mysql55/bin/mysql_config \
862                                --with-mysql-sock=${prefix}/var/run/mysql55/mysqld.sock
863    }
864   
865    variant mysql56 conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mariadb percona description {Use MySQL 5.6 libraries} {
866        depends_lib-append      port:mysql56
867       
868        post-extract {
869            file mkdir ${workpath}/mysql56
870            file link -symbolic ${workpath}/mysql56/lib ${prefix}/lib/mysql56
871            file link -symbolic ${workpath}/mysql56/include ${prefix}/include/mysql56
872        }
873       
874        configure.args-append   --with-mysql=${workpath}/mysql56 \
875                                --with-mysqli=${prefix}/lib/mysql56/bin/mysql_config \
876                                --with-pdo-mysql=${prefix}/lib/mysql56/bin/mysql_config \
877                                --with-mysql-sock=${prefix}/var/run/mysql56/mysqld.sock
878    }
879   
880    variant mariadb conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 percona description {Use MariaDB libraries} {
881        depends_lib-append      port:mariadb
882       
883        post-extract {
884            file mkdir ${workpath}/mariadb
885            file link -symbolic ${workpath}/mariadb/lib ${prefix}/lib/mariadb
886            file link -symbolic ${workpath}/mariadb/include ${prefix}/include/mariadb
887        }
888       
889        configure.args-append   --with-mysql=${workpath}/mariadb \
890                                --with-mysqli=${prefix}/lib/mariadb/bin/mysql_config \
891                                --with-pdo-mysql=${prefix}/lib/mariadb/bin/mysql_config \
892                                --with-mysql-sock=${prefix}/var/run/mariadb/mysqld.sock
893    }
894   
895    variant percona conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 mariadb description {Use Percona libraries} {
896        depends_lib-append      port:percona
897       
898        post-extract {
899            file mkdir ${workpath}/percona
900            file link -symbolic ${workpath}/percona/lib ${prefix}/lib/percona
901            file link -symbolic ${workpath}/percona/include ${prefix}/include/percona
902        }
903       
904        configure.args-append   --with-mysql=${workpath}/percona \
905                                --with-mysqli=${prefix}/lib/percona/bin/mysql_config \
906                                --with-pdo-mysql=${prefix}/lib/percona/bin/mysql_config \
907                                --with-mysql-sock=${prefix}/var/run/percona/mysqld.sock
908    }
909   
910    if {![variant_isset mysql4] && ![variant_isset mysql5] && ![variant_isset mysql51] && ![variant_isset mysql55] && ![variant_isset mysql56] && ![variant_isset mariadb] && ![variant_isset percona]} {
911        if {[vercmp ${branch} 5.3] >= 0} {
912            default_variants +mysqlnd
913        } else {
914            default_variants +mariadb
915        }
916    }
917}
918
919subport ${php}-odbc {
920    php.extensions          odbc pdo_odbc
921   
922    categories-append       databases
923   
924    description             a PHP interface for accessing databases via Open \
925                            DataBase Connectivity (ODBC)
926   
927    long_description        ${description}
928   
929    variant iodbc conflicts unixodbc description {Use iODBC} {
930        depends_lib-append      port:libiodbc
931       
932        patchfiles-append       patch-${php}-iODBC.diff
933       
934        configure.args-append   --with-iODBC=${prefix} \
935                                --with-pdo-odbc=iODBC,${prefix}
936    }
937   
938    variant unixodbc conflicts iodbc description {Use unixODBC} {
939        depends_lib-append      port:unixODBC
940       
941        patchfiles-append       patch-${php}-unixODBC.diff
942       
943        configure.args-append   --with-unixODBC=${prefix} \
944                                --with-pdo-odbc=unixODBC,${prefix}
945    }
946   
947    if {![variant_isset iodbc] && ![variant_isset unixodbc]} {
948        default_variants +unixodbc
949    }
950}
951
952if {[vercmp ${branch} 5.5] >= 0} {
953    subport ${php}-opcache {
954        php.extensions.zend opcache
955       
956        description         OPcache improves PHP performance by storing precompiled \
957                            script bytecode in shared memory, thereby removing the \
958                            need for PHP to load and parse scripts on each request.
959       
960        long_description    ${description}
961       
962        configure.args-append --enable-opcache
963       
964        post-destroot {
965            set docdir ${destroot}${prefix}/share/doc/${subport}
966            xinstall -d ${docdir}
967            xinstall -W ${destroot.dir} -m 644 README ${docdir}
968        }
969    }
970}
971
972subport ${php}-openssl {
973    categories-append       devel security
974   
975    description             a PHP interface to OpenSSL signature-generation \
976                            and -verification and data-encryption and \
977                            -decryption functions
978   
979    long_description        ${description}
980   
981    depends_lib-append      port:kerberos5 \
982                            port:libcomerr \
983                            port:openssl
984   
985    post-extract {
986        move ${php.build_dirs}/config0.m4 ${php.build_dirs}/config.m4
987    }
988   
989    configure.args-append   --with-kerberos=${prefix} \
990                            --with-openssl=${prefix}
991}
992
993subport ${php}-oracle {
994    php.extensions          oci8 pdo_oci
995   
996    categories-append       databases
997   
998    description             a PHP interface to Oracle, including the oci8 and \
999                            pdo_oci extensions
1000   
1001    long_description        ${description}
1002   
1003    depends_lib-append      port:oracle-instantclient
1004   
1005    if {[vercmp ${branch} 5.2] <= 0} {
1006        patchfiles-append   patch-${php}-ext-pdo_oci-config.m4.diff
1007    }
1008   
1009    set lib_dir             ${prefix}/lib/oracle
1010    pre-configure {
1011        regexp {\.dylib\.(.+)$} [glob -directory ${lib_dir} libclntsh.dylib.*] -> library_version
1012        configure.args-append \
1013                            --with-oci8=instantclient,${lib_dir} \
1014                            --with-pdo-oci=instantclient,${lib_dir},${library_version}
1015    }
1016}
1017
1018subport ${php}-pcntl {
1019    categories-append       sysutils
1020   
1021    description             a PHP interface to Unix-style process creation, \
1022                            program execution, signal handling and process \
1023                            termination functions
1024   
1025    long_description        ${description}
1026   
1027    notes "
1028${subport} should not be enabled within a web server environment.\
1029Unexpected results may occur if any process control functions are used within\
1030a web server environment.
1031"
1032}
1033
1034subport ${php}-posix {
1035    categories-append       sysutils
1036   
1037    description             a PHP interface to additional POSIX functions
1038   
1039    long_description        a PHP interface to those functions defined in the \
1040                            IEEE 1003.1 (POSIX.1) standards document which are \
1041                            not accessible through other means
1042}
1043
1044subport ${php}-postgresql {
1045    php.extensions          pgsql pdo_pgsql
1046   
1047    categories-append       databases
1048   
1049    homepage                http://www.php.net/pgsql
1050   
1051    description             a PHP interface to PostgreSQL, including \
1052                            the pgsql and pdo_pgsql extensions
1053   
1054    long_description        ${description}
1055   
1056    variant postgresql82 conflicts postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.2 libraries} {
1057        depends_lib-append      port:postgresql82
1058       
1059        configure.args-append   --with-pgsql=${prefix}/lib/postgresql82/bin \
1060                                --with-pdo-pgsql=${prefix}/lib/postgresql82/bin
1061    }
1062   
1063    variant postgresql83 conflicts postgresql82 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.3 libraries} {
1064        depends_lib-append      port:postgresql83
1065       
1066        configure.args-append   --with-pgsql=${prefix}/lib/postgresql83/bin \
1067                                --with-pdo-pgsql=${prefix}/lib/postgresql83/bin
1068    }
1069   
1070    variant postgresql84 conflicts postgresql82 postgresql83 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.4 libraries} {
1071        depends_lib-append      port:postgresql84
1072       
1073        configure.args-append   --with-pgsql=${prefix}/lib/postgresql84/bin \
1074                                --with-pdo-pgsql=${prefix}/lib/postgresql84/bin
1075    }
1076   
1077    variant postgresql90 conflicts postgresql82 postgresql83 postgresql84 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 9.0 libraries} {
1078        depends_lib-append      port:postgresql90
1079       
1080        configure.args-append   --with-pgsql=${prefix}/lib/postgresql90/bin \
1081                                --with-pdo-pgsql=${prefix}/lib/postgresql90/bin
1082    }
1083   
1084    variant postgresql91 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 9.1 libraries} {
1085        depends_lib-append      port:postgresql91
1086       
1087        configure.args-append   --with-pgsql=${prefix}/lib/postgresql91/bin \
1088                                --with-pdo-pgsql=${prefix}/lib/postgresql91/bin
1089    }
1090   
1091    variant postgresql92 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql93 postgresql94 description {Use PostgreSQL 9.2 libraries} {
1092        depends_lib-append      port:postgresql92
1093       
1094        configure.args-append   --with-pgsql=${prefix}/lib/postgresql92/bin \
1095                                --with-pdo-pgsql=${prefix}/lib/postgresql92/bin
1096    }
1097   
1098    variant postgresql93 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql94 description {Use PostgreSQL 9.3 libraries} {
1099        depends_lib-append      port:postgresql93
1100       
1101        configure.args-append   --with-pgsql=${prefix}/lib/postgresql93/bin \
1102                                --with-pdo-pgsql=${prefix}/lib/postgresql93/bin
1103    }
1104   
1105    variant postgresql94 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 description {Use PostgreSQL 9.4 libraries} {
1106        depends_lib-append      port:postgresql94
1107       
1108        configure.args-append   --with-pgsql=${prefix}/lib/postgresql94/bin \
1109                                --with-pdo-pgsql=${prefix}/lib/postgresql94/bin
1110    }
1111   
1112    if {![variant_isset postgresql82] && ![variant_isset postgresql83] && ![variant_isset postgresql84] && ![variant_isset postgresql90] && ![variant_isset postgresql91] && ![variant_isset postgresql92] && ![variant_isset postgresql93] && ![variant_isset postgresql94]} {
1113        default_variants +postgresql94
1114    }
1115}
1116
1117subport ${php}-pspell {
1118    categories-append       textproc
1119   
1120    description             a PHP interface to the aspell library, which lets you \
1121                            check spelling and offer spelling suggestions
1122   
1123    long_description        ${description}
1124   
1125    depends_lib-append      port:aspell
1126   
1127    configure.args-append   --with-pspell=${prefix}
1128}
1129
1130subport ${php}-snmp {
1131    categories-append       sysutils
1132   
1133    description             a PHP interface to the Simple Network Management \
1134                            Protocol (SNMP)
1135   
1136    long_description        ${description}
1137   
1138    depends_lib-append      port:net-snmp
1139   
1140    configure.args-append   --with-snmp=${prefix}
1141}
1142
1143subport ${php}-soap {
1144    categories-append       net
1145   
1146    description             a PHP extension for writing SOAP clients and servers
1147   
1148    long_description        ${description}
1149   
1150    depends_lib-append      port:libxml2
1151   
1152    configure.args-append   --with-libxml-dir=${prefix}
1153}
1154
1155subport ${php}-sockets {
1156    categories-append       net
1157   
1158    description             a PHP interface to BSD socket communication \
1159                            functions
1160   
1161    long_description        ${description}
1162}
1163
1164if {[vercmp ${branch} 5.3] >= 0} {
1165subport ${php}-sqlite {
1166    php.extensions          sqlite sqlite3 pdo_sqlite
1167   
1168    categories-append       databases
1169   
1170    description             a PHP interface to SQLite, including the sqlite, sqlite3 \
1171                            and pdo_sqlite extensions
1172   
1173    if {[vercmp ${branch} 5.4] >= 0} {
1174        php.extensions-delete sqlite
1175        description-delete "sqlite,"
1176    }
1177   
1178    long_description        ${description}
1179   
1180    depends_lib-append      port:sqlite3
1181   
1182    post-extract {
1183        move ${worksrcpath}/ext/sqlite3/config0.m4 ${worksrcpath}/ext/sqlite3/config.m4
1184    }
1185   
1186    configure.args-append   --with-sqlite3=${prefix} \
1187                            --with-pdo-sqlite=${prefix} \
1188                            --enable-sqlite-utf8
1189}
1190}
1191
1192subport ${php}-tidy {
1193    categories-append       www
1194   
1195    description             a PHP interface to tidy, the HTML cleaning and \
1196                            repair utility
1197   
1198    long_description        ${description}
1199   
1200    depends_lib-append      port:tidy
1201   
1202    configure.args-append   --with-tidy=${prefix}
1203}
1204
1205subport ${php}-wddx {
1206    categories-append       textproc
1207   
1208    description             a PHP interface to Web Distributed Data Exchange
1209   
1210    long_description        ${description}
1211   
1212    depends_build-append    port:expat \
1213                            port:libxml2
1214   
1215    configure.args-append   --with-libexpat-dir=${prefix} \
1216                            --with-libxml-dir=${prefix}
1217}
1218
1219subport ${php}-xmlrpc {
1220    categories-append       textproc
1221   
1222    description             a PHP extension for writing XML-RPC clients and servers
1223   
1224    long_description        ${description}
1225   
1226    depends_build-append    port:libiconv \
1227                            port:libxml2
1228   
1229    depends_lib-append      port:expat
1230   
1231    configure.args-append   --with-iconv-dir=${prefix} \
1232                            --with-libexpat-dir=${prefix} \
1233                            --with-libxml-dir=${prefix}
1234   
1235    pre-configure {
1236        configure.cppflags-append [exec ${prefix}/bin/xml2-config --cflags]
1237    }
1238}
1239
1240subport ${php}-xsl {
1241    categories-append       textproc
1242   
1243    description             a PHP interface to libxslt, which implements the XSL \
1244                            standard and lets you perform XSL transformations
1245   
1246    long_description        ${description}
1247   
1248    depends_lib-append      port:libxslt
1249   
1250    configure.args-append   --with-xsl=${prefix}
1251   
1252    configure.cppflags-append   -I${prefix}/include/${php}/php/ext/dom
1253}
1254
1255subport ${php}-zip {
1256    categories-append       archivers
1257   
1258    description             PHP zip functions
1259   
1260    long_description        ${description}
1261   
1262    depends_lib-append      port:zlib
1263   
1264    configure.args-append   --with-zlib-dir=${prefix}
1265}
1266
1267}
1268
1269# These variables are not only required by the subsequent code but also by
1270# preceding code in phase blocks.
1271set branch              ${subport_branch}
1272set php                 php[php.suffix_from_branch ${branch}]
1273
1274if {${name} eq ${subport}} {
1275    # Set up the stub port.
1276    version             ${branch}
1277    supported_archs     noarch
1278    distfiles
1279    depends_run         port:${php}
1280    use_configure       no
1281    build {}
1282    destroot {
1283        xinstall -d -m 755 ${destroot}${prefix}/share/doc/${subport}
1284        system "echo \"${name} is a stub port\" > ${destroot}${prefix}/share/doc/${subport}/README"
1285    }
1286} else {
1287    # Set an explicit distname so the default from the php portgroup doesn't get used.
1288    distname            ${name}-${version}
1289}
1290
1291proc get_default_php_extensions {} {
1292    global php.extensions.zend php.rootname
1293    if {0 < [llength ${php.extensions.zend}]} {
1294        return
1295    }
1296    return ${php.rootname}
1297}
1298
1299# Set up the php portgroup, for extension subports.
1300if {[is_extension_subport]} {
1301    default php.extensions {[get_default_php_extensions]}
1302    default homepage    http://www.php.net/${php.rootname}
1303   
1304    php.build_dirs
1305    set pdo no
1306    foreach extension [concat ${php.extensions} ${php.extensions.zend}] {
1307        if {[regexp {^pdo_} ${extension}]} {
1308            # The PDO extensions need the PDO headers.
1309            set pdo yes
1310            post-extract {
1311                file mkdir ${worksrcpath}/ext/${extension}/ext
1312                ln -s ${worksrcpath}/ext/pdo ${worksrcpath}/ext/${extension}/ext
1313            }
1314        }
1315       
1316        # Speed up extraction by extracting only the modules we're going to be building.
1317        extract.post_args-append ${worksrcdir}/ext/${extension}
1318       
1319        # Run phpize, configure, build and destroot in each extension's directory.
1320        php.build_dirs-append ${worksrcpath}/ext/${extension}
1321    }
1322   
1323    if {${pdo}} {
1324        # The PDO extensions need the PDO headers.
1325        extract.post_args-append ${worksrcdir}/ext/pdo
1326    }
1327   
1328    pre-configure {
1329        set php_version [exec ${php.config} --version 2>/dev/null]
1330        if {${version} ne ${php_version}} {
1331            ui_error "${subport} @${version} requires ${php} @${version} but you have ${php} @${php_version}."
1332            return -code error "incompatible ${php} installation"
1333        }
1334    }
1335   
1336    destroot.target     install-modules install-headers
1337   
1338    php.add_port_code
1339}
Note: See TracBrowser for help on using the repository browser.