summary refs log tree commit diff
path: root/pkgs/development/interpreters/php
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/interpreters/php')
-rw-r--r--pkgs/development/interpreters/php/5.3.nix5
-rw-r--r--pkgs/development/interpreters/php/5.4.nix212
-rw-r--r--pkgs/development/interpreters/php/fix-5.4.patch68
3 files changed, 285 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix
index 6d81ca9eea65..fce9c0f152b2 100644
--- a/pkgs/development/interpreters/php/5.3.nix
+++ b/pkgs/development/interpreters/php/5.3.nix
@@ -143,6 +143,10 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
         configureFlags = ["--enable-zip"];
       };
 
+      ftp = {
+        configureFlags = ["--enable-ftp"];
+      };
+
       /*
          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.
@@ -180,6 +184,7 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
     mcryptSupport = config.php.mcrypt or false;
     bz2Support = config.php.bz2 or false;
     zipSupport = config.php.zip or true;
+    ftpSupport = config.php.ftp or true;
   };
 
   configurePhase = ''
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