diff options
author | Shea Levy <shea@shealevy.com> | 2015-11-17 07:09:03 -0500 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2015-11-17 07:09:03 -0500 |
commit | a75de3ce5625f921471f88319356dab55e85b509 (patch) | |
tree | df9369fcbc2d4dfaa4ed52c955f9ca13a77fbe31 | |
parent | aa9827a948b3ad6caf8fd11dc6c483a677f17ec4 (diff) | |
parent | fb683211dcbcc4ad81a575ebfb7bf0b382dcdf46 (diff) | |
download | nixpkgs-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.nix | 10 |
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) |