about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/interpreters/php/default.nix29
-rw-r--r--pkgs/top-level/all-packages.nix16
-rw-r--r--pkgs/top-level/php-packages.nix57
3 files changed, 62 insertions, 40 deletions
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index 36f1d9f92e96..3c2a73a5c193 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -144,13 +144,17 @@ let
     };
   };
 
-  generic' = { version, sha256, ... }@args:
+  generic' = { version, sha256, self, selfWithExtensions, ... }@args:
     let
-      php = generic args;
+      php = generic (builtins.removeAttrs args [ "self" "selfWithExtensions" ]);
+      packages = callPackage ../../../top-level/php-packages.nix {
+        php = self;
+        phpWithExtensions = selfWithExtensions;
+      };
       buildEnv = { exts ? (_: []), extraConfig ? "" }:
         let
           getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name;
-          extList = exts (callPackage ../../../top-level/php-packages.nix { inherit php; });
+          extList = exts packages;
 
           # Generate extension load configuration snippets from
           # exts. This is an attrset suitable for use with
@@ -182,7 +186,9 @@ let
             name = "php-with-extensions-${version}";
             inherit version;
             nativeBuildInputs = [ makeWrapper ];
-            passthru.buildEnv = buildEnv;
+            passthru = {
+              inherit buildEnv packages;
+            };
             paths = [ php ];
             postBuild = ''
               wrapProgram $out/bin/php \
@@ -193,12 +199,16 @@ let
           };
     in
       php.overrideAttrs (_: {
-        passthru.buildEnv = buildEnv;
+        passthru = {
+          inherit buildEnv packages;
+        };
       });
 
   php72base = generic' {
     version = "7.2.28";
     sha256 = "18sjvl67z5a2x5s2a36g6ls1r3m4hbrsw52hqr2qsgfvg5dkm5bw";
+    self = php72base;
+    selfWithExtensions = php72;
 
     # https://bugs.php.net/bug.php?id=76826
     extraPatches = lib.optional stdenv.isDarwin ./php72-darwin-isfinite.patch;
@@ -207,6 +217,8 @@ let
   php73base = generic' {
     version = "7.3.15";
     sha256 = "0g84hws15s8gh8iq4h6q747dyfazx47vh3da3whz8d80x83ibgld";
+    self = php73base;
+    selfWithExtensions = php73;
 
     # https://bugs.php.net/bug.php?id=76826
     extraPatches = lib.optional stdenv.isDarwin ./php73-darwin-isfinite.patch;
@@ -215,6 +227,8 @@ let
   php74base = generic' {
     version = "7.4.3";
     sha256 = "wVF7pJV4+y3MZMc6Ptx21PxQfEp6xjmYFYTMfTtMbRQ=";
+    self = php74base;
+    selfWithExtensions = php74;
   };
 
   defaultPhpExtensions = {
@@ -226,10 +240,11 @@ let
       tokenizer xmlreader xmlwriter zip zlib
     ] ++ lib.optionals (!stdenv.isDarwin) [ imap ]);
   };
