Merge pull request #6182 from monocell/php-update-5.5-5.6

Php update 5.5/5.6
This commit is contained in:
lethalman 2015-02-06 10:49:35 +01:00
commit 4060b86bcf
5 changed files with 541 additions and 78 deletions

View file

@ -20,4 +20,6 @@ stdenv.mkDerivation (args // {
makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags;
autoreconfPhase = "phpize";
preConfigure = "touch unix.h";
})

View file

@ -0,0 +1,265 @@
{ stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
, apacheHttpd, mysql, libxml2, readline, zlib, curl, postgresql, gettext
, openssl, pkgconfig, sqlite, config, libjpeg, libpng, freetype
, libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, freetds
, uwimap, pam, gmp }:
let
libmcryptOverride = libmcrypt.override { disablePosixThreads = true; };
in
composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
version = "5.5.21";
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
imap = {
configureFlags = [
"--with-imap=${uwimap}"
"--with-imap-ssl"
];
buildInputs = [ uwimap openssl pam ];
};
ldap = {
configureFlags = ["--with-ldap=${openldap}"];
buildInputs = [openldap cyrus_sasl openssl];
};
mhash = {
configureFlags = ["--with-mhash"];
buildInputs = [libmhash];
};
curl = {
configureFlags = ["--with-curl=${curl}"];
buildInputs = [curl openssl];
};
zlib = {
configureFlags = ["--with-zlib=${zlib}"];
buildInputs = [zlib];
};
libxml2 = {
configureFlags = [
"--with-libxml-dir=${libxml2}"
];
buildInputs = [ libxml2 ];
};
pcntl = {
configureFlags = [ "--enable-pcntl" ];
};
readline = {
configureFlags = ["--with-readline=${readline}"];
buildInputs = [ readline ];
};
sqlite = {
configureFlags = ["--with-pdo-sqlite=${sqlite}"];
buildInputs = [ sqlite ];
};
postgresql = {
configureFlags = ["--with-pgsql=${postgresql}"];
buildInputs = [ postgresql ];
};
pdo_pgsql = {
configureFlags = ["--with-pdo-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"
"--with-freetype-dir=${freetype}"
"--with-png-dir=${libpng}"
"--with-jpeg-dir=${libjpeg}"
];
buildInputs = [ libpng libjpeg freetype ];
};
gmp = {
configureFlags = ["--with-gmp=${gmp}"];
buildInputs = [ gmp ];
};
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=${libmcryptOverride}"];
buildInputs = [libmcryptOverride];
};
bz2 = {
configureFlags = ["--with-bz2=${bzip2}"];
buildInputs = [bzip2];
};
zip = {
configureFlags = ["--enable-zip"];
};
ftp = {
configureFlags = ["--enable-ftp"];
};
fpm = {
configureFlags = ["--enable-fpm"];
};
mssql = stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
configureFlags = ["--with-mssql=${freetds}"];
buildInputs = [freetds];
};
};
cfg = {
imapSupport = config.php.imap or true;
ldapSupport = config.php.ldap or true;
mhashSupport = config.php.mhash or true;
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;
pcntlSupport = config.php.pcntl 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 true;
bz2Support = config.php.bz2 or false;
zipSupport = config.php.zip or true;
ftpSupport = config.php.ftp or true;
fpmSupport = config.php.fpm or true;
gmpSupport = config.php.gmp or true;
mssqlSupport = config.php.mssql or (!stdenv.isDarwin);
};
configurePhase = ''
# Don't record the configure flags since this causes unnecessary
# runtime dependencies.
for i in main/build-defs.h.in scripts/php-config.in; do
substituteInPlace $i \
--replace '@CONFIGURE_COMMAND@' '(omitted)' \
--replace '@CONFIGURE_OPTIONS@' "" \
--replace '@PHP_LDFLAGS@' ""
done
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
'';
installPhase = ''
unset installPhase; installPhase;
cp php.ini-production $iniFile
'';
src = fetchurl {
url = "http://www.php.net/distributions/php-${version}.tar.bz2";
sha256 = "1zl3valcak5hb4fmivpfa66arwpvi19js1d5cxq5vjn4fncl5sb2";
};
meta = {
description = "An HTML-embedded scripting language";
homepage = http://www.php.net/;
license = stdenv.lib.licenses.php301;
};
patches = [ ./fix-5.4.patch ];
})

View file

