# -*- 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 # $Id$ PortSystem 1.0 PortGroup php 1.1 PortGroup compiler_blacklist_versions 1.0 name php platforms darwin freebsd maintainers ryandesign license PHP-3.01 default master_sites {php:get/[lindex ${distfiles} 0]/from/this/mirror?dummy=} use_parallel_build yes livecheck.type none description PHP: Hypertext Preprocessor long_description PHP is a widely-used general-purpose scripting \ language that is especially suited for developing \ web sites, but can also be used for command-line \ scripting. # The list of PHP branches this port provides. php.branches 5.2 5.3 5.4 5.5 5.6 7.0 7.1 # Fix for users specifying the subport name with the wrong case. set subport [string tolower ${subport}] # Get rootname from subport. regexp {^php\d+-(.+)$} ${subport} -> php.rootname # Returns true if the subport is a SAPI, false otherwise (extension, stub port). proc is_sapi_subport {} { global name subport php.rootname if {${name} eq ${subport}} { return no } if {[regexp {^php\d+$} ${subport}]} { return yes } return [expr {-1 != [lsearch -exact [list apache2handler cgi fpm] ${php.rootname}]}] } # Returns true if the subport is an extension, false otherwise (SAPI, stub port). proc is_extension_subport {} { global name subport if {${name} eq ${subport}} { return no } return [expr {![is_sapi_subport]}] } if {![is_extension_subport]} { categories lang www homepage http://www.php.net/ } set subport_branch [php.branch_from_subport] # Remember to increment revision of ${php}-eaccelerator when updating version of ${php}. switch ${subport_branch} { 5.2 { version 5.2.17 master_sites http://museum.php.net/php5/ use_bzip2 yes set suhosin_available yes set suhosin_patch_version 5.2.16-0.9.7 set suhosin_patch suhosin-patch-${suhosin_patch_version}.patch.gz checksums ${distname}${extract.suffix} \ md5 b27947f3045220faf16e4d9158cbfe13 \ rmd160 567fa8d718b93fb83a89494c83a8bec224ac99e9 \ sha256 e81beb13ec242ab700e56f366e9da52fd6cf18961d155b23304ca870e53f116c \ ${suhosin_patch} \ rmd160 b28b70faf136b3e04c5b483da0f4c2279378f43a \ sha256 aae115a318d80b3f32cedf876e7a8e4b932febb1b0c743c0b398003ebe122f91 } 5.3 { version 5.3.29 use_bzip2 yes set suhosin_available yes set suhosin_patch_version 5.3.9-0.9.10 set suhosin_patch suhosin-patch-${suhosin_patch_version}.patch.gz checksums ${distname}${extract.suffix} \ md5 9469e240cbe6ac865aeaec89b253dd30 \ rmd160 e57beb4fdda41bca81b5856161bc97f3c5e3e9da \ sha256 c4e1cf6972b2a9c7f2777a18497d83bf713cdbecabb65d3ff62ba441aebb0091 \ ${suhosin_patch} \ rmd160 ce43921fd9b183b154713ecda98294f6c68d5f22 \ sha256 4438caeab0a10c6c94aee9f7eaa703f5799f97d4e0579f43a947bb7314e38317 } 5.4 { epoch 1 version 5.4.45 use_bzip2 yes checksums rmd160 352a0ea8fb75a447301c1434609ac0e4b96acc0c \ sha256 4e0d28b1554c95cfaea6fa2b64aac85433f158ce72bb571bcd5574f98f4c6582 } 5.5 { epoch 2 version 5.5.36 use_xz yes checksums rmd160 a2ac1cd00db5b69e68856f2a887a85ea716e59c2 \ sha256 e1bbe33d6b4da66b15c483131520a9fc505eeb6629fa70c5cfba79590a1d0801 } 5.6 { epoch 2 version 5.6.27 use_xz yes checksums rmd160 db27b268d28f5c7dce06cfaa39fa84104074c90b \ sha256 16eb544498339d1d855292826e2e547ab01a31600141094959073e5e10e93ab5 } 7.0 { epoch 2 version 7.0.12 use_xz yes checksums rmd160 bfad5c87eb76ea4e5ee2958e14b906be057512b0 \ sha256 f3d6c49e1c242e5995dec15e503fde996c327eb86cd7ec45c690e93c971b83ff } 7.1 { # When this becomes a stable version, remove the overrides for homepage, # master_sites and livecheck, and update php.latest_stable_branch in the # php-1.1 portgroup. epoch 1 version 7.1.0RC5 homepage https://qa.php.net/ master_sites https://downloads.php.net/~krakjoe/ use_xz yes checksums md5 1d195b0aeb63914a308fb215671445a5 \ rmd160 1a0d51b3518e1b5bb958ff775626d4de4ec3685b \ sha256 55a1b47cfa090760bb26438eb4faa7c62cd16eca4e527759e3941b38941f8f14 livecheck.url ${homepage} livecheck.regex php-([strsed ${subport_branch} {g/\\./\\./}](?:\\.\[0-9.\]+)*(?:(?:alpha|beta|RC)\\d+|-latest))\\.tar } } # Iterate through branches in reverse order, so that the list of subports in # "port info" will show newer versions before older versions. set i [llength ${php.branches}] while {[incr i -1] >= 0} { set branch [lindex ${php.branches} ${i}] set major [lindex [split ${branch} .] 0] set php php[php.suffix_from_branch ${branch}] if {[regexp "^${php}" ${subport}]} { if {[vercmp ${major} 5] > 0} { dist_subdir ${php} } else { dist_subdir php${major} } if {[is_sapi_subport]} { depends_build port:pkgconfig if {${subport} ne ${php}} { depends_lib port:${php} } depends_lib-append path:bin/gsed:gsed \ port:libiconv \ port:libxml2 \ port:bzip2 \ port:mhash \ port:pcre \ port:zlib # Use -p1 to accommodate the Suhosin patch patch.pre_args -p1 patchfiles patch-${php}-scripts-php-config.in.diff if {[vercmp ${branch} 5.2] <= 0} { patchfiles-append \ patch-${php}-libxml-2.9.diff \ patch-${php}-pcre-8.30.diff } # https://trac.macports.org/ticket/31590 # Tested all subports (except oracle) and they built with clang-425. The reported failure was with Xcode 4.2. # Xcode 4.3 may work, but leaving it blacklisted due to lack of testing compiler.blacklist {clang < 400} set phpinidir ${prefix}/etc/${php} set extraphpinidir ${prefix}/var/db/${php} configure.args --mandir=${prefix}/share/man \ --infodir=${prefix}/share/info \ --program-suffix=[php.suffix_from_branch ${branch}] \ --includedir=${prefix}/include/${php} \ --libdir=${prefix}/lib/${php} \ --with-config-file-path=${phpinidir} \ --with-config-file-scan-dir=${extraphpinidir} \ --disable-all \ --enable-bcmath \ --enable-ctype \ --enable-dom \ --enable-filter \ --enable-hash \ --enable-json \ --enable-libxml \ --enable-pdo \ --enable-session \ --enable-simplexml \ --enable-tokenizer \ --enable-xml \ --enable-xmlreader \ --enable-xmlwriter \ --with-bz2=${prefix} \ --with-mhash=${prefix} \ --with-pcre-regex=${prefix} \ --with-libxml-dir=${prefix} \ --with-zlib=${prefix} \ --without-pear \ --disable-cgi \ --disable-cli if {[vercmp ${branch} 5.3] >= 0} { configure.args-append \ --enable-fileinfo \ --enable-phar \ --disable-fpm # ${php}-mysql +mysqlnd needs mysqlnd support compiled into the SAPI configure.env-append \ PHP_MYSQLND_ENABLED=yes } if {[vercmp ${branch} 5.4] == 0} { # https://bugs.php.net/bug.php?id=68114 configure.args-append ac_cv_decimal_fp_supported=no } configure.universal_args-delete --disable-dependency-tracking test.run yes destroot.args INSTALL_ROOT=${destroot} variant debug description {Enable debug support (useful to analyze a PHP-related core dump)} { configure.args-append --enable-debug } if {[vercmp ${branch} 5.3] <= 0} { variant suhosin description {Add Suhosin patch} { pre-fetch { if {${os.platform} eq "darwin" && ${os.major} < 9} { ui_error "The suhosin variant requires Mac OS X 10.5 or greater." return -code error "incompatible Mac OS X version" } if {!${suhosin_available}} { ui_error "There is no suhosin patch for PHP ${version} yet. Please check back later." } if {![file exists ${extraphpinidir}/suhosin.ini]} { ui_msg "You may also be interested in the suhosin extension, a related but different piece of software. See the ${php}-suhosin port." } if {!${suhosin_available}} { return -code error "unavailable variant" } } patch_sites-append http://download.suhosin.org/ if {${suhosin_available}} { if {[vercmp ${branch} 5.3] >= 0} { patchfiles-append patch-${php}-suhosin-before.diff } patchfiles-append ${suhosin_patch} if {[vercmp ${branch} 5.3] >= 0} { patchfiles-append patch-${php}-suhosin-after.diff } } } } if {${subport} ne ${php}} { notes-append "If this is your first install, you need to enable ${subport} in your web server." } } } ### CLI SAPI ### subport ${php} { PortGroup select 1.0 switch -- ${version} { 5.2.17 {revision 11} 5.3.29 {revision 1} } depends_run port:php_select select.group php select.file ${filespath}/${subport} configure.args-replace --disable-cli --enable-cli destroot.target install-cli install-build install-headers install-programs destroot.keepdirs ${destroot}${extraphpinidir} post-destroot { # Copy the default php.ini files. xinstall -m 755 -d ${destroot}${phpinidir} if {[vercmp ${branch} 5.3] >= 0} { xinstall -m 644 -W ${worksrcpath} \ php.ini-development \ php.ini-production \ ${destroot}${phpinidir} } else { xinstall -m 644 -W ${worksrcpath} \ php.ini-dist \ php.ini-recommended \ ${destroot}${phpinidir} } if {[vercmp ${branch} 5.3] >= 0} { # Copy mysqlnd headers. xinstall -d ${destroot}${prefix}/include/${php}/php/ext/mysqlnd xinstall -m 644 {*}[glob ${worksrcpath}/ext/mysqlnd/*.h] ${destroot}${prefix}/include/${php}/php/ext/mysqlnd } } # Include the readline extension http://www.php.net/readline directly in # the PHP CLI SAPI because until PHP 6 the interactive mode "php -a" won't # work with a separately built readline extension. # https://bugs.php.net/bug.php?id=53878 # Users might prefer readline over libedit because only readline supports # readline_list_history() (http://www.php.net/readline-list-history). # On the other hand we want libedit to be the default because its license # is compatible with PHP's which means PHP can be distributable. variant libedit conflicts readline description {Build readline extension using libedit library} { depends_lib-append port:libedit port:ncurses configure.args-append --with-libedit=${prefix} } variant readline conflicts libedit description {Build readline extension using readline library} { depends_lib-append port:ncurses port:readline configure.args-append --with-readline=${prefix} } if {![variant_isset readline]} { default_variants +libedit } if {[vercmp ${branch} 5.5] < 0} { notes-append " PHP ${branch} has reached end-of-life. Please upgrade to PHP 5.5 or newer. The newest stable version is ${php.latest_stable_branch}. To learn how to update your code, please read the following guides: http://php.net/manual/en/migration[php.suffix_from_branch ${php.latest_stable_branch}].php " } if {[vercmp ${branch} ${php.latest_stable_branch}] > 0} { notes-append "${php} @${version}_${revision} is a development preview—do not use it in production!\n\n\n" } if {![file exists ${phpinidir}/php.ini]} { if {[vercmp ${branch} 5.3] >= 0} { notes-append " To customize ${php}, copy\ ${phpinidir}/php.ini-development (if this is a development server) or\ ${phpinidir}/php.ini-production (if this is a production server) to\ ${phpinidir}/php.ini and then make changes. " } else { notes-append " To customize ${php}, copy ${phpinidir}/php.ini-recommended to\ ${phpinidir}/php.ini and then make changes. " } } else { if {[vercmp ${branch} 5.3] >= 0} { notes-append " You may need to update your php.ini for any changes that have been made\ in this version of ${php}. Compare ${phpinidir}/php.ini with\ ${phpinidir}/php.ini-development (if this is a development server) or\ ${phpinidir}/php.ini-production (if this is a production server). " } else { notes-append " You may need to update your php.ini for any changes that have been made\ in this version of ${php}. Compare ${phpinidir}/php.ini with\ ${phpinidir}/php.ini-recommended. " } } # Enable livecheck for the two most recent stable PHP branches and the development branch. if {[vercmp ${branch} [lindex ${php.branches} end-2]] >= 0} { livecheck.type regex default livecheck.url ${homepage}downloads.php default livecheck.regex {get/php-([strsed ${branch} {g/\\./\\./}](?:\\.\[0-9.\]+)*)\\.tar} } } ### Apache 2 handler SAPI ### subport ${php}-apache2handler { PortGroup active_variants 1.1 description ${php} Apache 2 Handler SAPI long_description ${description} homepage http://www.php.net/install.unix.apache2 depends_lib-append port:apache2 require_active_variants apache2 preforkmpm set apxs ${prefix}/apache2/bin/apxs set confdir ${prefix}/apache2/conf set moduledir ${prefix}/apache2/modules configure.args-append --with-apxs2=${apxs} build.target libs/libphp${major}.bundle destroot.violate_mtree yes destroot { xinstall -m 755 -d ${destroot}${moduledir} ${destroot}${confdir}/extra xinstall -m 644 ${worksrcpath}/libs/libphp${major}.so ${destroot}${moduledir}/mod_${php}.so xinstall -m 644 ${filespath}/mod_php.conf.in ${destroot}${confdir}/extra/mod_${php}.conf reinplace s/@MAJOR@/${major}/g ${destroot}${confdir}/extra/mod_${php}.conf } notes-append " To enable ${subport}, run: cd ${moduledir} sudo ${apxs} -a -e -n php${major} mod_${php}.so " } ### CGI SAPI ### subport ${php}-cgi { description ${php} CGI SAPI long_description ${description} homepage http://www.php.net/install.unix.commandline configure.args-delete --disable-cgi if {[vercmp ${branch} 5.3] >= 0} { configure.args-append --enable-cgi } else { configure.args-append --enable-fastcgi --enable-force-cgi-redirect } if {[vercmp ${branch} 5.4] >= 0} { build.target cgi destroot.target install-cgi } else { destroot { xinstall ${worksrcpath}/sapi/cgi/php-cgi ${destroot}${prefix}/bin/php-cgi[php.suffix_from_branch ${branch}] } } } ### FPM SAPI ### if {[vercmp ${branch} 5.3] >= 0} { subport ${php}-fpm { description ${php} FPM SAPI long_description ${description} homepage http://www.php.net/install.fpm set fpmuser nobody set fpmgroup nobody patchfiles-append patch-${php}-sapi-fpm-php-fpm.conf.in.diff post-patch { reinplace "s|@PHP@|${php}|g" ${worksrcpath}/sapi/fpm/php-fpm.conf.in } configure.args-replace --disable-fpm --enable-fpm configure.args-append --datadir=${prefix}/share/examples/${php} \ --sysconfdir=${phpinidir} \ --with-fpm-user=${fpmuser} \ --with-fpm-group=${fpmgroup} build.target fpm destroot.target install-fpm destroot.keepdirs ${destroot}${prefix}/var/log/${php} \ ${destroot}${prefix}/var/run/${php} post-destroot { xinstall -d -o ${fpmuser} -g ${fpmgroup} ${destroot}${prefix}/var/log/${php} ${destroot}${prefix}/var/run/${php} } startupitem.create yes startupitem.executable ${prefix}/sbin/php-fpm[php.suffix_from_branch ${branch}] if {![file exists ${phpinidir}/php-fpm.conf]} { notes-append " To use ${subport}, copy\ ${phpinidir}/php-fpm.conf.default to\ ${phpinidir}/php-fpm.conf and make changes if desired. " } else { notes-append " You may need to update your php-fpm.conf for any changes that have been made\ in this version of ${subport}. Compare ${phpinidir}/php-fpm.conf with\ ${phpinidir}/php-fpm.conf.default. " } } } ### Bundled extensions ### subport ${php}-calendar { description a PHP extension for converting between different \ calendar formats long_description ${description} } subport ${php}-curl { categories-append net www description a PHP interface to the curl library, which lets you \ download files from servers with a variety of protocols long_description ${description} depends_lib-append port:curl configure.args-append --with-curl=${prefix} } subport ${php}-dba { categories-append databases description a PHP interface for accessing DBM databases such as \ BerkeleyDB long_description ${description} variant gdbm conflicts qdbm description {Add GDBM support} { depends_lib-append port:gdbm configure.args-append --with-gdbm=${prefix} } variant qdbm conflicts gdbm description {Add QDBM support} { depends_lib-append port:qdbm configure.args-append --with-qdbm=${prefix} } } if {[vercmp ${branch} 5.3] >= 0} { subport ${php}-enchant { categories-append textproc devel description a PHP interface to enchant long_description ${name} is ${description}, a common API for many spell libraries. depends_lib-append port:enchant configure.args-append --with-enchant=${prefix} post-destroot { set docdir ${prefix}/share/doc/${subport} xinstall -d ${destroot}${docdir} xinstall -m 644 -W ${destroot.dir} CREDITS ${destroot}${docdir} set examplesdir ${prefix}/share/examples/${subport} xinstall -d ${destroot}${examplesdir} xinstall -m 644 ${destroot.dir}/docs/examples/example1.php \ ${destroot}${examplesdir} } } } subport ${php}-exif { categories-append graphics description a PHP interface to the EXIF image metadata functions long_description ${description} } subport ${php}-ftp { categories-append net description a PHP extension for accessing file servers using the \ File Transfer Protocol long_description ${description} depends_lib-append path:lib/libssl.dylib:openssl configure.args-append --with-openssl-dir=${prefix} } subport ${php}-gd { categories-append graphics description a PHP interface to the gd library long_description ${description} depends_lib-append port:freetype \ port:jpeg \ port:libpng \ port:zlib patchfiles-append patch-${php}-ext-gd-config.m4.diff configure.args-append --with-freetype-dir=${prefix} \ --with-jpeg-dir=${prefix} \ --with-png-dir=${prefix} \ --with-zlib-dir=${prefix} \ --enable-gd-native-ttf if {[vercmp ${branch} 7.0] >= 0} { depends_lib-append port:webp configure.args-append --with-webp-dir=${prefix} } if {[vercmp ${branch} 7] < 0} { variant t1lib description {Add PostScript Type 1 font support with t1lib} { depends_lib-append port:t1lib configure.args-append --with-t1lib=${prefix} } } } subport ${php}-gettext { categories-append devel description a PHP interface to the gettext natural language \ support functions long_description ${description} depends_lib-append port:gettext configure.args-append --with-gettext=${prefix} } subport ${php}-gmp { categories-append devel math description a PHP interface to GMP, the GNU multiprocessing \ library through which you can work with \ arbitrary-length integers long_description ${description} depends_lib-append port:gmp if {[vercmp ${branch} 5.2] <= 0} { patchfiles-append patch-${php}-ext-gmp-gmp.c.diff } configure.args-append --with-gmp=${prefix} } subport ${php}-iconv { categories-append textproc description a PHP interface to the libiconv character encoding \ conversion functions long_description ${description} depends_lib-append port:libiconv configure.args-append --with-iconv=${prefix} } subport ${php}-imap { categories-append mail description a PHP interface to the IMAP protocol long_description ${description} depends_build-append port:cclient depends_lib-append port:kerberos5 \ port:libcomerr configure.args-append --with-imap=${prefix} \ --with-imap-ssl=${prefix} \ --with-kerberos=${prefix} } if {[vercmp ${branch} 5.3] >= 0} { subport ${php}-intl { switch -- ${version} { 5.3.29 {revision 2} } categories-append devel description internationalization extension for PHP long_description Internationalization extension implements ICU \ library functionality in PHP. depends_lib-append port:icu } } subport ${php}-ipc { php.extensions shmop sysvmsg sysvsem sysvshm description interprocess communication extensions for PHP long_description PHP extensions for interprocess communication (IPC), including the \ shmop, sysvmsg, sysvsem, and sysvshm extensions. } subport ${php}-ldap { categories-append databases description a PHP interface to LDAP long_description ${subport} is ${description}, the Lightweight Directory \ Access Protocol, which is used to access Directory \ Servers. depends_lib-append port:openldap \ port:cyrus-sasl2 configure.args-append --with-ldap=${prefix} \ --with-ldap-sasl=${prefix} } subport ${php}-mbstring { categories-append textproc description a PHP extension for manipulating strings in multibyte \ encodings long_description ${description} } subport ${php}-mcrypt { categories-append security description a PHP interface to the mcrypt library, which offers \ a wide variety of algorithms long_description ${description} depends_lib-append port:libmcrypt # The mcrypt extension may be using libtool unnecessarily; monitor # https://bugs.php.net/bug.php?id=54500 depends_lib-append port:libtool configure.args-append --with-mcrypt=${prefix} } if {[vercmp ${branch} 7] < 0} { subport ${php}-mssql { php.extensions mssql pdo_dblib categories-append databases description a PHP interface to MSSQL using FreeTDS, including \ the mssql and pdo_dblib extensions long_description ${description} depends_lib-append port:freetds configure.args-append --with-mssql=${prefix} \ --with-pdo-dblib=${prefix} } } subport ${php}-mysql { php.extensions mysqli pdo_mysql if {[vercmp ${branch} 7] < 0} { php.extensions-prepend mysql } categories-append databases description a PHP interface to MySQL databases, including the if {[vercmp ${branch} 7] < 0} { description-append mysql, } description-append mysqli and pdo_mysql extensions long_description ${description} depends_lib-append port:zlib configure.args-append --with-zlib-dir=${prefix} if {[vercmp ${branch} 5.3] >= 0} { variant mysqlnd conflicts mysql4 mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL Native Driver} { configure.args-append --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd configure.cppflags-append -I${worksrcpath} set phpini ${prefix}/etc/${php}/php.ini notes " To use mysqlnd with a local MySQL server, edit ${phpini} and set\ mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket\ to the path to your MySQL server's socket file. For mysql5, use ${prefix}/var/run/mysql5/mysqld.sock For mysql51, use ${prefix}/var/run/mysql51/mysqld.sock For mysql55, use ${prefix}/var/run/mysql55/mysqld.sock For mysql56, use ${prefix}/var/run/mysql56/mysqld.sock For mariadb, use ${prefix}/var/run/mariadb/mysqld.sock For percona, use ${prefix}/var/run/percona/mysqld.sock " } } variant mysql4 conflicts mysqlnd mysql5 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 4 libraries} { depends_lib-append port:mysql4 configure.args-append --with-mysql=${prefix} \ --with-pdo-mysql=${prefix} } variant mysql5 conflicts mysqlnd mysql4 mysql51 mysql55 mysql56 mariadb percona description {Use MySQL 5 libraries} { depends_lib-append path:bin/mysql_config5:mysql5 post-extract { file mkdir ${workpath}/mysql5 file link -symbolic ${workpath}/mysql5/lib ${prefix}/lib/mysql5 file link -symbolic ${workpath}/mysql5/include ${prefix}/include/mysql5 } configure.args-append --with-mysql=${workpath}/mysql5 \ --with-mysqli=${prefix}/bin/mysql_config5 \ --with-pdo-mysql=${prefix}/bin/mysql_config5 \ --with-mysql-sock=${prefix}/var/run/mysql5/mysqld.sock } variant mysql51 conflicts mysqlnd mysql4 mysql5 mysql55 mysql56 mariadb percona description {Use MySQL 5.1 libraries} { depends_lib-append port:mysql51 post-extract { file mkdir ${workpath}/mysql51 file link -symbolic ${workpath}/mysql51/lib ${prefix}/lib/mysql51 file link -symbolic ${workpath}/mysql51/include ${prefix}/include/mysql51 } configure.args-append --with-mysql=${workpath}/mysql51 \ --with-mysqli=${prefix}/lib/mysql51/bin/mysql_config \ --with-pdo-mysql=${prefix}/lib/mysql51/bin/mysql_config \ --with-mysql-sock=${prefix}/var/run/mysql51/mysqld.sock } variant mysql55 conflicts mysqlnd mysql4 mysql5 mysql51 mysql56 mariadb percona description {Use MySQL 5.5 libraries} { depends_lib-append port:mysql55 post-extract { file mkdir ${workpath}/mysql55 file link -symbolic ${workpath}/mysql55/lib ${prefix}/lib/mysql55 file link -symbolic ${workpath}/mysql55/include ${prefix}/include/mysql55 } configure.args-append --with-mysql=${workpath}/mysql55 \ --with-mysqli=${prefix}/lib/mysql55/bin/mysql_config \ --with-pdo-mysql=${prefix}/lib/mysql55/bin/mysql_config \ --with-mysql-sock=${prefix}/var/run/mysql55/mysqld.sock } variant mysql56 conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mariadb percona description {Use MySQL 5.6 libraries} { depends_lib-append port:mysql56 post-extract { file mkdir ${workpath}/mysql56 file link -symbolic ${workpath}/mysql56/lib ${prefix}/lib/mysql56 file link -symbolic ${workpath}/mysql56/include ${prefix}/include/mysql56 } configure.args-append --with-mysql=${workpath}/mysql56 \ --with-mysqli=${prefix}/lib/mysql56/bin/mysql_config \ --with-pdo-mysql=${prefix}/lib/mysql56/bin/mysql_config \ --with-mysql-sock=${prefix}/var/run/mysql56/mysqld.sock } variant mariadb conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 percona description {Use MariaDB libraries} { depends_lib-append port:mariadb post-extract { file mkdir ${workpath}/mariadb file link -symbolic ${workpath}/mariadb/lib ${prefix}/lib/mariadb file link -symbolic ${workpath}/mariadb/include ${prefix}/include/mariadb } configure.args-append --with-mysql=${workpath}/mariadb \ --with-mysqli=${prefix}/lib/mariadb/bin/mysql_config \ --with-pdo-mysql=${prefix}/lib/mariadb/bin/mysql_config \ --with-mysql-sock=${prefix}/var/run/mariadb/mysqld.sock } variant percona conflicts mysqlnd mysql4 mysql5 mysql51 mysql55 mysql56 mariadb description {Use Percona libraries} { depends_lib-append port:percona post-extract { file mkdir ${workpath}/percona file link -symbolic ${workpath}/percona/lib ${prefix}/lib/percona file link -symbolic ${workpath}/percona/include ${prefix}/include/percona } configure.args-append --with-mysql=${workpath}/percona \ --with-mysqli=${prefix}/lib/percona/bin/mysql_config \ --with-pdo-mysql=${prefix}/lib/percona/bin/mysql_config \ --with-mysql-sock=${prefix}/var/run/percona/mysqld.sock } if {![variant_isset mysql4] && ![variant_isset mysql5] && ![variant_isset mysql51] && ![variant_isset mysql55] && ![variant_isset mysql56] && ![variant_isset mariadb] && ![variant_isset percona]} { if {[vercmp ${branch} 5.3] >= 0} { default_variants +mysqlnd } else { default_variants +mariadb } } } subport ${php}-odbc { php.extensions odbc pdo_odbc categories-append databases description a PHP interface for accessing databases via Open \ DataBase Connectivity (ODBC) long_description ${description} variant iodbc conflicts unixodbc description {Use iODBC} { depends_lib-append port:libiodbc patchfiles-append patch-${php}-iODBC.diff configure.args-append --with-iODBC=${prefix} \ --with-pdo-odbc=iODBC,${prefix} } variant unixodbc conflicts iodbc description {Use unixODBC} { depends_lib-append port:unixODBC patchfiles-append patch-${php}-unixODBC.diff configure.args-append --with-unixODBC=${prefix} \ --with-pdo-odbc=unixODBC,${prefix} } if {![variant_isset iodbc] && ![variant_isset unixodbc]} { default_variants +unixodbc } } if {[vercmp ${branch} 5.5] >= 0} { subport ${php}-opcache { php.extensions.zend opcache description OPcache improves PHP performance by storing precompiled \ script bytecode in shared memory, thereby removing the \ need for PHP to load and parse scripts on each request. long_description ${description} configure.args-append --enable-opcache post-destroot { set docdir ${destroot}${prefix}/share/doc/${subport} xinstall -d ${docdir} xinstall -W ${destroot.dir} -m 644 README ${docdir} } } } subport ${php}-openssl { categories-append devel security description a PHP interface to OpenSSL signature-generation \ and -verification and data-encryption and \ -decryption functions long_description ${description} depends_lib-append port:kerberos5 \ port:libcomerr \ path:lib/libssl.dylib:openssl post-extract { move ${php.build_dirs}/config0.m4 ${php.build_dirs}/config.m4 } configure.args-append --with-kerberos=${prefix} \ --with-openssl=${prefix} } subport ${php}-oracle { php.extensions oci8 pdo_oci categories-append databases description a PHP interface to Oracle, including the oci8 and \ pdo_oci extensions long_description ${description} depends_lib-append port:oracle-instantclient if {[vercmp ${branch} 5.2] <= 0} { patchfiles-append patch-${php}-ext-pdo_oci-config.m4.diff } set lib_dir ${prefix}/lib/oracle pre-configure { regexp {\.dylib\.(.+)$} [glob -directory ${lib_dir} libclntsh.dylib.*] -> library_version configure.args-append \ --with-oci8=instantclient,${lib_dir} \ --with-pdo-oci=instantclient,${lib_dir},${library_version} } } subport ${php}-pcntl { categories-append sysutils description a PHP interface to Unix-style process creation, \ program execution, signal handling and process \ termination functions long_description ${description} notes " ${subport} should not be enabled within a web server environment.\ Unexpected results may occur if any process control functions are used within\ a web server environment. " } subport ${php}-posix { categories-append sysutils description a PHP interface to additional POSIX functions long_description a PHP interface to those functions defined in the \ IEEE 1003.1 (POSIX.1) standards document which are \ not accessible through other means } subport ${php}-postgresql { php.extensions pgsql pdo_pgsql categories-append databases homepage http://www.php.net/pgsql description a PHP interface to PostgreSQL, including \ the pgsql and pdo_pgsql extensions long_description ${description} variant postgresql82 conflicts postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 8.2 libraries} { depends_lib-append port:postgresql82 configure.args-append --with-pgsql=${prefix}/lib/postgresql82/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql82/bin } variant postgresql83 conflicts postgresql82 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 8.3 libraries} { depends_lib-append port:postgresql83 configure.args-append --with-pgsql=${prefix}/lib/postgresql83/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql83/bin } variant postgresql84 conflicts postgresql82 postgresql83 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 8.4 libraries} { depends_lib-append port:postgresql84 configure.args-append --with-pgsql=${prefix}/lib/postgresql84/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql84/bin } variant postgresql90 conflicts postgresql82 postgresql83 postgresql84 postgresql91 postgresql92 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 9.0 libraries} { depends_lib-append port:postgresql90 configure.args-append --with-pgsql=${prefix}/lib/postgresql90/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql90/bin } variant postgresql91 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql92 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 9.1 libraries} { depends_lib-append port:postgresql91 configure.args-append --with-pgsql=${prefix}/lib/postgresql91/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql91/bin } variant postgresql92 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql93 postgresql94 postgresql95 description {Use PostgreSQL 9.2 libraries} { depends_lib-append port:postgresql92 configure.args-append --with-pgsql=${prefix}/lib/postgresql92/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql92/bin } variant postgresql93 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql94 postgresql95 description {Use PostgreSQL 9.3 libraries} { depends_lib-append port:postgresql93 configure.args-append --with-pgsql=${prefix}/lib/postgresql93/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql93/bin } variant postgresql94 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql95 description {Use PostgreSQL 9.4 libraries} { depends_lib-append port:postgresql94 configure.args-append --with-pgsql=${prefix}/lib/postgresql94/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql94/bin } variant postgresql95 conflicts postgresql82 postgresql83 postgresql84 postgresql90 postgresql91 postgresql92 postgresql93 postgresql94 description {Use PostgreSQL 9.5 libraries} { depends_lib-append port:postgresql95 configure.args-append --with-pgsql=${prefix}/lib/postgresql95/bin \ --with-pdo-pgsql=${prefix}/lib/postgresql95/bin } if {![variant_isset postgresql82] && ![variant_isset postgresql83] && ![variant_isset postgresql84] && ![variant_isset postgresql90] && ![variant_isset postgresql91] && ![variant_isset postgresql92] && ![variant_isset postgresql93] && ![variant_isset postgresql94] && ![variant_isset postgresql95]} { default_variants +postgresql94 } } subport ${php}-pspell { categories-append textproc description a PHP interface to the aspell library, which lets you \ check spelling and offer spelling suggestions long_description ${description} depends_lib-append port:aspell configure.args-append --with-pspell=${prefix} } subport ${php}-snmp { categories-append sysutils description a PHP interface to the Simple Network Management \ Protocol (SNMP) long_description ${description} depends_lib-append port:net-snmp configure.args-append --with-snmp=${prefix} } subport ${php}-soap { categories-append net description a PHP extension for writing SOAP clients and servers long_description ${description} depends_lib-append port:libxml2 configure.args-append --with-libxml-dir=${prefix} } subport ${php}-sockets { categories-append net description a PHP interface to BSD socket communication \ functions long_description ${description} } if {[vercmp ${branch} 5.3] >= 0} { subport ${php}-sqlite { php.extensions sqlite sqlite3 pdo_sqlite categories-append databases description a PHP interface to SQLite, including the sqlite, sqlite3 \ and pdo_sqlite extensions if {[vercmp ${branch} 5.4] >= 0} { php.extensions-delete sqlite description-delete "sqlite," } long_description ${description} depends_lib-append port:sqlite3 post-extract { move ${worksrcpath}/ext/sqlite3/config0.m4 ${worksrcpath}/ext/sqlite3/config.m4 } configure.args-append --with-sqlite3=${prefix} \ --with-pdo-sqlite=${prefix} \ --enable-sqlite-utf8 } } subport ${php}-tidy { switch -- ${version} { 5.2.17 {revision 2} 5.3.29 {revision 2} 5.4.45 {revision 1} } categories-append www description a PHP interface to tidy, the HTML cleaning and \ repair utility long_description ${description} depends_lib-append port:tidy if {[vercmp ${branch} 7.0] <= 0} { patchfiles-append patch-${php}-ext-tidy-tidy.c.diff } configure.args-append --with-tidy=${prefix} } subport ${php}-wddx { categories-append textproc description a PHP interface to Web Distributed Data Exchange long_description ${description} depends_build-append port:expat \ port:libxml2 configure.args-append --with-libexpat-dir=${prefix} \ --with-libxml-dir=${prefix} } subport ${php}-xmlrpc { categories-append textproc description a PHP extension for writing XML-RPC clients and servers long_description ${description} depends_build-append port:libiconv \ port:libxml2 depends_lib-append port:expat configure.args-append --with-iconv-dir=${prefix} \ --with-libexpat-dir=${prefix} \ --with-libxml-dir=${prefix} pre-configure { configure.cppflags-append [exec ${prefix}/bin/xml2-config --cflags] } } subport ${php}-xsl { categories-append textproc description a PHP interface to libxslt, which implements the XSL \ standard and lets you perform XSL transformations long_description ${description} depends_lib-append port:libxslt configure.args-append --with-xsl=${prefix} configure.cppflags-append -I${prefix}/include/${php}/php/ext/dom } subport ${php}-zip { categories-append archivers description PHP zip functions long_description ${description} depends_lib-append port:zlib configure.args-append --with-zlib-dir=${prefix} } } # These variables are not only required by the subsequent code but also by # preceding code in phase blocks. set branch ${subport_branch} set major [lindex [split ${branch} .] 0] set php php[php.suffix_from_branch ${branch}] if {${name} eq ${subport}} { # Set up the stub port. version ${branch} supported_archs noarch distfiles depends_run port:${php} use_configure no build {} destroot { xinstall -d -m 755 ${destroot}${prefix}/share/doc/${subport} system "echo \"${name} is a stub port\" > ${destroot}${prefix}/share/doc/${subport}/README" } } else { # Set an explicit distname so the default from the php portgroup doesn't get used. distname ${name}-${version} } proc get_default_php_extensions {} { global php.extensions.zend php.rootname if {0 < [llength ${php.extensions.zend}]} { return } return ${php.rootname} } # Set up the php portgroup, for extension subports. if {[is_extension_subport]} { default php.extensions {[get_default_php_extensions]} default homepage http://www.php.net/${php.rootname} php.build_dirs set pdo no foreach extension [concat ${php.extensions} ${php.extensions.zend}] { if {[regexp {^pdo_} ${extension}]} { # The PDO extensions need the PDO headers. set pdo yes post-extract { file mkdir ${worksrcpath}/ext/${extension}/ext ln -s ${worksrcpath}/ext/pdo ${worksrcpath}/ext/${extension}/ext } } # Speed up extraction by extracting only the modules we're going to be building. extract.post_args-append ${worksrcdir}/ext/${extension} # Run phpize, configure, build and destroot in each extension's directory. php.build_dirs-append ${worksrcpath}/ext/${extension} } if {${pdo}} { # The PDO extensions need the PDO headers. extract.post_args-append ${worksrcdir}/ext/pdo } pre-configure { set php_version [exec ${php.config} --version 2>/dev/null] if {${version} ne ${php_version}} { ui_error "${subport} @${version} requires ${php} @${version} but you have ${php} @${php_version}." return -code error "incompatible ${php} installation" } } destroot.target install-modules install-headers php.add_port_code }