diff --git a/pkgs/build-support/build-pecl.nix b/pkgs/build-support/build-pecl.nix index 135b68186f3..5837d413abc 100644 --- a/pkgs/build-support/build-pecl.nix +++ b/pkgs/build-support/build-pecl.nix @@ -20,4 +20,6 @@ stdenv.mkDerivation (args // { makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags; autoreconfPhase = "phpize"; + + preConfigure = "touch unix.h"; }) diff --git a/pkgs/development/interpreters/php/5.5.nix b/pkgs/development/interpreters/php/5.5.nix new file mode 100644 index 00000000000..70380889bd3 --- /dev/null +++ b/pkgs/development/interpreters/php/5.5.nix @@ -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 ]; + +}) diff --git a/pkgs/development/interpreters/php/5.6.nix b/pkgs/development/interpreters/php/5.6.nix new file mode 100644 index 00000000000..bf0f2076c1c --- /dev/null +++ b/pkgs/development/interpreters/php/5.6.nix @@ -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 ]; + +}) diff --git a/pkgs/development/interpreters/php/fix.patch b/pkgs/development/interpreters/php/fix.patch deleted file mode 100644 index 02f2c9c6c93..00000000000 --- a/pkgs/development/interpreters/php/fix.patch +++ /dev/null @@ -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; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bb9d2c2c7e7..6b4ffa36505 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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