php: Add 5.4

We'll keep 5.3 around for a while.
This commit is contained in:
Eelco Dolstra 2013-04-22 18:02:01 +02:00
parent 2e8cab953a
commit 4539668937
3 changed files with 285 additions and 1 deletions

View File

@ -0,0 +1,212 @@
{ stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
, apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext
, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype
, libxslt, libmcrypt, bzip2, icu }:
let
libmcryptOverride = libmcrypt.override { disablePosixThreads = true; };
in
composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
version = "5.4.14";
name = "php-${version}";
enableParallelBuilding = true;
buildInputs = ["flex" "bison" "pkgconfig"];
flags = {
# much left to do here...
# SAPI modules:
apxs2 = {
configureFlags = ["--with-apxs2=${apacheHttpd}/bin/apxs"];
buildInputs = [apacheHttpd];
};
# Extensions
curl = {
configureFlags = ["--with-curl=${curl}" "--with-curlwrappers"];
buildInputs = [curl openssl];
};
zlib = {
configureFlags = ["--with-zlib=${zlib}"];
buildInputs = [zlib];
};
libxml2 = {
configureFlags = [
"--with-libxml-dir=${libxml2}"
#"--with-iconv-dir=${libiconv}"
];
buildInputs = [ libxml2 ];
};
readline = {
configureFlags = ["--with-readline=${readline}"];
buildInputs = [ readline ];
};
sqlite = {
configureFlags = ["--with-pdo-sqlite=${sqlite}"];
buildInputs = [ sqlite ];
};
postgresql = {
configureFlags = ["--with-pgsql=${postgresql}"];
buildInputs = [ postgresql ];
};
mysql = {
configureFlags = ["--with-mysql=${mysql}"];
buildInputs = [ mysql ];
};
mysqli = {
configureFlags = ["--with-mysqli=${mysql}/bin/mysql_config"];
buildInputs = [ mysql];
};
mysqli_embedded = {
configureFlags = ["--enable-embedded-mysqli"];
depends = "mysqli";
assertion = fixed.mysqliSupport;
};
pdo_mysql = {
configureFlags = ["--with-pdo-mysql=${mysql}"];
buildInputs = [ mysql ];
};
bcmath = {
configureFlags = ["--enable-bcmath"];
};
gd = {
# FIXME: Our own gd package doesn't work, see https://bugs.php.net/bug.php?id=60108.
configureFlags = ["--with-gd=shared --with-freetype-dir=${freetype} --with-png-dir=${libpng}"];
buildInputs = [ libpng libjpeg freetype ];
};
soap = {
configureFlags = ["--enable-soap"];
};
sockets = {
configureFlags = ["--enable-sockets"];
};
openssl = {
configureFlags = ["--with-openssl=${openssl}"];
buildInputs = ["openssl"];
};
mbstring = {
configureFlags = ["--enable-mbstring"];
};
gettext = {
configureFlags = ["--with-gettext=${gettext}"];
buildInputs = [gettext];
};
intl = {
configureFlags = ["--enable-intl"];
buildInputs = [icu];
};
exif = {
configureFlags = ["--enable-exif"];
};
xsl = {
configureFlags = ["--with-xsl=${libxslt}"];
buildInputs = [libxslt];
};
mcrypt = {
configureFlags = ["--with-mcrypt=${libmcrypt}"];
buildInputs = [libmcryptOverride];
};
bz2 = {
configureFlags = ["--with-bz2=${bzip2}"];
buildInputs = [bzip2];
};
zip = {
configureFlags = ["--enable-zip"];
};
/*
php is build within this derivation in order to add the xdebug lines to the php.ini.
So both Apache and command line php both use xdebug without having to configure anything.
Xdebug could be put in its own derivation.
* /
meta = {
description = "debugging support for PHP";
homepage = http://xdebug.org;
license = "based on the PHP license - as is";
};
*/
};
cfg = {
mysqlSupport = config.php.mysql or true;
mysqliSupport = config.php.mysqli or true;
pdo_mysqlSupport = config.php.pdo_mysql or true;
libxml2Support = config.php.libxml2 or true;
apxs2Support = config.php.apxs2 or true;
bcmathSupport = config.php.bcmath or true;
socketsSupport = config.php.sockets or true;
curlSupport = config.php.curl or true;
gettextSupport = config.php.gettext or true;
postgresqlSupport = config.php.postgresql or true;
readlineSupport = config.php.readline or true;
sqliteSupport = config.php.sqlite or true;
soapSupport = config.php.soap or true;
zlibSupport = config.php.zlib or true;
opensslSupport = config.php.openssl or true;
mbstringSupport = config.php.mbstring or true;
gdSupport = config.php.gd or true;
intlSupport = config.php.intl or true;
exifSupport = config.php.exif or true;
xslSupport = config.php.xsl or false;
mcryptSupport = config.php.mcrypt or false;
bz2Support = config.php.bz2 or false;
zipSupport = config.php.zip or true;
};
configurePhase = ''
iniFile=$out/etc/php-recommended.ini
[[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out $configureFlags
echo configurePhase end
'';
installPhase = ''
unset installPhase; installPhase;
cp php.ini-production $iniFile
'';
src = fetchurl {
url = "http://nl.php.net/get/php-${version}.tar.bz2/from/this/mirror";
sha256 = "02p23g4gjijazq16r5kwbkval2lkw76g0086n0zynlf67f2g6l2l";
name = "php-${version}.tar.bz2";
};
meta = {
description = "The PHP language runtime engine";
homepage = http://www.php.net/;
license = "PHP-3";
};
patches = [ ./fix-5.4.patch ];
})

