From f7ab39e5253c9a8dd54cef748228976ffd0a8319 Mon Sep 17 00:00:00 2001 From: Tim Van Baak Date: Sun, 17 Nov 2024 20:06:46 -0800 Subject: [PATCH] php: support two- and zero-argument overrideAttrs forms --- pkgs/development/interpreters/php/generic.nix | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/pkgs/development/interpreters/php/generic.nix b/pkgs/development/interpreters/php/generic.nix index 13e10103f54f..a9d808641916 100644 --- a/pkgs/development/interpreters/php/generic.nix +++ b/pkgs/development/interpreters/php/generic.nix @@ -37,7 +37,7 @@ let , hash ? null , extraPatches ? [ ] , packageOverrides ? (final: prev: { }) - , phpAttrsOverrides ? (attrs: { }) + , phpAttrsOverrides ? (final: prev: { }) , pearInstallPhar ? (callPackage ./install-pear-nozlib-phar.nix { }) # Sapi flags @@ -63,16 +63,6 @@ let }@args: let - # Compose two functions of the type expected by 'overrideAttrs' - # into one where changes made in the first are available to the second. - composeOverrides = - f: g: attrs: - let - fApplied = f attrs; - attrs' = attrs // fApplied; - in - fApplied // g attrs'; - # buildEnv wraps php to provide additional extensions and # configuration. Its usage is documented in # doc/languages-frameworks/php.section.md. @@ -153,7 +143,8 @@ let overrideAttrs = f: let - newPhpAttrsOverrides = composeOverrides (filteredArgs.phpAttrsOverrides or (attrs: { })) f; + phpAttrsOverrides = filteredArgs.phpAttrsOverrides or (final: prev: { }); + newPhpAttrsOverrides = lib.composeExtensions (lib.toExtension phpAttrsOverrides) (lib.toExtension f); php = generic (filteredArgs // { phpAttrsOverrides = newPhpAttrsOverrides; }); in php.buildEnv { inherit extensions extraConfig; }; @@ -342,7 +333,7 @@ let overrideAttrs = f: let - newPhpAttrsOverrides = composeOverrides phpAttrsOverrides f; + newPhpAttrsOverrides = lib.composeExtensions (lib.toExtension phpAttrsOverrides) (lib.toExtension f); php = generic (args // { phpAttrsOverrides = newPhpAttrsOverrides; }); in php; @@ -359,8 +350,9 @@ let outputsToInstall = [ "out" "dev" ]; }; }; + final = attrs // (lib.toExtension phpAttrsOverrides) final attrs; in - attrs // phpAttrsOverrides attrs + final ); in generic