# -*- 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: Portfile 111348 2013-09-19 06:13:15Z ryandesign@macports.org $ 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.3 5.4 5.5 # 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.3 { version 5.3.27 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 25ae23a5b9615fe8d33de5b63e1bb788 \ rmd160 c2887004859f32b25229ffe52d86270c8de194b7 \ sha256 e12db21c623b82a2244c4dd9b06bb75af20868c1b748a105a6829a5acc36b287 \ ${suhosin_patch} \ rmd160 ce43921fd9b183b154713ecda98294f6c68d5f22 \ sha256 4438caeab0a10c6c94aee9f7eaa703f5799f97d4e0579f43a947bb7314e38317 } 5.4 { epoch 1 version 5.4.19 use_bzip2 yes set suhosin_available no checksums ${distname}${extract.suffix} \ md5 f06f99b9872b503758adab5ba7a7e755 \ rmd160 1b03e20b89d360ccaeac41e1a972a781b891e83a \ sha256 7a565360e64c5be5102ef948e7c732778a40850e709270e64be7a3a3207c029b } 5.5 { epoch 2 version 5.5.3 use_xz yes set suhosin_available no checksums ${distname}${extract.suffix} \ md5 437e98144ef014dfab0922a9eed36853 \ rmd160 6271e0c2153b33af068c74ef6defcb6633355d93 \ sha256 b731e9486a651ce8dd92122253555f1bf240153ce21e74964bd68984255e6863 } 5.6 { # 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. version 5.6.x homepage http://qa.php.net/ master_sites http://downloads.php.net/dsp/ use_xz yes set suhosin_available no checksums ${distname}${extract.suffix} \ md5 00000000000000000000000000000000 \ rmd160 0000000000000000000000000000000000000000 \ sha256 0000000000000000000000000000000000000000000000000000000000000000 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}]} { 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 # 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} macports-clang-2.9 macports-clang-3.0 macports-clang-3.1 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-fileinfo \ --enable-filter \ --enable-hash \ --enable-json \ --enable-libxml \ --enable-pdo \ --enable-phar \ --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 \ --disable-fpm # ${php}-mysql +mysqlnd needs mysqlnd support compiled into the SAPI configure.env PHP_MYSQLND_ENABLED=yes 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 } 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}} { patchfiles-append patch-${php}-suhosin-before.diff patchfiles-append ${suhosin_patch} 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 depends_run port:php_select select.group php select.file ${filespath}/${subport} configure.args-delete --disable-cli configure.args-append --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} xinstall -m 644 -W ${worksrcpath} \ php.ini-development \ php.ini-production \ ${destroot}${phpinidir} # Copy mysqlnd headers. xinstall -d ${destroot}${prefix}/include/${php}/php/ext/mysqlnd eval 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 configure.args-append --with-libedit=${prefix} } variant readline conflicts libedit description {Build readline extension using readline library} { depends_lib-append port:readline configure.args-append --with-readline=${prefix} } if {![variant_isset readline]} { default_variants +libedit } if {[vercmp ${php.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]} { 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 " 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). " } # 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 { description ${php} Apache 2 Handler SAPI long_description ${description} homepage http://www.php.net/install.unix.apache2 depends_lib-append port:apache2 set apxs ${prefix}/apache2/bin/apxs set confdir ${prefix}/apache2/conf set moduledir ${prefix}/apache2/modules pre-configure { # Checking for mod_cgi.so is a convenient way to verify apache2 is using its # +preforkmpm variant. (+eventmpm and +workermpm instead provide mod_cgid.so.) if {![file exists ${moduledir}/mod_cgi.so]} { ui_error "To use ${subport}, apache2 must be installed with the +preforkmpm variant." return -code error "incompatible apache2 installation" } } configure.args-append --with-apxs2=${apxs} build.target libs/libphp5.bundle destroot.violate_mtree yes destroot { xinstall -m 755 -d ${destroot}${moduledir} ${destroot}${confdir}/extra xinstall -m 644 ${worksrcpath}/libs/libphp5.so ${destroot}${moduledir}/mod_${php}.so xinstall -m 644 ${filespath}/mod_php.conf ${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 configure.args-append --enable-cgi 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 ### 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-delete --disable-fpm configure.args-append --enable-fpm \ --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} } } 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 port: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 configure.args-append --with-freetype-dir=${prefix} \ --with-jpeg-dir=${prefix} \ --with-png-dir=${prefix} \ --with-zlib-dir=${prefix} \ --enable-gd-native-ttf 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 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} } subport ${php}-intl { 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}-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} } 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 mysql mysqli pdo_mysql categories-append databases description a PHP interface to MySQL databases, including the \ mysql, mysqli and pdo_mysql extensions long_description ${description} depends_lib-append port:zlib configure.args-append --with-zlib-dir=${prefix} 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]} { default_variants +mysqlnd } } 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 \ port: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 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 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 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 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 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 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 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 } if {![variant_isset postgresql82] && ![variant_isset postgresql83] && ![variant_isset postgresql84] && ![variant_isset postgresql90] && ![variant_isset postgresql91] && ![variant_isset postgresql92]} { default_variants +postgresql92 } } 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} } 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 { categories-append www description a PHP interface to tidy, the HTML cleaning and \ repair utility long_description ${description} depends_lib-append port:tidy 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_build-append port:pcre depends_lib-append port:zlib } } # These variables are not only required by the subsequent code but also by # preceding code in phase blocks. set branch ${subport_branch} set php php[php.suffix_from_branch ${branch}] if {${name} eq ${subport}} { # Set up the stub port. version ${branch} revision 0 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 foreach extension [concat ${php.extensions} ${php.extensions.zend}] { # 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} } post-extract { # The PDO extensions need the PDO headers which are installed by the ${php} port. foreach extension [concat ${php.extensions} ${php.extensions.zend}] { if {[regexp {^pdo_} ${extension}]} { file mkdir ${worksrcpath}/ext/${extension}/ext ln -s ${prefix}/include/${php}/php/ext/pdo ${worksrcpath}/ext/${extension}/ext } } } 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 }