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

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

php: update php56 to 5.6.1

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