diff options
author | Ludovic Courtès <ludo@gnu.org> | 2023-06-05 23:41:37 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-06-14 22:54:30 +0200 |
commit | e4259d4e9e3251e4c4b45d1cce4008ac32b504c8 (patch) | |
tree | 7baa5cee009351303353cdd2b4b4183fa2501259 /tests | |
parent | 35c27ec5eedfe8ea4fc653bef0bf213c1a58e7a2 (diff) | |
download | guix-e4259d4e9e3251e4c4b45d1cce4008ac32b504c8.tar guix-e4259d4e9e3251e4c4b45d1cce4008ac32b504c8.tar.gz |
packages: 'package-transitive-supported-systems' detects cycles.
With this change, commands such as 'guix build' or 'guix package' report
obvious package-level cycles upfront. Derivation-level cycles are not
detected.
* guix/packages.scm (&package-cyclic-dependency-error): New condition
type.
(package-transitive-supported-systems): Define 'visited', check it, and
parameterize it.
* guix/ui.scm (call-with-error-handling): Handle
'&package-cyclic-dependency-error'.
* tests/packages.scm ("package-transitive-supported-systems detects
cycles"): Add test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/packages.scm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/packages.scm b/tests/packages.scm index 5e8eac99dc..2b7ab01f7d 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -368,6 +368,23 @@ (package-transitive-supported-systems d) (package-transitive-supported-systems e)))) +(test-equal "package-transitive-supported-systems detects cycles" + '("c" "a" "b" "c") + (letrec* ((a (dummy-package "a" + (build-system trivial-build-system) + (native-inputs (list c)))) + (b (dummy-package "b" + (build-system trivial-build-system) + (inputs (list a)))) + (c (dummy-package "c" + (build-system trivial-build-system) + (inputs (list b))))) + (guard (c ((package-cyclic-dependency-error? c) + (map package-name + (cons (package-error-package c) + (package-error-dependency-cycle c))))) + (package-transitive-supported-systems c)))) + (test-assert "package-development-inputs" ;; Note: Due to propagated inputs, 'package-development-inputs' returns a ;; couple more inputs, such as 'linux-libre-headers'. |