Created
December 1, 2010 23:31
-
-
Save jasonmoo/724449 to your computer and use it in GitHub Desktop.
PHP 5.3.3 MacPorts Portfile with FPM enabled FastCGI variant
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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 71588 2010-09-17 05:21:24Z [email protected] $ | |
PortSystem 1.0 | |
name php5 | |
conflicts php5-devel php52 | |
# Update revision of php5-eaccelerator when updating version of php5 | |
epoch 1 | |
version 5.3.3 | |
revision 2 | |
set major [lindex [split ${version} .] 0] | |
set my_name php${major} | |
dist_subdir ${my_name} | |
categories lang php www | |
maintainers ryandesign jwa | |
homepage http://www.php.net/ | |
master_sites php | |
distname php-${version} | |
use_bzip2 yes | |
platforms darwin freebsd | |
use_parallel_build yes | |
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. | |
checksums \ | |
[suffix ${distname}] \ | |
md5 21ceeeb232813c10283a5ca1b4c87b48 \ | |
sha1 9f66716b341119e4e4f8fe3d81b7d0a5daf3cbc8 \ | |
rmd160 9edb51663feac9b787f8382012893f1ac98fec6a | |
depends_build \ | |
port:pkgconfig \ | |
port:autoconf213 | |
depends_lib \ | |
path:bin/gsed:gsed \ | |
port:libtool \ | |
port:libevent \ | |
port:libxml2 \ | |
port:bzip2 \ | |
port:mhash \ | |
port:pcre \ | |
port:readline \ | |
port:zlib | |
# Use -p1 to accommodate the Suhosin patch | |
patch.pre_args -p1 | |
patchfiles patch-scripts-php-config.in.diff \ | |
patch-ext-mysqlnd-mysqlnd.h.diff | |
use_autoconf yes | |
autoconf.cmd ${prefix}/bin/autoconf213 | |
set phpinidir ${prefix}/etc/${my_name} | |
set extraphpinidir ${prefix}/var/db/${my_name} | |
destroot.keepdirs ${destroot}${extraphpinidir} | |
configure.args \ | |
--mandir=${prefix}/share/man \ | |
--infodir=${prefix}/share/info \ | |
--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-readline=${prefix} \ | |
--with-libxml-dir=${prefix} \ | |
--with-zlib=${prefix} \ | |
--without-pear \ | |
--disable-cgi | |
# php5-mysql +mysqlnd needs mysqlnd support compiled into php | |
configure.env-append PHP_MYSQLND_ENABLED=yes | |
configure.universal_args-delete --disable-dependency-tracking | |
platform darwin 10 { | |
configure.env-append \ | |
LIBS=-lresolv | |
} | |
variant no_web conflicts apache apache2 fastcgi description {Don't include any web server support} {} | |
# Build an Apache 1 module. On Mac OS X, it uses Apple's provided Apache 1 server. | |
# On other platforms, the MacPorts apache port is used. Keep the options here | |
# in sync with those in the relevant part of the post-destroot phase. | |
variant apache conflicts apache2 no_web description {Add Apache 1 web server module} { | |
if { ! [variant_isset macosx] && (![info exists os.subplatform] || ${os.subplatform} != "macosx") } { | |
depends_lib-append \ | |
port:apache | |
configure.args-append \ | |
--with-apxs=${prefix}/sbin/apxs | |
} else { | |
destroot.violate_mtree yes | |
configure.args-append \ | |
--with-apxs=/usr/sbin/apxs | |
} | |
} | |
# Build an Apache 2.2 module. Keep the options here in sync with those in the | |
# relevant part of the post-destroot phase. | |
variant apache2 conflicts apache no_web description {Add Apache 2.2 web server module} { | |
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 ${prefix}/apache2/modules/mod_cgi.so]} { | |
ui_error "To use ${name} with the +apache2 variant, apache2 must be installed with the +preforkmpm variant." | |
return -code error "incompatible apache2 installation" | |
} | |
} | |
destroot.violate_mtree yes | |
depends_lib-append \ | |
port:apache2 | |
configure.args-append \ | |
--with-apxs2=${prefix}/apache2/bin/apxs | |
} | |
# Build a FastCGI binary. Keep the options here in sync with those in the | |
# relevant part of the post-destroot phase. | |
variant fastcgi conflicts no_web description {Add FastCGI web server binary} { | |
if { ![variant_isset apache] && ![variant_isset apache2] } { | |
configure.args-delete \ | |
--disable-cgi | |
configure.args-append \ | |
--enable-cgi \ | |
--enable-fpm \ | |
--with-fpm-user=_www \ | |
--with-fpm-group=_www | |
} | |
startupitem.create yes | |
startupitem.name php-fpm | |
startupitem.executable ${prefix}/bin/php-fpm | |
startupitem.pidfile auto ${prefix}/var/run/php-fpm.pid | |
} | |
foreach {old_variant new_port} { | |
gmp gmp | |
imap imap | |
macports_snmp snmp | |
mssql mssql | |
mysql4 mysql | |
mysql5 mysql | |
mysqlnd mysql | |
oracle oracle | |
pcntl pcntl | |
postgresql82 postgresql | |
postgresql83 postgresql | |
pspell pspell | |
snmp snmp | |
sockets sockets | |
sqlite sqlite | |
tidy tidy | |
} { | |
eval [subst { | |
variant ${old_variant} description "Obsolete; install ${my_name}-${new_port} port instead" { | |
pre-configure { | |
ui_msg "The +${old_variant} variant is obsolete. Please install the ${my_name}-${new_port} port instead." | |
} | |
} | |
}] | |
} | |
variant ipc description {Add semaphore, shared memory and IPC functions} { | |
configure.args-append \ | |
--enable-shmop \ | |
--enable-sysvsem \ | |
--enable-sysvshm \ | |
--enable-sysvmsg | |
} | |
if {![variant_isset apache] && ![variant_isset apache2] && ![variant_isset fastcgi] && ![variant_isset no_web]} { | |
default_variants +apache2 | |
} | |
variant pear description {Add PEAR} { | |
configure.args-delete \ | |
--without-pear | |
configure.args-append \ | |
--with-pear=${prefix}/lib/php | |
destroot.target-append \ | |
install-pear | |
destroot.args-append \ | |
PHP_PEAR_INSTALL_DIR=${prefix}/lib/php | |
post-destroot { | |
#nuke pear-stuff in ${destroot} | |
system "cd ${destroot} && rm -rf .channels .depdb .depdblock .filemap .lock" | |
system "if \[ -f ${prefix}/lib/php/.depdblock \]; then rm -f ${destroot}${prefix}/lib/php/.depdblock; fi" | |
system "if \[ -f ${prefix}/lib/php/.depdb \]; then rm -f ${destroot}${prefix}/lib/php/.depdb; fi" | |
system "if \[ -f ${prefix}/lib/php/.filemap \]; then rm -f ${destroot}${prefix}/lib/php/.filemap; fi" | |
system "if \[ -f ${prefix}/lib/php/.lock \]; then rm -f ${destroot}${prefix}/lib/php/.lock; fi" | |
system "if \[ -d ${prefix}/lib/php/.channels \]; then rm -rf ${destroot}${prefix}/lib/php/.channels; fi" | |
} | |
} | |
variant suhosin description {Add Suhosin patch} { | |
pre-fetch { | |
if {"darwin" == ${os.platform} && ${os.major} < 9} { | |
ui_error "The suhosin variant requires Mac OS X 10.5 or greater." | |
return -code error "incompatible Mac OS X version" | |
} | |
} | |
set suhosin_patch_version ${version}-0.9.10 | |
set suhosin_patch suhosin-patch-${suhosin_patch_version}.patch.gz | |
patch_sites-append http://download.suhosin.org/ | |
patchfiles-append ${suhosin_patch} | |
checksums-append \ | |
${suhosin_patch} \ | |
md5 b66b27c43b1332400ef8982944c3b95b \ | |
sha1 76675242cfdeff763767900213346af622002490 \ | |
rmd160 8dcd8b51ea0357b6cc51e70e495e18f341c62f7c | |
} | |
destroot.args \ | |
INSTALL_ROOT=${destroot} | |
destroot.target \ | |
install-cli install-build install-headers install-programs | |
post-destroot { | |
# Copy the Apache 1 module. | |
if { [variant_isset apache] } { | |
xinstall -m 755 -d ${destroot}${prefix}/libexec/apache \ | |
${destroot}${prefix}/etc/apache/extra | |
xinstall -m 755 ${worksrcpath}/libs/libphp5.so ${destroot}${prefix}/libexec/apache/ | |
xinstall -m 755 -c ${filespath}/mod_php.conf ${destroot}$prefix/etc/apache/extra | |
} | |
# Copy the Apache 2.2 module. | |
if { [variant_isset apache2] } { | |
xinstall -m 755 -d ${destroot}${prefix}/apache2/modules \ | |
${destroot}${prefix}/apache2/conf/extra | |
xinstall -m 755 ${worksrcpath}/libs/libphp5.so ${destroot}${prefix}/apache2/modules/ | |
xinstall -m 755 -c ${filespath}/mod_php.conf ${destroot}${prefix}/apache2/conf/extra | |
} | |
if { [variant_isset fastcgi] } { | |
# If we've built an Apache module (any version) then the FastCGI binary | |
# will not have been built, so we need to run through the whole process | |
# again and build just the FastCGI binary. Keep the options here in sync | |
# with the options specified in the apache and apache2 variants. | |
if { [variant_isset apache] } { | |
if { ![variant_isset macosx] && (![info exists os.subplatform] || ${os.subplatform} != "macosx") } { | |
configure.args-delete \ | |
--with-apxs=${prefix}/sbin/apxs | |
} else { | |
configure.args-delete \ | |
--with-apxs=/usr/sbin/apxs | |
} | |
} | |
if { [variant_isset apache2] } { | |
configure.args-delete \ | |
--with-apxs2=${prefix}/apache2/bin/apxs | |
} | |
# Run the build again to get the FastCGI binary. Keep the options here | |
# in sync with those in the fastcgi variant. | |
if { [variant_isset apache] || [variant_isset apache2] } { | |
configure.args-delete \ | |
--disable-cgi | |
configure.args-append \ | |
--enable-cgi \ | |
--enable-fpm \ | |
--with-fpm-user=_www \ | |
--with-fpm-group=_www | |
ui_msg "$UI_PREFIX Configuring ${name} again for fastcgi" | |
command_exec configure | |
ui_msg "$UI_PREFIX Building ${name} again for fastcgi" | |
command_exec build | |
ui_msg "$UI_PREFIX Staging ${name} fastcgi into destroot" | |
} | |
# Move the FPM binary to the bin dir | |
xinstall -m 755 ${worksrcpath}/sapi/fpm/php-fpm ${prefix}/bin | |
} | |
#file rename ${destroot}${prefix}/etc/pear.conf ${destroot}${prefix}/etc/pear.conf.sample | |
# 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/ext/mysqlnd | |
eval xinstall -m 644 [glob ${worksrcpath}/ext/mysqlnd/*.h] ${destroot}${prefix}/include/php/ext/mysqlnd | |
} | |
pre-activate { | |
set filepath ${extraphpinidir}/.turd_${name} | |
if {[file exists ${filepath}]} { | |
delete ${filepath} | |
} | |
} | |
post-activate { | |
if {[file exists ${prefix}/etc/php.ini] && ![file exists ${phpinidir}/php.ini]} { | |
move ${prefix}/etc/php.ini ${phpinidir} | |
ui_msg "Your ${prefix}/etc/php.ini has been moved to ${phpinidir}/php.ini" | |
ui_msg "" | |
} | |
if {![file exists ${phpinidir}/php.ini]} { | |
ui_msg "To customize php, copy" | |
ui_msg "${phpinidir}/php.ini-development (if this is a development server) or" | |
ui_msg "${phpinidir}/php.ini-production (if this is a production server) to" | |
ui_msg "${phpinidir}/php.ini and then make changes." | |
} else { | |
ui_msg "You may need to update your php.ini for any changes that have been made" | |
ui_msg "in this version of php. Compare ${phpinidir}/php.ini with" | |
ui_msg "${phpinidir}/php.ini-development (if this is a development server) or" | |
ui_msg "${phpinidir}/php.ini-production (if this is a production server)." | |
} | |
if {[variant_isset fastcgi]} { | |
ui_msg "* copy ${prefix}/etc/php-fpm.conf.sample to ${prefix}/etc/php-fpm.conf" | |
} | |
if {![variant_isset no_web]} { | |
ui_msg "" | |
ui_msg "If this is your first install, you need to activate PHP in your web server." | |
if {![variant_isset fastcgi]} { | |
if {[variant_isset apache]} { | |
set moduledir ${prefix}/libexec/modules | |
set apxs ${prefix}/apache/bin/apxs | |
} | |
if {[variant_isset apache2]} { | |
set moduledir ${prefix}/apache2/modules | |
set apxs ${prefix}/apache2/bin/apxs | |
} | |
ui_msg "" | |
ui_msg "To enable PHP in Apache, run" | |
ui_msg " cd ${moduledir}" | |
ui_msg " ${apxs} -a -e -n \"${my_name}\" lib${my_name}.so" | |
} | |
} | |
#ui_msg "* copy ${prefix}/etc/pear.conf.sample to ${prefix}/etc/pear.conf" | |
} | |
variant debug description {Enable debug support (useful to analyze a PHP-related core dump)} { | |
configure.args-append --enable-debug | |
} | |
test.run yes | |
livecheck.type regex | |
livecheck.url ${homepage}downloads.php | |
livecheck.regex get/php-(5\\.\[0-9.\]+)\\.tar |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Be sure you check out the forks of this gist for the latest versions of PHP 5.3.