diff options
Diffstat (limited to '')
-rw-r--r-- | users/edef/depot-scan-wrap.nix | 17 | ||||
-rw-r--r-- | users/edef/depot-scan.nix | 2 | ||||
-rwxr-xr-x | users/edef/depot-scan.pl | 2 |
3 files changed, 19 insertions, 2 deletions
diff --git a/users/edef/depot-scan-wrap.nix b/users/edef/depot-scan-wrap.nix new file mode 100644 index 000000000000..52ea5cc8527b --- /dev/null +++ b/users/edef/depot-scan-wrap.nix @@ -0,0 +1,17 @@ +# this wraps import to override readFile and readDir to trace the files it touches +# technique inspired by lorri +{ ... }: + +let + + global = { + import = global.scopedImport {}; + scopedImport = x: builtins.scopedImport (global // x); + builtins = builtins // { + inherit (global) import scopedImport; + readFile = path: builtins.trace "depot-scan '${toString path}'" (builtins.readFile path); + readDir = path: builtins.trace "depot-scan '${toString path}'" (builtins.readDir path); + }; + }; + +in global.import diff --git a/users/edef/depot-scan.nix b/users/edef/depot-scan.nix index ce0f8d97990b..f0654188c87a 100644 --- a/users/edef/depot-scan.nix +++ b/users/edef/depot-scan.nix @@ -8,5 +8,5 @@ pkgs.writeShellScriptBin "depot-scan" '' attr="''${path//\//.}" root="$(git rev-parse --show-toplevel)" echo "scanning //$path" >&2 - nix-instantiate "$root" -A "$attr" -vv 2> >(${pkgs.perl}/bin/perl ${./depot-scan.pl}) >&2 + nix-instantiate -E "import ${./depot-scan-wrap.nix} {} $root" -A "$attr" -vv 2> >(${pkgs.perl}/bin/perl ${./depot-scan.pl}) >&2 '' diff --git a/users/edef/depot-scan.pl b/users/edef/depot-scan.pl index 39550d83c1a5..8808e2eb0023 100755 --- a/users/edef/depot-scan.pl +++ b/users/edef/depot-scan.pl @@ -3,7 +3,7 @@ use strict; if (/^evaluating file '(.*)'$/ or /^copied source '(.*)' -> '.*'$/ or - /^trace: lorri read: '(.*)'$/) { + /^trace: depot-scan '(.*)'$/) { print $1; next; } |