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

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

remove use of [suffix] proc in my ports because it is thought to be confusing

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