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

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

icu: update to 55.1

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 46.5 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 135232 2015-04-20 00:15:39Z 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.40
94        use_bzip2       yes
95        checksums       md5     19dafb2b9fc31517cf5c3309fb8a9923 \
96                        rmd160  2848d814e1038e88156a8d58ad661ed9d42cbbdc \
97                        sha256  4898ffe8ac3ccb2d8cc94f7d76a9ea0414d954f5d4479895ddfccdc2e158a51a
98    }
99    5.5 {
100        epoch           2
101        version         5.5.24
102        use_xz          yes
103        checksums       md5     32e5ab1d77186142474cb65c685659bd \
104                        rmd160  be66352ade99975df4e349d006d4dcdf296c5d86 \
105                        sha256  ffb6235a25043cab71e6445cfc9e8bf16ae80a2835f0373cdd948fcc31eafe57
106    }
107    5.6 {
108        epoch           2
109        version         5.6.8
110        use_xz          yes
111        checksums       md5     526a5a7f593de632cd9e8546335de8b7 \
112                        rmd160  94bf75220431f2909ccf9c7020df4f6fc0ade47d \
113                        sha256  4c417387b88e100ca306adeda8051eb9fad93dae8da983f962dabf91a14b2b7b
114    }
115}
116#     7.0 {
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         7.0
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            2
695    } else {
696        revision            1
697    }
698   
699    categories-append       devel
700   
701    description             internationalization extension for PHP
702   
703    long_description        Internationalization extension implements ICU \
704                            library functionality in PHP.
705   
706    depends_lib-append      port:icu
707}
708}
709
710subport ${php}-ipc {
711    php.extensions          shmop sysvmsg sysvsem sysvshm
712   
713    description             interprocess communication extensions for PHP
714   
715    long_description        PHP extensions for interprocess communication (IPC), including the \
716                            shmop, sysvmsg, sysvsem, and sysvshm extensions.
717}
718
719subport ${php}-ldap {
720    categories-append       databases
721   
722    description             a PHP interface to LDAP
723
724    long_description        ${subport} is ${description}, the Lightweight Directory \
725                            Access Protocol, which is used to access Directory \
726                            Servers.
727   
728    depends_lib-append      port:openldap \
729                            port:cyrus-sasl2
730   
731    configure.args-append   --with-ldap=${prefix} \
732                            --with-ldap-sasl=${prefix}
733}
734
735subport ${php}-mbstring {
736    categories-append       textproc
737   
738    description             a PHP extension for manipulating strings in multibyte \
739                            encodings
740   
741    long_description        ${description}
742}
743
744subport ${php}-mcrypt {
745    categories-append       security
746   
747    description             a PHP interface to the mcrypt library, which offers \
748                            a wide variety of algorithms
749   
750    long_description        ${description}
751   
752    depends_lib-append      port:libmcrypt
753   
754    # The mcrypt extension may be using libtool unnecessarily; monitor
755    # https://bugs.php.net/bug.php?id=54500
756    depends_lib-append      port:libtool
757   
758    configure.args-append   --with-mcrypt=${prefix}
759}
760
761subport ${php}-mssql {
762    php.extensions          mssql pdo_dblib
763   
764    categories-append       databases
765   
766    description             a PHP interface to MSSQL using FreeTDS, including \
767                            the mssql and pdo_dblib extensions
768   
769    long_description        ${description}
770   
771    depends_lib-append      port:freetds
772   
773    configure.args-append   --with-mssql=${prefix} \
774                            --with-pdo-dblib=${prefix}
775}
776
777subport ${php}-mysql {
778    php.extensions          mysql mysqli pdo_mysql
779   
780    categories-append       databases
781   
782    description             a PHP interface to MySQL databases, including the \
783                            mysql, mysqli and pdo_mysql extensions
784   
785    long_description        ${description}
786   
787    depends_lib-append      port:zlib
788   
789    configure.args-append   --with-zlib-dir=${prefix}
790   
791    if {[vercmp ${branch} 5.3] >= 0} {
792    variant mysqlnd conflicts mysql4 mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL Native Driver} {
793        configure.args-append   --with-mysql=mysqlnd \
794                                --with-mysqli=mysqlnd \
795                                --with-pdo-mysql=mysqlnd
796       
797        configure.cppflags-append   -I${worksrcpath}
798       
799        set phpini ${prefix}/etc/${php}/php.ini
800        notes "
801To use mysqlnd with a local MySQL server, edit ${phpini} and set\
802mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket\
803to the path to your MySQL server's socket file.
804
805For mysql5, use ${prefix}/var/run/mysql5/mysqld.sock
806For mysql51, use ${prefix}/var/run/mysql51/mysqld.sock
807For mysql55, use ${prefix}/var/run/mysql55/mysqld.sock
808For mysql56, use ${prefix}/var/run/mysql56/mysqld.sock
809For mariadb, use ${prefix}/var/run/mariadb/mysqld.sock
810For percona, use ${prefix}/var/run/percona/mysqld.sock
811"
812    }
813    }
814   
815    variant mysql4 conflicts mysqlnd mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 4 libraries} {
816        depends_lib-append      port:mysql4
817       
818        configure.args-append   --with-mysql=${prefix} \
819                                --with-pdo-mysql=${prefix}
820    }
821   
822    variant mysql5 conflicts mysqlnd mysql4 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 5 libraries} {
823        depends_lib-append      path:bin/mysql_config5:mysql5
824       
825        post-extract {
826            file mkdir ${workpath}/mysql5
827            file link -symbolic ${workpath}/mysql5/lib ${prefix}/lib/mysql5
828            file link -symbolic ${workpath}/mysql5/include ${prefix}/include/mysql5
829        }
830       
831        configure.args-append   --with-mysql=${workpath}/mysql5 \
832                                --with-mysqli=${prefix}/bin/mysql_config5 \
833                                --with-pdo-mysql=${prefix}/bin/mysql_config5 \
834                                --with-mysql-sock=${prefix}/var/run/mysql5/mysqld.sock
835    }
836   
837    variant mysql51 conflicts mysqlnd mysql4 mysql5 mysql55 mysql56 mariadb percona description {Use MySQL 5.1 libraries} {
838        depends_lib-append      port:mysql51
839       
840        post-extract {
841            file mkdir ${workpath}/mysql51
842            file link -symbolic ${workpath}/mysql51/lib ${prefix}/lib/mysql51
843            file link -symbolic ${workpath}/mysql51/include ${prefix}/include/mysql51
844        }
845       
846        configure.args-append   --with-mysql=${workpath}/mysql51 \
847                                --with-mysqli=${prefix}/lib/mysql51/bin/mysql_config \
848                                --with-pdo-mysql=${prefix}/lib/mysql51/bin/mysql_config \
849                                --with-mysql-sock=${prefix}/var/run/mysql51/mysqld.sock
850    }
851   
852    variant mysql55 conflicts mysqlnd mysql4 mysql5 mysql51 mysql56 mariadb percona description {Use MySQL 5.5 libraries} {
853        depends_lib-append      port:mysql55
854       
855        post-extract {
856            file mkdir ${workpath}/mysql55
857            file link -symbolic ${workpath}/mysql55/lib ${prefix}/lib/mysql55
858            file link -symbolic ${workpath}/mysql55/include ${prefix}/include/mysql55
859        }
860       
861        configure.args-append   --with-mysql=${workpath}/mysql55 \
862                                --with-mysqli=${prefix}/lib/mysql55/bin/mysql_config \
863                                --with-pdo-mysql=${prefix}/lib/mysql55/bin/mysql_config \
864                                --with-mysql-sock=${prefix}/var/run/mysql55/mysqld.sock
865    }
866   
867    variant mysql56 conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mariadb percona description {Use MySQL 5.6 libraries} {
868        depends_lib-append      port:mysql56
869       
870        post-extract {
871            file mkdir ${workpath}/mysql56
872            file link -symbolic ${workpath}/mysql56/lib ${prefix}/lib/mysql56
873            file link -symbolic ${workpath}/mysql56/include ${prefix}/include/mysql56
874        }
875       
876        configure.args-append   --with-mysql=${workpath}/mysql56 \
877                                --with-mysqli=${prefix}/lib/mysql56/bin/mysql_config \
878                                --with-pdo-mysql=${prefix}/lib/mysql56/bin/mysql_config \
879                                --with-mysql-sock=${prefix}/var/run/mysql56/mysqld.sock
880    }
881   
882    variant mariadb conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 percona description {Use MariaDB libraries} {
883        depends_lib-append      port:mariadb
884       
885        post-extract {
886            file mkdir ${workpath}/mariadb
887            file link -symbolic ${workpath}/mariadb/lib ${prefix}/lib/mariadb
888            file link -symbolic ${workpath}/mariadb/include ${prefix}/include/mariadb
889        }
890       
891        configure.args-append   --with-mysql=${workpath}/mariadb \
892                                --with-mysqli=${prefix}/lib/mariadb/bin/mysql_config \
893                                --with-pdo-mysql=${prefix}/lib/mariadb/bin/mysql_config \
894                                --with-mysql-sock=${prefix}/var/run/mariadb/mysqld.sock
895    }
896   
897    variant percona conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 mariadb description {Use Percona libraries} {
898        depends_lib-append      port:percona
899       
900        post-extract {
901            file mkdir ${workpath}/percona
902            file link -symbolic ${workpath}/percona/lib ${prefix}/lib/percona
903            file link -symbolic ${workpath}/percona/include ${prefix}/include/percona
904        }
905       
906        configure.args-append   --with-mysql=${workpath}/percona \
907                                --with-mysqli=${prefix}/lib/percona/bin/mysql_config \
908                                --with-pdo-mysql=${prefix}/lib/percona/bin/mysql_config \
909                                --with-mysql-sock=${prefix}/var/run/percona/mysqld.sock
910    }
911   
912    if {![variant_isset mysql4] && ![variant_isset mysql5] && ![variant_isset mysql51] && ![variant_isset mysql55] && ![variant_isset mysql56] && ![variant_isset mariadb] && ![variant_isset percona]} {
913        if {[vercmp ${branch} 5.3] >= 0} {
914            default_variants +mysqlnd
915        } else {
916            default_variants +mariadb
917        }
918    }
919}
920
921subport ${php}-odbc {
922    php.extensions          odbc pdo_odbc
923   
924    categories-append       databases
925   
926    description             a PHP interface for accessing databases via Open \
927                            DataBase Connectivity (ODBC)
928   
929    long_description        ${description}
930   
931    variant iodbc conflicts unixodbc description {Use iODBC} {
932        depends_lib-append      port:libiodbc
933       
934        patchfiles-append       patch-${php}-iODBC.diff
935       
936        configure.args-append   --with-iODBC=${prefix} \
937                                --with-pdo-odbc=iODBC,${prefix}
938    }
939   
940    variant unixodbc conflicts iodbc description {Use unixODBC} {
941        depends_lib-append      port:unixODBC
942       
943        patchfiles-append       patch-${php}-unixODBC.diff
944       
945        configure.args-append   --with-unixODBC=${prefix} \
946                                --with-pdo-odbc=unixODBC,${prefix}
947    }
948   
949    if {![variant_isset iodbc] && ![variant_isset unixodbc]} {
950        default_variants +unixodbc
951    }
952}
953
954if {[vercmp ${branch} 5.5] >= 0} {
955    subport ${php}-opcache {
956        php.extensions.zend opcache
957       
958        description         OPcache improves PHP performance by storing precompiled \
959                            script bytecode in shared memory, thereby removing the \
960                            need for PHP to load and parse scripts on each request.
961       
962        long_description    ${description}
963       
964        configure.args-append --enable-opcache
965       
966        post-destroot {
967            set docdir ${destroot}${prefix}/share/doc/${subport}
968            xinstall -d ${docdir}
969            xinstall -W ${destroot.dir} -m 644 README ${docdir}
970        }
971    }
972}
973
974subport ${php}-openssl {
975    categories-append       devel security
976   
977    description             a PHP interface to OpenSSL signature-generation \
978                            and -verification and data-encryption and \
979                            -decryption functions
980   
981    long_description        ${description}
982   
983    depends_lib-append      port:kerberos5 \
984                            port:libcomerr \
985                            port:openssl
986   
987    post-extract {
988        move ${php.build_dirs}/config0.m4 ${php.build_dirs}/config.m4
989    }
990   
991    configure.args-append   --with-kerberos=${prefix} \
992                            --with-openssl=${prefix}
993}
994
995subport ${php}-oracle {
996    php.extensions          oci8 pdo_oci
997   
998    categories-append       databases
999   
1000    description             a PHP interface to Oracle, including the oci8 and \
1001                            pdo_oci extensions
1002   
1003    long_description        ${description}
1004   
1005    depends_lib-append      port:oracle-instantclient
1006   
1007    if {[vercmp ${branch} 5.2] <= 0} {
1008        patchfiles-append   patch-${php}-ext-pdo_oci-config.m4.diff
1009    }
1010   
1011    set lib_dir             ${prefix}/lib/oracle
1012    pre-configure {
1013        regexp {\.dylib\.(.+)$} [glob -directory ${lib_dir} libclntsh.dylib.*] -> library_version
1014        configure.args-append \
1015                            --with-oci8=instantclient,${lib_dir} \
1016                            --with-pdo-oci=instantclient,${lib_dir},${library_version}
1017    }
1018}
1019
1020subport ${php}-pcntl {
1021    categories-append       sysutils
1022   
1023    description             a PHP interface to Unix-style process creation, \
1024                            program execution, signal handling and process \
1025                            termination functions
1026   
1027    long_description        ${description}
1028   
1029    notes "
1030${subport} should not be enabled within a web server environment.\
1031Unexpected results may occur if any process control functions are used within\
1032a web server environment.
1033"
1034}
1035
1036subport ${php}-posix {
1037    categories-append       sysutils
1038   
1039    description             a PHP interface to additional POSIX functions
1040   
1041    long_description        a PHP interface to those functions defined in the \
1042                            IEEE 1003.1 (POSIX.1) standards document which are \
1043                            not accessible through other means
1044}
1045
1046subport ${php}-postgresql {
1047    php.extensions          pgsql pdo_pgsql
1048   
1049    categories-append       databases
1050   
1051    homepage                http://www.php.net/pgsql
1052   
1053    description             a PHP interface to PostgreSQL, including \
1054                            the pgsql and pdo_pgsql extensions
1055   
1056    long_description        ${description}
1057   
1058    variant postgresql82 conflicts postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.2 libraries} {
1059        depends_lib-append      port:postgresql82
1060       
1061        configure.args-append   --with-pgsql=${prefix}/lib/postgresql82/bin \
1062                                --with-pdo-pgsql=${prefix}/lib/postgresql82/bin
1063    }
1064   
1065    variant postgresql83 conflicts postgresql82 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.3 libraries} {
1066        depends_lib-append      port:postgresql83
1067       
1068        configure.args-append   --with-pgsql=${prefix}/lib/postgresql83/bin \
1069                                --with-pdo-pgsql=${prefix}/lib/postgresql83/bin
1070    }
1071   
1072    variant postgresql84 conflicts postgresql82 postgresql83 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 8.4 libraries} {
1073        depends_lib-append      port:postgresql84
1074       
1075        configure.args-append   --with-pgsql=${prefix}/lib/postgresql84/bin \
1076                                --with-pdo-pgsql=${prefix}/lib/postgresql84/bin
1077    }
1078   
1079    variant postgresql90 conflicts postgresql82 postgresql83 postgresql84 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 9.0 libraries} {
1080        depends_lib-append      port:postgresql90
1081       
1082        configure.args-append   --with-pgsql=${prefix}/lib/postgresql90/bin \
1083                                --with-pdo-pgsql=${prefix}/lib/postgresql90/bin
1084    }
1085   
1086    variant postgresql91 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 9.1 libraries} {
1087        depends_lib-append      port:postgresql91
1088       
1089        configure.args-append   --with-pgsql=${prefix}/lib/postgresql91/bin \
1090                                --with-pdo-pgsql=${prefix}/lib/postgresql91/bin
1091    }
1092   
1093    variant postgresql92 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql93 postgresql94 description {Use PostgreSQL 9.2 libraries} {
1094        depends_lib-append      port:postgresql92
1095       
1096        configure.args-append   --with-pgsql=${prefix}/lib/postgresql92/bin \
1097                                --with-pdo-pgsql=${prefix}/lib/postgresql92/bin
1098    }
1099   
1100    variant postgresql93 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql94 description {Use PostgreSQL 9.3 libraries} {
1101        depends_lib-append      port:postgresql93
1102       
1103        configure.args-append   --with-pgsql=${prefix}/lib/postgresql93/bin \
1104                                --with-pdo-pgsql=${prefix}/lib/postgresql93/bin
1105    }
1106   
1107    variant postgresql94 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 description {Use PostgreSQL 9.4 libraries} {
1108        depends_lib-append      port:postgresql94
1109       
1110        configure.args-append   --with-pgsql=${prefix}/lib/postgresql94/bin \
1111                                --with-pdo-pgsql=${prefix}/lib/postgresql94/bin
1112    }
1113   
1114    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]} {
1115        default_variants +postgresql94
1116    }
1117}
1118
1119subport ${php}-pspell {
1120    categories-append       textproc
1121   
1122    description             a PHP interface to the aspell library, which lets you \
1123                            check spelling and offer spelling suggestions
1124   
1125    long_description        ${description}
1126   
1127    depends_lib-append      port:aspell
1128   
1129    configure.args-append   --with-pspell=${prefix}
1130}
1131
1132subport ${php}-snmp {
1133    categories-append       sysutils
1134   
1135    description             a PHP interface to the Simple Network Management \
1136                            Protocol (SNMP)
1137   
1138    long_description        ${description}
1139   
1140    depends_lib-append      port:net-snmp
1141   
1142    configure.args-append   --with-snmp=${prefix}
1143}
1144
1145subport ${php}-soap {
1146    categories-append       net
1147   
1148    description             a PHP extension for writing SOAP clients and servers
1149   
1150    long_description        ${description}
1151   
1152    depends_lib-append      port:libxml2
1153   
1154    configure.args-append   --with-libxml-dir=${prefix}
1155}
1156
1157subport ${php}-sockets {
1158    categories-append       net
1159   
1160    description             a PHP interface to BSD socket communication \
1161                            functions
1162   
1163    long_description        ${description}
1164}
1165
1166if {[vercmp ${branch} 5.3] >= 0} {
1167subport ${php}-sqlite {
1168    php.extensions          sqlite sqlite3 pdo_sqlite
1169   
1170    categories-append       databases
1171   
1172    description             a PHP interface to SQLite, including the sqlite, sqlite3 \
1173                            and pdo_sqlite extensions
1174   
1175    if {[vercmp ${branch} 5.4] >= 0} {
1176        php.extensions-delete sqlite
1177        description-delete "sqlite,"
1178    }
1179   
1180    long_description        ${description}
1181   
1182    depends_lib-append      port:sqlite3
1183   
1184    post-extract {
1185        move ${worksrcpath}/ext/sqlite3/config0.m4 ${worksrcpath}/ext/sqlite3/config.m4
1186    }
1187   
1188    configure.args-append   --with-sqlite3=${prefix} \
1189                            --with-pdo-sqlite=${prefix} \
1190                            --enable-sqlite-utf8
1191}
1192}
1193
1194subport ${php}-tidy {
1195    if {[vercmp ${branch} 5.3] <= 0} {
1196        revision            1
1197    }
1198   
1199    categories-append       www
1200   
1201    description             a PHP interface to tidy, the HTML cleaning and \
1202                            repair utility
1203   
1204    long_description        ${description}
1205   
1206    depends_lib-append      port:tidy
1207   
1208    configure.args-append   --with-tidy=${prefix}
1209}
1210
1211subport ${php}-wddx {
1212    categories-append       textproc
1213   
1214    description             a PHP interface to Web Distributed Data Exchange
1215   
1216    long_description        ${description}
1217   
1218    depends_build-append    port:expat \
1219                            port:libxml2
1220   
1221    configure.args-append   --with-libexpat-dir=${prefix} \
1222                            --with-libxml-dir=${prefix}
1223}
1224
1225subport ${php}-xmlrpc {
1226    categories-append       textproc
1227   
1228    description             a PHP extension for writing XML-RPC clients and servers
1229   
1230    long_description        ${description}
1231   
1232    depends_build-append    port:libiconv \
1233                            port:libxml2
1234   
1235    depends_lib-append      port:expat
1236   
1237    configure.args-append   --with-iconv-dir=${prefix} \
1238                            --with-libexpat-dir=${prefix} \
1239                            --with-libxml-dir=${prefix}
1240   
1241    pre-configure {
1242        configure.cppflags-append [exec ${prefix}/bin/xml2-config --cflags]
1243    }
1244}
1245
1246subport ${php}-xsl {
1247    categories-append       textproc
1248   
1249    description             a PHP interface to libxslt, which implements the XSL \
1250                            standard and lets you perform XSL transformations
1251   
1252    long_description        ${description}
1253   
1254    depends_lib-append      port:libxslt
1255   
1256    configure.args-append   --with-xsl=${prefix}
1257   
1258    configure.cppflags-append   -I${prefix}/include/${php}/php/ext/dom
1259}
1260
1261subport ${php}-zip {
1262    categories-append       archivers
1263   
1264    description             PHP zip functions
1265   
1266    long_description        ${description}
1267   
1268    depends_lib-append      port:zlib
1269   
1270    configure.args-append   --with-zlib-dir=${prefix}
1271}
1272
1273}
1274
1275# These variables are not only required by the subsequent code but also by
1276# preceding code in phase blocks.
1277set branch              ${subport_branch}
1278set php                 php[php.suffix_from_branch ${branch}]
1279
1280if {${name} eq ${subport}} {
1281    # Set up the stub port.
1282    version             ${branch}
1283    supported_archs     noarch
1284    distfiles
1285    depends_run         port:${php}
1286    use_configure       no
1287    build {}
1288    destroot {
1289        xinstall -d -m 755 ${destroot}${prefix}/share/doc/${subport}
1290        system "echo \"${name} is a stub port\" > ${destroot}${prefix}/share/doc/${subport}/README"
1291    }
1292} else {
1293    # Set an explicit distname so the default from the php portgroup doesn't get used.
1294    distname            ${name}-${version}
1295}
1296
1297proc get_default_php_extensions {} {
1298    global php.extensions.zend php.rootname
1299    if {0 < [llength ${php.extensions.zend}]} {
1300        return
1301    }
1302    return ${php.rootname}
1303}
1304
1305# Set up the php portgroup, for extension subports.
1306if {[is_extension_subport]} {
1307    default php.extensions {[get_default_php_extensions]}
1308    default homepage    http://www.php.net/${php.rootname}
1309   
1310    php.build_dirs
1311    set pdo no
1312    foreach extension [concat ${php.extensions} ${php.extensions.zend}] {
1313        if {[regexp {^pdo_} ${extension}]} {
1314            # The PDO extensions need the PDO headers.
1315            set pdo yes
1316            post-extract {
1317                file mkdir ${worksrcpath}/ext/${extension}/ext
1318                ln -s ${worksrcpath}/ext/pdo ${worksrcpath}/ext/${extension}/ext
1319            }
1320        }
1321       
1322        # Speed up extraction by extracting only the modules we're going to be building.
1323        extract.post_args-append ${worksrcdir}/ext/${extension}
1324       
1325        # Run phpize, configure, build and destroot in each extension's directory.
1326        php.build_dirs-append ${worksrcpath}/ext/${extension}
1327    }
1328   
1329    if {${pdo}} {
1330        # The PDO extensions need the PDO headers.
1331        extract.post_args-append ${worksrcdir}/ext/pdo
1332    }
1333   
1334    pre-configure {
1335        set php_version [exec ${php.config} --version 2>/dev/null]
1336        if {${version} ne ${php_version}} {
1337            ui_error "${subport} @${version} requires ${php} @${version} but you have ${php} @${php_version}."
1338            return -code error "incompatible ${php} installation"
1339        }
1340    }
1341   
1342    destroot.target     install-modules install-headers
1343   
1344    php.add_port_code
1345}
Note: See TracBrowser for help on using the repository browser.