View File

@ -0,0 +1,68 @@
diff -ru php-5.4.14/configure php-5.4.14-new/configure
--- php-5.4.14/configure 2013-04-10 09:53:26.000000000 +0200
+++ php-5.4.14-new/configure 2013-04-22 17:13:55.039043622 +0200
@@ -6513,7 +6513,7 @@
case $host_alias in
*aix*)
- APXS_LIBEXECDIR=`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-brtl -Wl,-bI:$APXS_LIBEXECDIR/httpd.exp"
PHP_AIX_LDFLAGS="-Wl,-brtl"
build_type=shared
@@ -6706,7 +6706,7 @@
if test "$?" != "0"; then
APACHE_INSTALL="$APXS -i -a -n php5 $SAPI_SHARED" # Old apxs does not have -S option
else
- APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
if test -z `$APXS -q SYSCONFDIR`; then
APACHE_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
@@ -7909,7 +7909,7 @@
{ (exit 1); exit 1; }; }
fi
- APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
if test -z `$APXS -q SYSCONFDIR`; then
INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
@@ -8779,7 +8779,7 @@
{ (exit 1); exit 1; }; }
fi
- APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
if test -z `$APXS -q SYSCONFDIR`; then
INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
@@ -9634,7 +9634,7 @@
case $host_alias in
*aix*)
- APXS_LIBEXECDIR=`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-brtl -Wl,-bI:$APXS_LIBEXECDIR/httpd.exp"
PHP_AIX_LDFLAGS="-Wl,-brtl"
build_type=shared
@@ -9827,7 +9827,7 @@
if test "$?" != "0"; then
APACHE_HOOKS_INSTALL="$APXS -i -a -n php5 $SAPI_SHARED" # Old apxs does not have -S option
else
- APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+ APXS_LIBEXECDIR="$prefix/modules"
if test -z `$APXS -q SYSCONFDIR`; then
APACHE_HOOKS_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
@@ -59657,9 +59657,7 @@
if test "$PHP_GETTEXT" != "no"; then
- for i in $PHP_GETTEXT /usr/local /usr; do
- test -r $i/include/libintl.h && GETTEXT_DIR=$i && break
- done
+ GETTEXT_DIR=$PHP_GETTEXT
if test -z "$GETTEXT_DIR"; then
{ { $as_echo "$as_me:$LINENO: error: Cannot locate header file libintl.h" >&5

View File

@ -2894,7 +2894,11 @@ let
perl = if system != "i686-cygwin" then perl516 else sysPerl; perl = if system != "i686-cygwin" then perl516 else sysPerl;
php = callPackage ../development/interpreters/php/5.3.nix { }; php = php54;
php53 = callPackage ../development/interpreters/php/5.3.nix { };
php54 = callPackage ../development/interpreters/php/5.4.nix { };
php_apc = callPackage ../development/libraries/php-apc { }; php_apc = callPackage ../development/libraries/php-apc { };