summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobin Gloster <robin@loc-com.de>2015-03-15 01:24:11 +0100
committerCray Elliott <MP2E@archlinux.us>2015-04-18 03:46:48 -0700
commitcb904510a6d8066f2840583d7ff8af0e0f6296e6 (patch)
treed3e04bbb768ccd310ccacad90c5c5f55be14d813
parent80f4b816151f4e3e64e14b7dd994d7f44165e0ef (diff)
downloadnixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar.gz
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar.bz2
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar.lz
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar.xz
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.tar.zst
nixpkgs-cb904510a6d8066f2840583d7ff8af0e0f6296e6.zip
consolidate php builds
-rw-r--r--pkgs/development/interpreters/php/5.4.nix279
-rw-r--r--pkgs/development/interpreters/php/5.5.nix276
-rw-r--r--pkgs/development/interpreters/php/5.6.nix278
-rw-r--r--pkgs/development/interpreters/php/makePhpDerivation.nix283
4 files changed, 301 insertions, 815 deletions
diff --git a/pkgs/development/interpreters/php/5.4.nix b/pkgs/development/interpreters/php/5.4.nix
index 6796a195286..02137e5823e 100644
--- a/pkgs/development/interpreters/php/5.4.nix
+++ b/pkgs/development/interpreters/php/5.4.nix
@@ -1,273 +1,6 @@
-{ 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, openldap, cyrus_sasl, libmhash, freetds }:
-
-let
-  libmcryptOverride = libmcrypt.override { disablePosixThreads = true; };
-in
-
-composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
-
-  version = "5.4.39";
-
-  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
-
-      ldap = {
-        configureFlags = ["--with-ldap=${openldap}"];
-        buildInputs = [openldap cyrus_sasl openssl];
-      };
-
-      mhash = {
-        configureFlags = ["--with-mhash"];
-        buildInputs = [libmhash];
-      };
-
-      curl = {
-        configureFlags = ["--with-curl=${curl}"];
-        buildInputs = [curl openssl];
-      };
-
-      curlWrappers = {
-        configureFlags = ["--with-curlwrappers"];
-      };
-
-      zlib = {
-        configureFlags = ["--with-zlib=${zlib}"];
-        buildInputs = [zlib];
-      };
-
-      libxml2 = {
-        configureFlags = [
-          "--with-libxml-dir=${libxml2}"
-          #"--with-iconv-dir=${libiconv}"
-          ];
-        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.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli = {
-        configureFlags = ["--with-mysqli=${mysql.lib}/bin/mysql_config"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli_embedded = {
-        configureFlags = ["--enable-embedded-mysqli"];
-        depends = "mysqli";
-        assertion = fixed.mysqliSupport;
-      };
-
-      pdo_mysql = {
-        configureFlags = ["--with-pdo-mysql=${mysql.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      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 ];
-      };
-
-      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"];
-      };
-
-      ftp = {
-        configureFlags = ["--enable-ftp"];
-      };
-
-      fpm = {
-        configureFlags = ["--enable-fpm"];
-      };
-
-      mssql = stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
-        configureFlags = ["--with-mssql=${freetds}"];
-        buildInputs = [freetds];
-      };
-
-      zts = {
-        configureFlags = ["--enable-maintainer-zts"];
-      };
-
-      calendar = {
-        configureFlags = ["--enable-calendar"];
-      };
-
-      /*
-         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.
-      */
-    };
-
-  cfg = {
-    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;
-    curlWrappersSupport = config.php.curlWrappers or false;
-    gettextSupport = config.php.gettext or true;
-    pcntlSupport = config.php.pcntl or true;
-    postgresqlSupport = config.php.postgresql or true;
-    pdo_pgsqlSupport = config.php.pdo_pgsql 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;
-    ftpSupport = config.php.ftp or true;
-    fpmSupport = config.php.fpm or true;
-    mssqlSupport = config.php.mssql or (!stdenv.isDarwin);
-    ztsSupport = config.php.zts or false;
-    calendarSupport = config.php.calendar or false;
-  };
-
-  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 = "0znpd6pgri5vah4j4wwamhqc60awila43bhh699p973hir9pdsvw";
-  };
-
-  meta = with stdenv.lib; {
-    description = "An HTML-embedded scripting language";
-    homepage = http://www.php.net/;
-    license = stdenv.lib.licenses.php301;
-    maintainers = with maintainers; [ globin ];
-  };
-
-  patches = [ ./fix-paths.patch ];
-
-})
+{ callPackage, apacheHttpd }:
+callPackage ./makePhpDerivation.nix {
+  phpVersion = "5.4.39";
+  sha = "0znpd6pgri5vah4j4wwamhqc60awila43bhh699p973hir9pdsvw";
+  apacheHttpd = apacheHttpd;
+}
diff --git a/pkgs/development/interpreters/php/5.5.nix b/pkgs/development/interpreters/php/5.5.nix
index 87aff4ff1a2..842f12a8910 100644
--- a/pkgs/development/interpreters/php/5.5.nix
+++ b/pkgs/development/interpreters/php/5.5.nix
@@ -1,270 +1,6 @@
-{ 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.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli = {
-        configureFlags = ["--with-mysqli=${mysql.lib}/bin/mysql_config"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli_embedded = {
-        configureFlags = ["--enable-embedded-mysqli"];
-        depends = "mysqli";
-        assertion = fixed.mysqliSupport;
-      };
-
-      pdo_mysql = {
-        configureFlags = ["--with-pdo-mysql=${mysql.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      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];
-      };
-
-      calendar = {
-        configureFlags = ["--enable-calendar"];
-      };
-    };
-
-  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);
-    calendarSupport = config.php.calendar or true;
-  };
-
-  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 = with stdenv.lib; {
-    description = "An HTML-embedded scripting language";
-    homepage = http://www.php.net/;
-    license = stdenv.lib.licenses.php301;
-    maintainers = with maintainers; [ globin ];
-  };
-
-  patches = [ ./fix-paths.patch ];
-
-})
+{ callPackage, apacheHttpd  }:
+callPackage ./makePhpDerivation.nix {
+  phpVersion = "5.5.21";
+  sha = "1zl3valcak5hb4fmivpfa66arwpvi19js1d5cxq5vjn4fncl5sb2";
+  apacheHttpd = apacheHttpd;
+}
diff --git a/pkgs/development/interpreters/php/5.6.nix b/pkgs/development/interpreters/php/5.6.nix
index 1fa98708920..2f4a3165f43 100644
--- a/pkgs/development/interpreters/php/5.6.nix
+++ b/pkgs/development/interpreters/php/5.6.nix
@@ -1,272 +1,6 @@
-{ 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.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli = {
-        configureFlags = ["--with-mysqli=${mysql.lib}/bin/mysql_config"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      mysqli_embedded = {
-        configureFlags = ["--enable-embedded-mysqli"];
-        depends = "mysqli";
-        assertion = fixed.mysqliSupport;
-      };
-
-      pdo_mysql = {
-        configureFlags = ["--with-pdo-mysql=${mysql.lib}"];
-        buildInputs = [ mysql.lib ];
-      };
-
-      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];
-      };
-
-
-      calendar = {
-        configureFlags = ["--enable-calendar"];
-      };
-
-    };
-
-  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);
-    calendarSupport = config.php.calendar or true;
-  };
-
-  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 = with stdenv.lib; {
-    description = "An HTML-embedded scripting language";
-    homepage = http://www.php.net/;
-    license = stdenv.lib.licenses.php301;
-    maintainers = with maintainers; [ globin ];
-  };
-
-  patches = [ ./fix-paths.patch ];
-
-})
+{ callPackage, apacheHttpd  }:
+callPackage ./makePhpDerivation.nix {
+  phpVersion = "5.6.6";
+  sha = "0k5vml94p5809bk2d5a8lhzf3h7f1xgs75b9qy6ikj70cndmqqh9";
+  apacheHttpd = apacheHttpd;
+}
diff --git a/pkgs/development/interpreters/php/makePhpDerivation.nix b/pkgs/development/interpreters/php/makePhpDerivation.nix
new file mode 100644
index 00000000000..33b5b0f9024
--- /dev/null
+++ b/pkgs/development/interpreters/php/makePhpDerivation.nix
@@ -0,0 +1,283 @@
+{ stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
+, 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
+
+, phpVersion, apacheHttpd, sha }:
+
+let
+  libmcryptOverride = libmcrypt.override { disablePosixThreads = true; };
+in
+
+composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
+
+  version = "${phpVersion}";
+
+  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];
+    };
+
+    curlWrappers = {
+      configureFlags = ["--with-curlwrappers"];
+    };
+
+    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.lib}"];
+      buildInputs = [ mysql.lib ];
+    };
+
+    mysqli = {
+      configureFlags = ["--with-mysqli=${mysql.lib}/bin/mysql_config"];
+      buildInputs = [ mysql.lib ];
+    };
+
+    mysqli_embedded = {
+      configureFlags = ["--enable-embedded-mysqli"];
+      depends = "mysqli";
+      assertion = fixed.mysqliSupport;
+    };
+
+    pdo_mysql = {
+      configureFlags = ["--with-pdo-mysql=${mysql.lib}"];
+      buildInputs = [ mysql.lib ];
+    };
+
+    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];
+    };
+
+    zts = {
+      configureFlags = ["--enable-maintainer-zts"];
+    };
+
+    calendar = {
+      configureFlags = ["--enable-calendar"];
+    };
+  };
+
+  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;
+    curlWrappersSupport = config.php.curlWrappers or true;
+    gettextSupport = config.php.gettext or true;
+    pcntlSupport = config.php.pcntl or true;
+    postgresqlSupport = config.php.postgresql or true;
+    pdo_pgsqlSupport = config.php.pdo_pgsql 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);
+    ztsSupport = config.php.zts or false;
+    calendarSupport = config.php.calendar or true;
+  };
+
+  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 = sha;
+  };
+
+  meta = with stdenv.lib; {
+    description = "An HTML-embedded scripting language";
+    homepage = http://www.php.net/;
+    license = stdenv.lib.licenses.php301;
+    maintainers = with maintainers; [ globin ];
+  };
+
+  patches = [ ./fix-paths.patch ];
+
+})