summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2015-11-17 07:09:03 -0500
committerShea Levy <shea@shealevy.com>2015-11-17 07:09:03 -0500
commita75de3ce5625f921471f88319356dab55e85b509 (patch)
treedf9369fcbc2d4dfaa4ed52c955f9ca13a77fbe31
parentaa9827a948b3ad6caf8fd11dc6c483a677f17ec4 (diff)
parentfb683211dcbcc4ad81a575ebfb7bf0b382dcdf46 (diff)
downloadnixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar.gz
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar.bz2
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar.lz
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar.xz
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.tar.zst
nixpkgs-a75de3ce5625f921471f88319356dab55e85b509.zip
Merge branch 'replace-dependency' of https://github.com/roconnor/nixpkgs
When replace-dependency is given a drv that doesn't actually depend on
oldDependency, then just return back the original drv but also issue a
warning.
-rw-r--r--pkgs/build-support/replace-dependency.nix10
1 files changed, 6 insertions, 4 deletions
diff --git a/pkgs/build-support/replace-dependency.nix b/pkgs/build-support/replace-dependency.nix
index ed65b9dad1d..4ac47f9a9f2 100644
--- a/pkgs/build-support/replace-dependency.nix
+++ b/pkgs/build-support/replace-dependency.nix
@@ -17,11 +17,12 @@
 # };
 # This will rebuild glibc with your security patch, then copy over firefox
 # (and all of its dependencies) without rebuilding further.
-{ drv, oldDependency, newDependency }:
+{ drv, oldDependency, newDependency, verbose ? true }:
 
 with lib;
 
 let
+  warn = if verbose then builtins.trace else (x:y:y);
   references = import (runCommand "references.nix" { exportReferencesGraph = [ "graph" drv ]; } ''
     (echo {
     while read path
@@ -47,7 +48,7 @@ let
 
   oldStorepath = builtins.storePath (discard (toString oldDependency));
 
-  referencesOf = drv: getAttr (discard (toString drv)) references;
+  referencesOf = drv: references.${discard (toString drv)};
 
   dependsOnOldMemo = listToAttrs (map
     (drv: { name = discard (toString drv);
@@ -55,7 +56,7 @@ let
                     any dependsOnOld (referencesOf drv);
           }) (builtins.attrNames references));
 
-  dependsOnOld = drv: getAttr (discard (toString drv)) dependsOnOldMemo;
+  dependsOnOld = drv: dependsOnOldMemo.${discard (toString drv)};
 
   drvName = drv:
     discard (substring 33 (stringLength (builtins.baseNameOf drv)) (builtins.baseNameOf drv));
@@ -77,5 +78,6 @@ let
           })
     (filter dependsOnOld (builtins.attrNames references))) // rewrittenDeps;
 
+  drvHash = discard (toString drv);
 in assert (stringLength (drvName (toString oldDependency)) == stringLength (drvName (toString newDependency)));
-getAttr (discard (toString drv)) rewriteMemo
+rewriteMemo.${drvHash} or (warn "replace-dependency.nix: Derivation ${drvHash} does not depend on ${discard (toString oldDependency)}" drv)