diff --git a/pkgs/development/interpreters/php/5.4.nix b/pkgs/development/interpreters/php/5.4.nix new file mode 100644 index 000000000000..7d579c4adb10 --- /dev/null +++ b/pkgs/development/interpreters/php/5.4.nix @@ -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 ]; + +}) diff --git a/pkgs/development/interpreters/php/fix-5.4.patch b/pkgs/development/interpreters/php/fix-5.4.patch new file mode 100644 index 000000000000..51d98549eee2 --- /dev/null +++ b/pkgs/development/interpreters/php/fix-5.4.patch @@ -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 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ae51f0378794..1cb1624fef85 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2894,7 +2894,11 @@ let 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 { };