summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-04-22 18:02:01 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-04-22 19:17:35 +0200
commit4539668937fd9046384650efd16204073e780023 (patch)
treef2f9f6ab3084683807e8498e2cb004a88ad8d0a5
parent2e8cab953adcb07f7437228356d1497171761d91 (diff)
downloadnixlib-4539668937fd9046384650efd16204073e780023.tar
nixlib-4539668937fd9046384650efd16204073e780023.tar.gz
nixlib-4539668937fd9046384650efd16204073e780023.tar.bz2
nixlib-4539668937fd9046384650efd16204073e780023.tar.lz
nixlib-4539668937fd9046384650efd16204073e780023.tar.xz
nixlib-4539668937fd9046384650efd16204073e780023.tar.zst
nixlib-4539668937fd9046384650efd16204073e780023.zip
php: Add 5.4
We'll keep 5.3 around for a while.
-rw-r--r--pkgs/development/interpreters/php/5.4.nix212
-rw-r--r--pkgs/development/interpreters/php/fix-5.4.patch68
-rw-r--r--pkgs/top-level/all-packages.nix6
3 files changed, 285 insertions, 1 deletions
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 { };