summary refs log tree commit diff
path: root/pkgs/development/interpreters/php/default.nix
diff options
context:
space:
mode:
authorAlastair Pharo <asppsa@gmail.com>2017-04-03 01:35:21 +1000
committerAlastair Pharo <asppsa@gmail.com>2017-04-24 16:45:20 +1000
commitb330329768cc753b6bd8f0e6e3f398382566f7c8 (patch)
treef714e97e6801e9fca8174cec4f6c4b4e87d2f34d /pkgs/development/interpreters/php/default.nix
parent1dcb587d93e8a3f1de4c47939e4dd1e91c8546bc (diff)
downloadnixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar.gz
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar.bz2
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar.lz
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar.xz
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.tar.zst
nixpkgs-b330329768cc753b6bd8f0e6e3f398382566f7c8.zip
php: fix php-config header file paths
Split outputs mean that the "include" folder from PHP gets placed into a
"dev" derivation. However php-config is not aware of this, which means
that compiling extensions with phpize fails with an error about being
unable to find header files (see #24357, #24420).  This fixes that by:

1. passing the `--includedir` flag to `configure` so that `php-config`
   gives the correct paths.

2. moving the `phpize` and `php-config` scripts and man pages to the
   dev derivation, to prevent cylic references.

3. ensuring that the `configure` script arguments are stripped from
   all binaries, including `php-embed`, to prevent cyclic references.
Diffstat (limited to 'pkgs/development/interpreters/php/default.nix')
-rw-r--r--pkgs/development/interpreters/php/default.nix32
1 files changed, 21 insertions, 11 deletions
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index c3f56b4c664..96ea21e0205 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -23,11 +23,6 @@ let
       buildInputs = [ flex bison pkgconfig ]
         ++ lib.optional stdenv.isLinux systemd;
 
-      configureFlags = [
-        "EXTENSION_DIR=$(out)/lib/php/extensions"
-      ] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}"
-        ++ lib.optional stdenv.isLinux  "--with-fpm-systemd";
-
       flags = {
 
         # much left to do here...
@@ -267,26 +262,40 @@ let
 
       hardeningDisable = [ "bindnow" ];
 
-      configurePhase = ''
+      preConfigure = ''
         # Don't record the configure flags since this causes unnecessary
-        # runtime dependencies - except for php-embed, as uwsgi needs them.
-        ${lib.optionalString (!(config.php.embed or false)) ''
+        # 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
-        ''}
 
-        [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
-        ./configure --with-config-file-scan-dir=/etc/php.d --with-config-file-path=$out/etc --prefix=$out $configureFlags
+        #[[ -z "$libxml2" ]] || addToSearchPath PATH $libxml2/bin
+
+        configureFlags+=(--with-config-file-path=$out/etc \
+          --includedir=$dev/include \
+          EXTENSION_DIR=$out/lib/php/extensions)
       '';
 
+      configureFlags = [
+        "--with-config-file-scan-dir=/etc/php.d"
+      ] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}"
+        ++ lib.optional stdenv.isLinux  "--with-fpm-systemd";
+
       postInstall = ''
         cp php.ini-production $out/etc/php.ini
       '';
 
+      postFixup = ''
+        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/
+      '';
+
       src = fetchurl {
         url = "http://www.php.net/distributions/php-${version}.tar.bz2";
         inherit sha256;
@@ -298,6 +307,7 @@ let
         license = licenses.php301;
         maintainers = with maintainers; [ globin ];
         platforms = platforms.all;
+        outputsToInstall = [ "out" "dev" ];
       };
 
       patches = if !php7 then [ ./fix-paths.patch ] else [ ./fix-paths-php7.patch ];