@ -0,0 +1,265 @@
{ stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
, apacheHttpd, mysql, libxml2, readline, zlib, curl, postgresql, gettext
, openssl, pkgconfig, sqlite, config, libjpeg, libpng, freetype
, libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, freetds
, uwimap, pam, gmp }:
let
libmcryptOverride = libmcrypt.override { disablePosixThreads = true; };
in
composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
version = "5.6.5";
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
imap = {
configureFlags = [
"--with-imap=${uwimap}"
"--with-imap-ssl"
];
buildInputs = [ uwimap openssl pam ];
};
ldap = {
configureFlags = ["--with-ldap=${openldap}"];
buildInputs = [openldap cyrus_sasl openssl];
};
mhash = {
configureFlags = ["--with-mhash"];
buildInputs = [libmhash];
};
curl = {
configureFlags = ["--with-curl=${curl}"];
buildInputs = [curl openssl];
};
zlib = {
configureFlags = ["--with-zlib=${zlib}"];
buildInputs = [zlib];
};
libxml2 = {
configureFlags = [
"--with-libxml-dir=${libxml2}"
];
buildInputs = [ libxml2 ];
};
pcntl = {
configureFlags = [ "--enable-pcntl" ];
};
readline = {
configureFlags = ["--with-readline=${readline}"];
buildInputs = [ readline ];
};
sqlite = {
configureFlags = ["--with-pdo-sqlite=${sqlite}"];
buildInputs = [ sqlite ];
};
postgresql = {
configureFlags = ["--with-pgsql=${postgresql}"];
buildInputs = [ postgresql ];
};
pdo_pgsql = {
configureFlags = ["--with-pdo-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"
"--with-freetype-dir=${freetype}"
"--with-png-dir=${libpng}"
"--with-jpeg-dir=${libjpeg}"
];
buildInputs = [ libpng libjpeg freetype ];
};
gmp = {
configureFlags = ["--with-gmp=${gmp}"];
buildInputs = [ gmp ];
};
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=${libmcryptOverride}"];
buildInputs = [libmcryptOverride];
};
bz2 = {
configureFlags = ["--with-bz2=${bzip2}"];
buildInputs = [bzip2];
};
zip = {
configureFlags = ["--enable-zip"];
};
ftp = {
configureFlags = ["--enable-ftp"];
};
fpm = {
configureFlags = ["--enable-fpm"];
};
mssql = stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
configureFlags = ["--with-mssql=${freetds}"];
buildInputs = [freetds];
};
};
cfg = {
imapSupport = config.php.imap or true;
ldapSupport = config.php.ldap or true;
mhashSupport = config.php.mhash or true;
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;
pcntlSupport = config.php.pcntl 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 true;
bz2Support = config.php.bz2 or false;
zipSupport = config.php.zip or true;
ftpSupport = config.php.ftp or true;
fpmSupport = config.php.fpm or true;
gmpSupport = config.php.gmp or true;
mssqlSupport = config.php.mssql or (!stdenv.isDarwin);
};
configurePhase = ''
# Don't record the configure flags since this causes unnecessary
# runtime dependencies.
for i in main/build-defs.h.in scripts/php-config.in; do
substituteInPlace $i \
--replace '@CONFIGURE_COMMAND@' '(omitted)' \
--replace '@CONFIGURE_OPTIONS@' "" \
--replace '@PHP_LDFLAGS@' ""
done
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
'';
installPhase = ''
unset installPhase; installPhase;
cp php.ini-production $iniFile
'';
src = fetchurl {
url = "http://www.php.net/distributions/php-${version}.tar.bz2";
sha256 = "0vfhvwn84lrz9psf10sjnwljbna1r7yqxq3lmsh5qajifl3lraxd";
};
meta = {
description = "An HTML-embedded scripting language";
homepage = http://www.php.net/;
license = stdenv.lib.licenses.php301;
};
patches = [ ./fix-5.4.patch ];
})

View file

@ -1,78 +0,0 @@
--- php-5.0.4/configure 2005-04-03 11:42:50.000000000 +0200
+++ php-5.0.4-1/configure 2005-07-10 11:06:22.292271176 +0200
@@ -3381,7 +3381,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
@@ -3576,7 +3576,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' \
@@ -4680,7 +4680,7 @@
{ echo "configure: error: Please note that Apache version >= 2.0.40 is required." 1>&2; 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' \
@@ -5510,7 +5510,7 @@
{ echo "configure: error: Please note that Apache version >= 2.0.44 is required." 1>&2; 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' \
@@ -6327,7 +6327,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
@@ -6522,7 +6522,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' \
diff -rc php-5.3.18/configure php-5.3.18-new/configure
*** php-5.3.18/configure 2012-10-17 18:29:10.000000000 +0200
--- php-5.3.18-new/configure 2012-11-13 05:36:24.730136551 +0100
***************
*** 45113,45121 ****
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
if test -z "$GETTEXT_DIR"; then
{ echo "configure: error: Cannot locate header file libintl.h" 1>&2; exit 1; }
--- 45113,45119 ----
if test "$PHP_GETTEXT" != "no"; then
! GETTEXT_DIR=$PHP_GETTEXT
if test -z "$GETTEXT_DIR"; then
{ echo "configure: error: Cannot locate header file libintl.h" 1>&2; exit 1; }

View file

@ -4327,8 +4327,17 @@ let
inherit php pkgs;
});
php55Packages = recurseIntoAttrs (import ./php-packages.nix {
inherit pkgs;
php = php55;
});
php54 = callPackage ../development/interpreters/php/5.4.nix { };
php55 = callPackage ../development/interpreters/php/5.5.nix { };
php56 = callPackage ../development/interpreters/php/5.6.nix { };
picolisp = callPackage ../development/interpreters/picolisp {};
pltScheme = racket; # just to be sure