-in {
-  inherit php72base php73base php74base;
 
   php74 = php74base.buildEnv defaultPhpExtensions;
   php73 = php73base.buildEnv defaultPhpExtensions;
   php72 = php72base.buildEnv defaultPhpExtensions;
+
+in {
+  inherit php72base php73base php74base php72 php73 php74;
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1bceaf3d29d1..1bb373ad6336 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -9371,19 +9371,11 @@ in
   pachyderm = callPackage ../applications/networking/cluster/pachyderm { };
 
   php = php74;
-  phpPackages = php74Packages;
-
-  php72Packages = recurseIntoAttrs (callPackage ./php-packages.nix {
-    php = php72base;
-  });
 
-  php73Packages = recurseIntoAttrs (callPackage ./php-packages.nix {
-    php = php73base;
-  });
-
-  php74Packages = recurseIntoAttrs (callPackage ./php-packages.nix {
-    php = php74base;
-  });
+  phpPackages = php74Packages;
+  php72Packages = recurseIntoAttrs php72.packages;
+  php73Packages = recurseIntoAttrs php73.packages;
+  php74Packages = recurseIntoAttrs php74.packages;
 
   inherit (callPackages ../development/interpreters/php {
     stdenv = if stdenv.cc.isClang then llvmPackages_6.stdenv else stdenv;
diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix
index 198b2c2e8e97..604a7b0474c3 100644
--- a/pkgs/top-level/php-packages.nix
+++ b/pkgs/top-level/php-packages.nix
@@ -1,25 +1,28 @@
-{ stdenv, lib, pkgs, fetchgit, php, autoconf, pkgconfig, re2c, gettext
-, bzip2, curl, libxml2, openssl, gmp, icu, oniguruma, libsodium, html-tidy
-, libzip, zlib, pcre, pcre2, libxslt, aspell, openldap, cyrus_sasl, uwimap
-, pam, libiconv, enchant1, libXpm, gd, libwebp, libjpeg, libpng, freetype
-, libffi, freetds, postgresql, sqlite, net-snmp, unixODBC, libedit, readline
+{ stdenv, lib, pkgs, fetchgit, php, phpWithExtensions, autoconf, pkgconfig, re2c
+, gettext, bzip2, curl, libxml2, openssl, gmp, icu, oniguruma, libsodium
+, html-tidy, libzip, zlib, pcre, pcre2, libxslt, aspell, openldap, cyrus_sasl
+, uwimap, pam, libiconv, enchant1, libXpm, gd, libwebp, libjpeg, libpng
+, freetype, libffi, freetds, postgresql, sqlite, net-snmp, unixODBC, libedit
+, readline, rsync
 }:
 
 let
-  self = with self; {
-    buildPecl = import ../build-support/build-pecl.nix {
-      inherit php;
-      inherit (pkgs) stdenv autoreconfHook fetchurl re2c;
-    };
+  buildPecl = import ../build-support/build-pecl.nix {
+    inherit php lib;
+    inherit (pkgs) stdenv autoreconfHook fetchurl re2c;
+  };
 
-    # Wrap mkDerivation to prepend pname with "php-" to make names consistent
-    # with how buildPecl does it and make the file easier to overview.
-    mkDerivation = { pname, ... }@args: pkgs.stdenv.mkDerivation (args // {
-      pname = "php-${pname}";
-    });
+  # Wrap mkDerivation to prepend pname with "php-" to make names consistent
+  # with how buildPecl does it and make the file easier to overview.
+  mkDerivation = { pname, ... }@args: pkgs.stdenv.mkDerivation (args // {
+    pname = "php-${pname}";
+  });
 
   isPhp73 = pkgs.lib.versionAtLeast php.version "7.3";
   isPhp74 = pkgs.lib.versionAtLeast php.version "7.4";
+in
+{
+  inherit buildPecl;
 
   apcu = buildPecl {
     version = "5.1.18";
@@ -41,7 +44,10 @@ let
 
     sha256 = "0ma00syhk2ps9k9p02jz7rii6x3i2p986il23703zz5npd6y9n20";
 
-    buildInputs = [ apcu (if isPhp73 then pkgs.pcre2 else pkgs.pcre) ];
+    buildInputs = [
+      php.packages.apcu
+      (if isPhp73 then pkgs.pcre2 else pkgs.pcre)
+    ];
   };
 
   ast = buildPecl {
@@ -111,7 +117,12 @@ let
     version = "2.6.1";
     pname = "couchbase";
 
-    buildInputs = [ pkgs.libcouchbase pkgs.zlib igbinary pcs ];
+    buildInputs = [
+      pkgs.libcouchbase
+      pkgs.zlib
+      php.packages.igbinary
+      php.packages.pcs
+    ];
 
     src = pkgs.fetchFromGitHub {
       owner = "couchbase";
@@ -139,8 +150,8 @@ let
              igbinary_inc_path="$phpincludedir"
            elif test -f "$phpincludedir/ext/igbinary/igbinary.h"; then
              igbinary_inc_path="$phpincludedir"
-        +  elif test -f "${igbinary.dev}/include/ext/igbinary/igbinary.h"; then
-        +    igbinary_inc_path="${igbinary.dev}/include"
+        +  elif test -f "${php.packages.igbinary.dev}/include/ext/igbinary/igbinary.h"; then
+        +    igbinary_inc_path="${php.packages.igbinary.dev}/include"
            fi
            if test "$igbinary_inc_path" = ""; then
              AC_MSG_WARN([Cannot find igbinary.h])
@@ -353,7 +364,11 @@ let
       sha256 = "16nv8yyk2z3l213dg067l6di4pigg5rd8yswr5xgd18jwbys2vnw";
     };
 
-    buildInputs = [ pkgs.makeWrapper composer box ];
+    buildInputs = [
+      pkgs.makeWrapper
+      php.packages.composer
+      php.packages.box
+    ];
 
     buildPhase = ''
       composer dump-autoload
@@ -1024,4 +1039,4 @@ let
 
     # Produce the final attribute set of all extensions defined.
   in builtins.listToAttrs namedExtensions;
-}; in self
+}