invalidateFetcherByDrvHash: Add self-check
... so it won't break when the fetcher doesn't use name correctly.
This commit is contained in:
parent
46b3df372e
commit
8e8b3fa1bb
1 changed files with 9 additions and 1 deletions
|
@ -618,7 +618,15 @@ with pkgs;
|
|||
drvPath = (f args).drvPath;
|
||||
# It's safe to discard the context, because we don't access the path.
|
||||
salt = builtins.unsafeDiscardStringContext (lib.substring 0 12 (baseNameOf drvPath));
|
||||
in f (args // { name = "${args.name or "source"}-salted-${salt}"; });
|
||||
# New derivation incorporating the original drv hash in the name
|
||||
salted = f (args // { name = "${args.name or "source"}-salted-${salt}"; });
|
||||
# Make sure we did change the derivation. If the fetcher ignores `name`,
|
||||
# `invalidateFetcherByDrvHash` doesn't work.
|
||||
checked =
|
||||
if salted.drvPath == drvPath
|
||||
then throw "invalidateFetcherByDrvHash: Adding the derivation hash to the fixed-output derivation name had no effect. Make sure the fetcher's name argument ends up in the derivation name. Otherwise, the fetcher will not be re-run when its implementation changes. This is important for testing."
|
||||
else salted;
|
||||
in checked;
|
||||
|
||||
lazydocker = callPackage ../tools/misc/lazydocker { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue