Loading nixos/modules/system/activation/top-level.nix +3 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,9 @@ let baseSystemAssertWarn else (pkgs.replaceDependencies.override { replaceDirectDependencies = pkgs.replaceDirectDependencies.override { nix = config.nix.package; }; }) { drv = baseSystemAssertWarn; inherit replacements cutoffPackages; Loading pkgs/build-support/replace-dependencies.nix +10 −21 Original line number Diff line number Diff line { runCommandLocal, nix, lib, runCommandLocal, replaceDirectDependencies, }: # Replace some dependencies in the requisites tree of drv, propagating the change all the way up the tree, even within other replacements, without a full rebuild. Loading Loading @@ -43,15 +43,13 @@ let inherit (builtins) unsafeDiscardStringContext appendContext; inherit (lib) trace substring stringLength concatStringsSep mapAttrsToList listToAttrs attrValues mapAttrs filter hasAttr mapAttrsToList all ; inherit (lib.attrsets) mergeAttrsList; Loading Loading @@ -90,21 +88,6 @@ let echo }) > $out '' ).outPath; rewriteHashes = drv: rewrites: if rewrites == { } then drv else let drvName = substring 33 (stringLength (baseNameOf drv)) (baseNameOf drv); in runCommandLocal drvName { nixStore = "${nix}/bin/nix-store"; } '' $nixStore --dump ${drv} | sed 's|${baseNameOf drv}|'$(basename $out)'|g' | sed -e ${ concatStringsSep " -e " ( mapAttrsToList (name: value: "'s|${baseNameOf name}|${baseNameOf value}|g'") rewrites ) } | $nixStore --restore $out ''; knownDerivations = [ drv ] ++ map ({ newDependency, ... }: newDependency) replacements; referencesMemo = listToAttrs ( Loading Loading @@ -162,7 +145,13 @@ let }) rewrittenReferences ); in rewriteHashes storePathOrKnownDerivationMemo.${drv} rewrites replaceDirectDependencies { drv = storePathOrKnownDerivationMemo.${drv}; replacements = mapAttrsToList (name: value: { oldDependency = name; newDependency = value; }) rewrites; } ) relevantReferences // listToAttrs ( map (drv: { Loading pkgs/build-support/replace-direct-dependencies.nix 0 → 100644 +25 −0 Original line number Diff line number Diff line { lib, runCommandLocal, nix, }: # Replace some direct dependencies of drv, not recursing into the dependency tree. # You likely want to use replaceDependencies instead, unless you plan to implement your own recursion mechanism. { drv, replacements ? [ ] }: let inherit (lib) all stringLength substring concatStringsSep; in assert all ({ oldDependency, newDependency }: stringLength oldDependency == stringLength newDependency) replacements; if replacements == [ ] then drv else let drvName = substring 33 (stringLength (baseNameOf drv)) (baseNameOf drv); in runCommandLocal drvName { nixStore = "${nix}/bin/nix-store"; } '' $nixStore --dump ${drv} | sed 's|${ baseNameOf drv }|'$(basename $out)'|g' | sed -e ${ concatStringsSep " -e " (map ({ oldDependency, newDependency }: "'s|${baseNameOf oldDependency}|${baseNameOf newDependency}|g'") replacements) } | $nixStore --restore $out '' pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -1319,6 +1319,8 @@ with pkgs; replaceVars = callPackage ../build-support/replace-vars { }; replaceDirectDependencies = callPackage ../build-support/replace-direct-dependencies.nix { }; nukeReferences = callPackage ../build-support/nuke-references { inherit (darwin) signingUtils; }; Loading
nixos/modules/system/activation/top-level.nix +3 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,9 @@ let baseSystemAssertWarn else (pkgs.replaceDependencies.override { replaceDirectDependencies = pkgs.replaceDirectDependencies.override { nix = config.nix.package; }; }) { drv = baseSystemAssertWarn; inherit replacements cutoffPackages; Loading
pkgs/build-support/replace-dependencies.nix +10 −21 Original line number Diff line number Diff line { runCommandLocal, nix, lib, runCommandLocal, replaceDirectDependencies, }: # Replace some dependencies in the requisites tree of drv, propagating the change all the way up the tree, even within other replacements, without a full rebuild. Loading Loading @@ -43,15 +43,13 @@ let inherit (builtins) unsafeDiscardStringContext appendContext; inherit (lib) trace substring stringLength concatStringsSep mapAttrsToList listToAttrs attrValues mapAttrs filter hasAttr mapAttrsToList all ; inherit (lib.attrsets) mergeAttrsList; Loading Loading @@ -90,21 +88,6 @@ let echo }) > $out '' ).outPath; rewriteHashes = drv: rewrites: if rewrites == { } then drv else let drvName = substring 33 (stringLength (baseNameOf drv)) (baseNameOf drv); in runCommandLocal drvName { nixStore = "${nix}/bin/nix-store"; } '' $nixStore --dump ${drv} | sed 's|${baseNameOf drv}|'$(basename $out)'|g' | sed -e ${ concatStringsSep " -e " ( mapAttrsToList (name: value: "'s|${baseNameOf name}|${baseNameOf value}|g'") rewrites ) } | $nixStore --restore $out ''; knownDerivations = [ drv ] ++ map ({ newDependency, ... }: newDependency) replacements; referencesMemo = listToAttrs ( Loading Loading @@ -162,7 +145,13 @@ let }) rewrittenReferences ); in rewriteHashes storePathOrKnownDerivationMemo.${drv} rewrites replaceDirectDependencies { drv = storePathOrKnownDerivationMemo.${drv}; replacements = mapAttrsToList (name: value: { oldDependency = name; newDependency = value; }) rewrites; } ) relevantReferences // listToAttrs ( map (drv: { Loading
pkgs/build-support/replace-direct-dependencies.nix 0 → 100644 +25 −0 Original line number Diff line number Diff line { lib, runCommandLocal, nix, }: # Replace some direct dependencies of drv, not recursing into the dependency tree. # You likely want to use replaceDependencies instead, unless you plan to implement your own recursion mechanism. { drv, replacements ? [ ] }: let inherit (lib) all stringLength substring concatStringsSep; in assert all ({ oldDependency, newDependency }: stringLength oldDependency == stringLength newDependency) replacements; if replacements == [ ] then drv else let drvName = substring 33 (stringLength (baseNameOf drv)) (baseNameOf drv); in runCommandLocal drvName { nixStore = "${nix}/bin/nix-store"; } '' $nixStore --dump ${drv} | sed 's|${ baseNameOf drv }|'$(basename $out)'|g' | sed -e ${ concatStringsSep " -e " (map ({ oldDependency, newDependency }: "'s|${baseNameOf oldDependency}|${baseNameOf newDependency}|g'") replacements) } | $nixStore --restore $out ''
pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -1319,6 +1319,8 @@ with pkgs; replaceVars = callPackage ../build-support/replace-vars { }; replaceDirectDependencies = callPackage ../build-support/replace-direct-dependencies.nix { }; nukeReferences = callPackage ../build-support/nuke-references { inherit (darwin) signingUtils; };