applyPatches: simplify src attribute inheritance.

This fixes the potential mismatch between a `applyPatches` with and without patches, as the latter would not merge the `meta` or `passthru` args.
This is technically a breaking change to the `applyPatches` interface, but there are no instances of this in nixpkgs.
This commit is contained in:
Peder Bergebakken Sundt
2025-05-22 04:09:52 +02:00
parent 8ef82d9b1d
commit 9ec7451ac9
@@ -1022,6 +1022,12 @@ rec {
postPatch ? "",
...
}@args:
assert lib.assertMsg (
!args ? meta
) "applyPatches will not merge 'meta', change it in 'src' instead";
assert lib.assertMsg (
!args ? passthru
) "applyPatches will not merge 'passthru', change it in 'src' instead";
if patches == [ ] && prePatch == "" && postPatch == "" then
src # nothing to do, so use original src to avoid additional drv
else
@@ -1051,19 +1057,17 @@ rec {
phases = "unpackPhase patchPhase installPhase";
installPhase = "cp -R ./ $out";
}
# Carry and merge information from the underlying `src` if present.
// (optionalAttrs (src ? meta || args ? meta) {
meta = src.meta or { } // args.meta or { };
# Carry (and merge) information from the underlying `src` if present.
// (optionalAttrs (src ? meta) {
inherit (src) meta;
})
// (optionalAttrs (extraPassthru != { } || src ? passthru || args ? passthru) {
passthru = extraPassthru // src.passthru or { } // args.passthru or { };
// (optionalAttrs (extraPassthru != { } || src ? passthru) {
passthru = extraPassthru // src.passthru or { };
})
# Forward any additional arguments to the derviation
// (removeAttrs args [
"src"
"name"
"meta"
"passthru"
"patches"
"prePatch"
"postPatch"