Closes #334 Closes #626 This is loosely based on upstream PR#10877[1], but heavily changed to use the graph logic from `nix why-depends`. `precise` is `false` here since the out-path of the drv being built isn't registered yet, so the path accessor cannot scan through files yet. Example output (from an openssh build with `pcsclite.lib` & `glibc` in `disallowedRequisites`): error: output '/nix/store/hr8lmmjmd1jk6s3p5ymggyk4am7n2lmb-openssh-10.0p2' is not allowed to refer to the following paths: /nix/store/p6r5awz3ywrz66symnrn0xb85xzmcysf-pcsclite-2.3.0-lib /nix/store/q4wq65gl3r8fy746v9bbwgx4gzn0r2kl-glibc-2.40-66 Shown below are chains that lead to the forbidden path(s). /nix/store/hr8lmmjmd1jk6s3p5ymggyk4am7n2lmb-openssh-10.0p2 └───/nix/store/ys91ywnwikm14xznwk3cdbprapv2m37z-libfido2-1.16.0 └───/nix/store/p6r5awz3ywrz66symnrn0xb85xzmcysf-pcsclite-2.3.0-lib /nix/store/hr8lmmjmd1jk6s3p5ymggyk4am7n2lmb-openssh-10.0p2 ├───/nix/store/q4wq65gl3r8fy746v9bbwgx4gzn0r2kl-glibc-2.40-66 ├───/nix/store/6r4zqb04fq5l5l4zghq76wvcpz7dwd35-linux-pam-1.6.1 │ ├───/nix/store/q4wq65gl3r8fy746v9bbwgx4gzn0r2kl-glibc-2.40-66 [...] [1] https://github.com/NixOS/nix/pull/10877 Co-authored-by: Robert Hensing <robert@roberthensing.nl> Change-Id: Ib30024c0d9e45c1160bf0134f7d3ba17dbdeff47
25 lines
958 B
Bash
25 lines
958 B
Bash
source common.sh
|
|
|
|
clearStore
|
|
|
|
RESULT=$TEST_ROOT/result
|
|
|
|
nix-build -o $RESULT check-reqs.nix -A test1
|
|
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test2)
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test3)
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test4) 2>&1 | grepQuiet 'check-reqs-dep1'
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test4) 2>&1 | grepQuiet 'check-reqs-dep2'
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test5)
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test6)
|
|
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test6) 2>&1 | grepQuiet '└───.*/.*-check-reqs-deps'
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test6) 2>&1 | grepQuiet 'check-reqs-dep1'
|
|
(! nix-build -o "$RESULT" check-reqs.nix -A test6) 2>&1 | grepQuiet 'check-reqs-dep2'
|
|
|
|
nix-build -o $RESULT check-reqs.nix -A test7
|
|
|
|
# ignoreSelfRefs is only true for drvs using structuredAttrs.
|
|
(! nix-build -o $RESULT check-reqs.nix -A test8)
|
|
nix-build -o $RESULT check-reqs.nix -A test9
|