From 571143ea73319c1e8f59ee741ae3c3cf65a911c8 Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Fri, 24 Oct 2025 23:48:17 +0200 Subject: [PATCH] buildPython*: unconditionally add .override To be able to splice, we can't fail to eval before returning an attribute set. By checking for f ? override, we need to force f which isn't always possible, whereas mirrorFunctionArgs serves as an indirection which wraps the inner thunks in an attribute set that can always be returned. Fortunately, there should be no case when f evaluates successfully and does not have the override attribute, so we can just remove the condition. This fixes evaluation of buildPython* based packages in certain splicing situations by being lazier. An example of this is pkgsCross.ghcjs.buildPackages.nixpkgs-openjdk-updater on staging right now (ff5098e). (cherry picked from commit 0443b98ab3aa88d5eb7ff231781d679be89868e8) --- pkgs/development/interpreters/python/python-packages-base.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/python-packages-base.nix b/pkgs/development/interpreters/python/python-packages-base.nix index 121e4ead89871..ea922745bb0d3 100644 --- a/pkgs/development/interpreters/python/python-packages-base.nix +++ b/pkgs/development/interpreters/python/python-packages-base.nix @@ -39,7 +39,7 @@ let else result ) - // lib.optionalAttrs (f ? override) { + // { # Support overriding `f` itself, e.g. `buildPythonPackage.override { }`. # Ensure `makeOverridablePythonPackage` is applied to the result. override = lib.mirrorFunctionArgs f.override (fdrv: makeOverridablePythonPackage (f.override fdrv));