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

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

php: explain why clang was blacklisted

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