Commit 9ec7451a authored by Peder Bergebakken Sundt's avatar Peder Bergebakken Sundt
Browse files

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.
parent 8ef82d9b
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -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"