From 82b5cef58dd31bf8bb484e7e169f5c838f4d2ae1 Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:24:55 +0300 Subject: [PATCH 1/6] php: drop support libmysqlclient --- pkgs/development/interpreters/php/default.nix | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 911795cc192..4b21bec6a3f 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -1,6 +1,6 @@ # pcre functionality is tested in nixos/tests/php-pcre.nix { lib, stdenv, fetchurl, autoconf, bison, libtool, pkgconfig, re2c -, libmysqlclient, libxml2, readline, zlib, curl, postgresql, gettext +, libxml2, readline, zlib, curl, postgresql, gettext , openssl, pcre, pcre2, sqlite, config, libjpeg, libpng, freetype , libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, unixODBC , uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium, html-tidy, libargon2 @@ -19,8 +19,8 @@ let , ldapSupport ? config.php.ldap or true , mhashSupport ? config.php.mhash or false , mysqlndSupport ? config.php.mysqlnd or true - , mysqliSupport ? config.php.mysqli or true - , pdo_mysqlSupport ? config.php.pdo_mysql or true + , mysqliSupport ? (config.php.mysqli or true) && (mysqlndSupport) + , pdo_mysqlSupport ? (config.php.pdo_mysql or true) && (mysqlndSupport) , libxml2Support ? config.php.libxml2 or true , apxs2Support ? config.php.apxs2 or (!stdenv.isDarwin) , embedSupport ? config.php.embed or false @@ -64,7 +64,6 @@ let }: let - mysqlBuildInputs = optional (!mysqlndSupport) libmysqlclient; libmcrypt' = libmcrypt.override { disablePosixThreads = true; }; in stdenv.mkDerivation { @@ -95,8 +94,6 @@ let ++ optional postgresqlSupport postgresql ++ optional pdo_odbcSupport unixODBC ++ optional pdo_pgsqlSupport postgresql - ++ optionals pdo_mysqlSupport mysqlBuildInputs - ++ optionals mysqliSupport mysqlBuildInputs ++ optional gmpSupport gmp ++ optional gettextSupport gettext ++ optional intlSupport icu @@ -152,11 +149,9 @@ let ++ optional postgresqlSupport "--with-pgsql=${postgresql}" ++ optional pdo_odbcSupport "--with-pdo-odbc=unixODBC,${unixODBC}" ++ optional pdo_pgsqlSupport "--with-pdo-pgsql=${postgresql}" - ++ optional pdo_mysqlSupport "--with-pdo-mysql=${if mysqlndSupport then "mysqlnd" else libmysqlclient}" - ++ optionals mysqliSupport [ - "--with-mysqli=${if mysqlndSupport then "mysqlnd" else "${libmysqlclient}/bin/mysql_config"}" - ] - ++ optional ( pdo_mysqlSupport || mysqliSupport ) "--with-mysql-sock=/run/mysqld/mysqld.sock" + ++ optional (pdo_mysqlSupport && mysqlndSupport) "--with-pdo-mysql=mysqlnd" + ++ optional (mysqliSupport && mysqlndSupport) "--with-mysqli=mysqlnd" + ++ optional (pdo_mysqlSupport || mysqliSupport) "--with-mysql-sock=/run/mysqld/mysqld.sock" ++ optional bcmathSupport "--enable-bcmath" # FIXME: Our own gd package doesn't work, see https://bugs.php.net/bug.php?id=60108. ++ optionals (gdSupport && versionAtLeast version "7.4") [ From 5dae87ec2df67e498153877702dd842bff3409ad Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:25:36 +0300 Subject: [PATCH 2/6] php: remove unused configureFlags --- pkgs/development/interpreters/php/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 4b21bec6a3f..9781bf43c7e 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -211,9 +211,6 @@ let export EXTENSION_DIR=$out/lib/php/extensions - configureFlags+=(--with-config-file-path=$out/etc \ - --includedir=$dev/include) - ./buildconf --force ''; From a74fb5a1afb59f0300c73019e75768f28692bce6 Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:26:58 +0300 Subject: [PATCH 3/6] php: add option ipv6Support --- pkgs/development/interpreters/php/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 9781bf43c7e..c33492948cc 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -61,6 +61,7 @@ let , xmlrpcSupport ? (config.php.xmlrpc or false) && (libxml2Support) , cgotoSupport ? config.php.cgoto or false , valgrindSupport ? (config.php.valgrind or true) && (versionAtLeast version "7.2") + , ipv6Support ? config.php.ipv6 or true }: let @@ -193,7 +194,8 @@ let ++ optional (!pharSupport) "--disable-phar" ++ optional xmlrpcSupport "--with-xmlrpc" ++ optional cgotoSupport "--enable-re2c-cgoto" - ++ optional valgrindSupport "--with-valgrind=${valgrind.dev}"; + ++ optional valgrindSupport "--with-valgrind=${valgrind.dev}" + ++ optional (!ipv6Support) "--disable-ipv6"; hardeningDisable = [ "bindnow" ]; From ac3c11a980a2e9c0ce69eba8b6c10f10190180ee Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:28:01 +0300 Subject: [PATCH 4/6] php: add option pearSupport --- pkgs/development/interpreters/php/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index c33492948cc..e62d461b5c7 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -62,6 +62,7 @@ let , cgotoSupport ? config.php.cgoto or false , valgrindSupport ? (config.php.valgrind or true) && (versionAtLeast version "7.2") , ipv6Support ? config.php.ipv6 or true + , pearSupport ? (config.php.pear or true) && (libxml2Support) }: let @@ -195,7 +196,8 @@ let ++ optional xmlrpcSupport "--with-xmlrpc" ++ optional cgotoSupport "--enable-re2c-cgoto" ++ optional valgrindSupport "--with-valgrind=${valgrind.dev}" - ++ optional (!ipv6Support) "--disable-ipv6"; + ++ optional (!ipv6Support) "--disable-ipv6" + ++ optional (pearSupport && libxml2Support) "--with-pear=$(out)/lib/php/pear"; hardeningDisable = [ "bindnow" ]; From 0ee5d55d3b3a014dba4a76e52901e638387c3ba0 Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:34:06 +0300 Subject: [PATCH 5/6] php: use external GD library --- pkgs/development/interpreters/php/default.nix | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index e62d461b5c7..73fb29a5c86 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -1,9 +1,10 @@ # pcre functionality is tested in nixos/tests/php-pcre.nix { lib, stdenv, fetchurl, autoconf, bison, libtool, pkgconfig, re2c , libxml2, readline, zlib, curl, postgresql, gettext -, openssl, pcre, pcre2, sqlite, config, libjpeg, libpng, freetype +, openssl, pcre, pcre2, sqlite, config , libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, unixODBC , uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium, html-tidy, libargon2 +, gd, freetype, libXpm, libjpeg, libpng, libwebp , libzip, valgrind, oniguruma }: @@ -84,7 +85,7 @@ let ++ optionals imapSupport [ uwimap openssl pam ] ++ optionals curlSupport [ curl openssl ] ++ optionals ldapSupport [ openldap openssl ] - ++ optionals gdSupport [ libpng libjpeg freetype ] + ++ optionals gdSupport [ gd freetype libXpm libjpeg libpng libwebp ] ++ optionals opensslSupport [ openssl openssl.dev ] ++ optional apxs2Support apacheHttpd ++ optional (ldapSupport && stdenv.isLinux) cyrus_sasl @@ -155,17 +156,22 @@ let ++ optional (mysqliSupport && mysqlndSupport) "--with-mysqli=mysqlnd" ++ optional (pdo_mysqlSupport || mysqliSupport) "--with-mysql-sock=/run/mysqld/mysqld.sock" ++ optional bcmathSupport "--enable-bcmath" - # FIXME: Our own gd package doesn't work, see https://bugs.php.net/bug.php?id=60108. ++ optionals (gdSupport && versionAtLeast version "7.4") [ "--enable-gd" + "--with-external-gd=${gd.dev}" + "--with-webp=${libwebp}" "--with-jpeg=${libjpeg.dev}" + "--with-xpm=${libXpm.dev}" "--with-freetype=${freetype.dev}" "--enable-gd-jis-conv" ] ++ optionals (gdSupport && versionOlder version "7.4") [ - "--with-gd" - "--with-freetype-dir=${freetype.dev}" - "--with-png-dir=${libpng.dev}" + "--with-gd=${gd.dev}" + "--with-webp-dir=${libwebp}" "--with-jpeg-dir=${libjpeg.dev}" + "--with-png-dir=${libpng.dev}" + "--with-freetype-dir=${freetype.dev}" + "--with-xpm-dir=${libXpm.dev}" + "--enable-gd-jis-conv" ] ++ optional gmpSupport "--with-gmp=${gmp.dev}" ++ optional soapSupport "--enable-soap" From ffe90532f79efeb5c58a5ddf0b4beab02e89be47 Mon Sep 17 00:00:00 2001 From: Izorkin Date: Tue, 10 Dec 2019 20:40:33 +0300 Subject: [PATCH 6/6] php: update build configuration --- pkgs/development/interpreters/php/default.nix | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 73fb29a5c86..0e4d83c1352 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -1,7 +1,8 @@ # pcre functionality is tested in nixos/tests/php-pcre.nix -{ lib, stdenv, fetchurl, autoconf, bison, libtool, pkgconfig, re2c +{ config, lib, stdenv, fetchurl +, autoconf, automake, bison, file, flex, libtool, pkgconfig, re2c , libxml2, readline, zlib, curl, postgresql, gettext -, openssl, pcre, pcre2, sqlite, config +, openssl, pcre, pcre2, sqlite , libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, unixODBC , uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium, html-tidy, libargon2 , gd, freetype, libXpm, libjpeg, libpng, libwebp @@ -72,11 +73,14 @@ let inherit version; - name = "php-${version}"; + pname = "php"; enableParallelBuilding = true; - nativeBuildInputs = [ autoconf bison libtool pkgconfig re2c ]; + nativeBuildInputs = [ + autoconf automake bison file flex libtool pkgconfig re2c + ]; + buildInputs = [ ] ++ optional (versionOlder version "7.3") pcre ++ optional (versionAtLeast version "7.3") pcre2 @@ -138,7 +142,6 @@ let ++ optional (libxml2Support && (versionOlder version "7.4")) "--with-libxml-dir=${libxml2.dev}" ++ optional (!libxml2Support) [ "--disable-dom" - "--disable-libxml" (if (versionOlder version "7.4") then "--disable-libxml" else "--without-libxml") "--disable-simplexml" "--disable-xml" @@ -217,11 +220,17 @@ let --replace '@PHP_LDFLAGS@' "" done - #[[ -z "$libxml2" ]] || addToSearchPath PATH $libxml2/bin + substituteInPlace ./build/libtool.m4 --replace /usr/bin/file ${file}/bin/file export EXTENSION_DIR=$out/lib/php/extensions - ./buildconf --force + ./buildconf --copy --force + + if test -f $src/genfiles; then + ./genfiles + fi + '' + optionalString stdenv.isDarwin '' + substituteInPlace configure --replace "-lstdc++" "-lc++" ''; postInstall = '' @@ -233,8 +242,8 @@ let mkdir -p $dev/bin $dev/share/man/man1 mv $out/bin/phpize $out/bin/php-config $dev/bin/ mv $out/share/man/man1/phpize.1.gz \ - $out/share/man/man1/php-config.1.gz \ - $dev/share/man/man1/ + $out/share/man/man1/php-config.1.gz \ + $dev/share/man/man1/ ''; src = fetchurl { @@ -253,10 +262,6 @@ let patches = [ ./fix-paths-php7.patch ] ++ extraPatches; - postPatch = optional stdenv.isDarwin '' - substituteInPlace configure --replace "-lstdc++" "-lc++" - ''; - stripDebugList = "bin sbin lib modules"; outputs = [ "out" "dev" ];