From d84cd60c19179562bb8d5555cecb73e85f1181a9 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 15 Nov 2023 16:42:46 +0300 Subject: Add tests which demonstrate cases when we could potentially resolve unsatisfied dependency constraints but currently fail --- tests/common/satisfy/libbar-0.1.0.tar.gz | Bin 0 -> 406 bytes tests/common/satisfy/libbaz-2.0.0.tar.gz | Bin 0 -> 381 bytes tests/common/satisfy/libbix-1.0.0.tar.gz | Bin 0 -> 360 bytes tests/common/satisfy/libbix-2.0.0.tar.gz | Bin 0 -> 363 bytes tests/common/satisfy/libbux-1.0.0.tar.gz | Bin 0 -> 351 bytes tests/common/satisfy/libfix-1.0.0.tar.gz | Bin 0 -> 364 bytes tests/common/satisfy/libfox-1.1.0.tar.gz | Bin 0 -> 370 bytes tests/common/satisfy/libfox-2.0.0.tar.gz | Bin 0 -> 367 bytes tests/common/satisfy/t4f/libbix-1.0.0.tar.gz | 1 + tests/common/satisfy/t4f/libbix-2.0.0.tar.gz | 1 + tests/common/satisfy/t4f/libbux-1.0.0.tar.gz | 1 + tests/common/satisfy/t4f/libfix-1.0.0.tar.gz | 1 + tests/common/satisfy/t4f/libfox-1.1.0.tar.gz | 1 + tests/common/satisfy/t4f/libfox-2.0.0.tar.gz | 1 + tests/common/satisfy/t4f/repositories.manifest | 3 - tests/common/satisfy/t4i/libbar-0.1.0.tar.gz | 1 + tests/common/satisfy/t4i/libbaz-2.0.0.tar.gz | 1 + tests/common/satisfy/t4i/repositories.manifest | 1 + tests/pkg-build.testscript | 491 ++++++++++++++++++++++++- tests/pkg-build/t4i | 1 + 20 files changed, 500 insertions(+), 4 deletions(-) create mode 100644 tests/common/satisfy/libbar-0.1.0.tar.gz create mode 100644 tests/common/satisfy/libbaz-2.0.0.tar.gz create mode 100644 tests/common/satisfy/libbix-1.0.0.tar.gz create mode 100644 tests/common/satisfy/libbix-2.0.0.tar.gz create mode 100644 tests/common/satisfy/libbux-1.0.0.tar.gz create mode 100644 tests/common/satisfy/libfix-1.0.0.tar.gz create mode 100644 tests/common/satisfy/libfox-1.1.0.tar.gz create mode 100644 tests/common/satisfy/libfox-2.0.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libbix-1.0.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libbix-2.0.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libbux-1.0.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libfix-1.0.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libfox-1.1.0.tar.gz create mode 120000 tests/common/satisfy/t4f/libfox-2.0.0.tar.gz create mode 120000 tests/common/satisfy/t4i/libbar-0.1.0.tar.gz create mode 120000 tests/common/satisfy/t4i/libbaz-2.0.0.tar.gz create mode 100644 tests/common/satisfy/t4i/repositories.manifest create mode 120000 tests/pkg-build/t4i diff --git a/tests/common/satisfy/libbar-0.1.0.tar.gz b/tests/common/satisfy/libbar-0.1.0.tar.gz new file mode 100644 index 0000000..f072c11 Binary files /dev/null and b/tests/common/satisfy/libbar-0.1.0.tar.gz differ diff --git a/tests/common/satisfy/libbaz-2.0.0.tar.gz b/tests/common/satisfy/libbaz-2.0.0.tar.gz new file mode 100644 index 0000000..d539208 Binary files /dev/null and b/tests/common/satisfy/libbaz-2.0.0.tar.gz differ diff --git a/tests/common/satisfy/libbix-1.0.0.tar.gz b/tests/common/satisfy/libbix-1.0.0.tar.gz new file mode 100644 index 0000000..9dfe541 Binary files /dev/null and b/tests/common/satisfy/libbix-1.0.0.tar.gz differ diff --git a/tests/common/satisfy/libbix-2.0.0.tar.gz b/tests/common/satisfy/libbix-2.0.0.tar.gz new file mode 100644 index 0000000..ca7bd95 Binary files /dev/null and b/tests/common/satisfy/libbix-2.0.0.tar.gz differ diff --git a/tests/common/satisfy/libbux-1.0.0.tar.gz b/tests/common/satisfy/libbux-1.0.0.tar.gz new file mode 100644 index 0000000..51960f9 Binary files /dev/null and b/tests/common/satisfy/libbux-1.0.0.tar.gz differ diff --git a/tests/common/satisfy/libfix-1.0.0.tar.gz b/tests/common/satisfy/libfix-1.0.0.tar.gz new file mode 100644 index 0000000..ed2d78f Binary files /dev/null and b/tests/common/satisfy/libfix-1.0.0.tar.gz differ diff --git a/tests/common/satisfy/libfox-1.1.0.tar.gz b/tests/common/satisfy/libfox-1.1.0.tar.gz new file mode 100644 index 0000000..c626d72 Binary files /dev/null and b/tests/common/satisfy/libfox-1.1.0.tar.gz differ diff --git a/tests/common/satisfy/libfox-2.0.0.tar.gz b/tests/common/satisfy/libfox-2.0.0.tar.gz new file mode 100644 index 0000000..1297cda Binary files /dev/null and b/tests/common/satisfy/libfox-2.0.0.tar.gz differ diff --git a/tests/common/satisfy/t4f/libbix-1.0.0.tar.gz b/tests/common/satisfy/t4f/libbix-1.0.0.tar.gz new file mode 120000 index 0000000..acf87bf --- /dev/null +++ b/tests/common/satisfy/t4f/libbix-1.0.0.tar.gz @@ -0,0 +1 @@ +../libbix-1.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/libbix-2.0.0.tar.gz b/tests/common/satisfy/t4f/libbix-2.0.0.tar.gz new file mode 120000 index 0000000..26683f9 --- /dev/null +++ b/tests/common/satisfy/t4f/libbix-2.0.0.tar.gz @@ -0,0 +1 @@ +../libbix-2.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/libbux-1.0.0.tar.gz b/tests/common/satisfy/t4f/libbux-1.0.0.tar.gz new file mode 120000 index 0000000..8718789 --- /dev/null +++ b/tests/common/satisfy/t4f/libbux-1.0.0.tar.gz @@ -0,0 +1 @@ +../libbux-1.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/libfix-1.0.0.tar.gz b/tests/common/satisfy/t4f/libfix-1.0.0.tar.gz new file mode 120000 index 0000000..aad4c49 --- /dev/null +++ b/tests/common/satisfy/t4f/libfix-1.0.0.tar.gz @@ -0,0 +1 @@ +../libfix-1.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/libfox-1.1.0.tar.gz b/tests/common/satisfy/t4f/libfox-1.1.0.tar.gz new file mode 120000 index 0000000..97bb68b --- /dev/null +++ b/tests/common/satisfy/t4f/libfox-1.1.0.tar.gz @@ -0,0 +1 @@ +../libfox-1.1.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/libfox-2.0.0.tar.gz b/tests/common/satisfy/t4f/libfox-2.0.0.tar.gz new file mode 120000 index 0000000..2996971 --- /dev/null +++ b/tests/common/satisfy/t4f/libfox-2.0.0.tar.gz @@ -0,0 +1 @@ +../libfox-2.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4f/repositories.manifest b/tests/common/satisfy/t4f/repositories.manifest index 4cc7c0a..5b70556 100644 --- a/tests/common/satisfy/t4f/repositories.manifest +++ b/tests/common/satisfy/t4f/repositories.manifest @@ -1,4 +1 @@ : 1 -: -location: ../t4a -role: complement diff --git a/tests/common/satisfy/t4i/libbar-0.1.0.tar.gz b/tests/common/satisfy/t4i/libbar-0.1.0.tar.gz new file mode 120000 index 0000000..f622e36 --- /dev/null +++ b/tests/common/satisfy/t4i/libbar-0.1.0.tar.gz @@ -0,0 +1 @@ +../libbar-0.1.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4i/libbaz-2.0.0.tar.gz b/tests/common/satisfy/t4i/libbaz-2.0.0.tar.gz new file mode 120000 index 0000000..8787403 --- /dev/null +++ b/tests/common/satisfy/t4i/libbaz-2.0.0.tar.gz @@ -0,0 +1 @@ +../libbaz-2.0.0.tar.gz \ No newline at end of file diff --git a/tests/common/satisfy/t4i/repositories.manifest b/tests/common/satisfy/t4i/repositories.manifest new file mode 100644 index 0000000..5b70556 --- /dev/null +++ b/tests/common/satisfy/t4i/repositories.manifest @@ -0,0 +1 @@ +: 1 diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index 4766e2a..fe01161 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -102,7 +102,7 @@ # | |-- libfox-1.0.0.tar.gz # | `-- repositories.manifest # | -# |-- t4e +# |-- t4e -> t4a (complement repository) # | |-- libfoo-1.1.0+1.tar.gz # | `-- repositories.manifest # | @@ -114,6 +114,17 @@ # | |-- libbox-2.0.0.tar.gz -> libbax == 1.0.0 # | |-- libbax-1.0.0.tar.gz # | |-- libbax-2.0.0.tar.gz +# | |-- libbix-1.0.0.tar.gz -> libbax == 1.0.0 +# | |-- libbix-2.0.0.tar.gz -> libbax == 2.0.0 +# | |-- libbux-1.0.0.tar.gz -> libbix +# | |-- libfix-1.0.0.tar.gz -> libfox +# | |-- libfox-1.1.0.tar.gz -> libbar >= 1.0.0 +# | |-- libfox-2.0.0.tar.gz -> libbar >= 2.0.0 +# | `-- repositories.manifest +# | +# |-- t4i +# | |-- libbaz-2.0.0.tar.gz -> libbar < 2.1.0 +# | |-- libbar-0.1.0.tar.gz # | `-- repositories.manifest # | # |-- t5 @@ -497,6 +508,7 @@ posix = ($cxx.target.class != 'windows') cp -r $src/t4d $out/t4d && $rep_create $out/t4d &$out/t4d/packages.manifest cp -r $src/t4e $out/t4e && $rep_create $out/t4e &$out/t4e/packages.manifest cp -r $src/t4f $out/t4f && $rep_create $out/t4f &$out/t4f/packages.manifest + cp -r $src/t4i $out/t4i && $rep_create $out/t4i &$out/t4i/packages.manifest cp -r $src/t5 $out/t5 && $rep_create $out/t5 &$out/t5/packages.manifest cp -r $src/t6 $out/t6 && $rep_create $out/t6 &$out/t6/packages.manifest cp -r $src/t7a $out/t7a && $rep_create $out/t7a &$out/t7a/packages.manifest @@ -4003,6 +4015,483 @@ test.arguments += --sys-no-query $pkg_drop libbox libbar } } + + : constraint-resolution + : + { + +$clone_root_cfg + +$rep_add $rep/t4f && $rep_fetch + + : replace-dependent + : + : This test demonstrates a case when the dependency resolution machinery + : fails to resolve unsatisfied dependency constraints by replacing an + : unsatisfied dependent version with a satisfied one. + : + { + $clone_cfg; + + $* libfoo libfix --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/2.0.0 + trace: collect_build: add libfix/1.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfox/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/2.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: postpone failure for dependent libfox unsatisfied with dependency libbar/1.2.0 (>= 2.0.0) + trace: collect_build: pick libbar/1.2.0 over libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/2.0.0 depends on (libbar >= 2.0.0) + info: libfoo/2.0.0 depends on (libbar == 1.2.0) + info: available libbar/2.1.0 + info: available libbar/1.2.0 + info: while satisfying libfox/2.0.0 + info: while satisfying libfix/1.0.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfoo libfix ?libfox/1.1.0 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + fetched libfix/1.0.0 + unpacked libfix/1.0.0 + configured libbar/1.2.0 + configured libfoo/2.0.0 + configured libfox/1.1.0 + configured libfix/1.0.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + !libfoo configured 2.0.0 + libbar configured 1.2.0 available 2.1.0 + libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + !libfix configured 1.0.0 + libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + EOO + + $pkg_drop libfoo libfix + } + + : replace-dependent-reorder + : + : Similar to the above, but the unsatisfied dependent which needs to be + : replaced differs from the one added to the unsatisfied dependents list. + : + { + $clone_cfg; + + $* libfix libfoo --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfix/1.0.0 + trace: collect_build: add libfoo/2.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfox/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/2.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: add libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: begin libbar/2.1.0 + trace: collect_build: add libbox/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/2.0.0 of dependent libbar/2.1.0 + trace: collect_build_prerequisites: begin libbox/2.0.0 + trace: collect_build: add libbax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbax/1.0.0 of dependent libbox/2.0.0 + trace: collect_build_prerequisites: begin libbax/1.0.0 + trace: collect_build_prerequisites: end libbax/1.0.0 + trace: collect_build_prerequisites: end libbox/2.0.0 + trace: collect_build_prerequisites: end libbar/2.1.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: postpone failure for dependent libfoo unsatisfied with dependency libbar/2.1.0 (== 1.2.0) + trace: collect_build: pick libbar/2.1.0 over libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/2.0.0 depends on (libbar >= 2.0.0) + info: libfoo/2.0.0 depends on (libbar == 1.2.0) + info: available libbar/2.1.0 + info: available libbar/1.2.0 + info: while satisfying libfoo/2.0.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfix libfoo ?libfox/1.1.0 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + fetched libfix/1.0.0 + unpacked libfix/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libbar/1.2.0 + configured libfox/1.1.0 + configured libfix/1.0.0 + configured libfoo/2.0.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + !libfix configured 1.0.0 + libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + !libfoo configured 2.0.0 + libbar configured 1.2.0 available 2.1.0 + EOO + + $pkg_drop libfoo libfix + } + + : replace-dependent-to-hold + : + : Similar to the replace-dependent test, but the unsatisfied dependent + : is being built to hold rather than as a dependency. + : + { + $clone_cfg; + + $* libfoo libfox --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/2.0.0 + trace: collect_build: add libfox/2.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: postpone failure for dependent libfox unsatisfied with dependency libbar/1.2.0 (>= 2.0.0) + trace: collect_build: pick libbar/1.2.0 over libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/2.0.0 depends on (libbar >= 2.0.0) + info: libfoo/2.0.0 depends on (libbar == 1.2.0) + info: available libbar/2.1.0 + info: available libbar/1.2.0 + info: while satisfying libfox/2.0.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfoo libfox/1.1.0 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + configured libbar/1.2.0 + configured libfoo/2.0.0 + configured libfox/1.1.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + !libfoo configured 2.0.0 + libbar configured 1.2.0 available 2.1.0 + !libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + EOO + + $pkg_drop libfoo libfox + } + + : replace-dependent-to-hold-reorder + : + : Similar to the above, but the unsatisfied dependent which needs to be + : replaced differs from the one added to the unsatisfied dependents list. + : + { + $clone_cfg; + + $* libfox libfoo --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfox/2.0.0 + trace: collect_build: add libfoo/2.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: add libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: begin libbar/2.1.0 + trace: collect_build: add libbox/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/2.0.0 of dependent libbar/2.1.0 + trace: collect_build_prerequisites: begin libbox/2.0.0 + trace: collect_build: add libbax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbax/1.0.0 of dependent libbox/2.0.0 + trace: collect_build_prerequisites: begin libbax/1.0.0 + trace: collect_build_prerequisites: end libbax/1.0.0 + trace: collect_build_prerequisites: end libbox/2.0.0 + trace: collect_build_prerequisites: end libbar/2.1.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: postpone failure for dependent libfoo unsatisfied with dependency libbar/2.1.0 (== 1.2.0) + trace: collect_build: pick libbar/2.1.0 over libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/2.0.0 depends on (libbar >= 2.0.0) + info: libfoo/2.0.0 depends on (libbar == 1.2.0) + info: available libbar/2.1.0 + info: available libbar/1.2.0 + info: while satisfying libfoo/2.0.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfox/1.1.0 libfoo 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libbar/1.2.0 + configured libfox/1.1.0 + configured libfoo/2.0.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + !libfox configured !1.1.0 available 2.0.0 + libbar configured 1.2.0 available 2.1.0 + !libfoo configured 2.0.0 + libbar configured 1.2.0 available 2.1.0 + EOO + + $pkg_drop libfoo libfox + } + + : replace-dependency + : + : This test demonstrates a case when the dependency resolution machinery + : fails to resolve unsatisfied dependency constraints by replacing the + : unsatisfactory dependency versions with a satisfactory one. + : + { + $clone_cfg; + $rep_add $rep/t4i && $rep_fetch; + + $* libfox/1.1.0 libbaz --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfox/1.1.0 + trace: collect_build: add libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build: add libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/2.1.0 + trace: collect_build: add libbox/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/2.0.0 of dependent libbar/2.1.0 + trace: collect_build_prerequisites: begin libbox/2.0.0 + trace: collect_build: add libbax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbax/1.0.0 of dependent libbox/2.0.0 + trace: collect_build_prerequisites: begin libbax/1.0.0 + trace: collect_build_prerequisites: end libbax/1.0.0 + trace: collect_build_prerequisites: end libbox/2.0.0 + trace: collect_build_prerequisites: end libbar/2.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: postpone failure for dependent libbaz unsatisfied with dependency libbar/2.1.0 (< 2.1.0) + trace: collect_build: pick libbar/2.1.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.1.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/1.1.0 depends on (libbar >= 1.0.0) + command line requires (libfox == 1.1.0) + info: libbaz/2.0.0 depends on (libbar < 2.1.0) + info: available libbar/2.1.0 + info: available libbar/0.1.0 + info: while satisfying libbaz/2.0.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfox/1.1.0 libbaz ?libbar/1.2.0 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + fetched libbaz/2.0.0 + unpacked libbaz/2.0.0 + configured libbar/1.2.0 + configured libfox/1.1.0 + configured libbaz/2.0.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured !1.2.0 available 2.1.0 + !libfox configured !1.1.0 available 2.0.0 + libbar configured !1.2.0 available 2.1.0 + !libbaz configured 2.0.0 + libbar configured !1.2.0 available 2.1.0 + EOO + + $pkg_drop libfox libbaz + } + + : replace-dependency-reorder + : + : Similar to the above, but the order of the dependents on the command + : line is swapped. + : + { + $clone_cfg; + $rep_add $rep/t4i && $rep_fetch; + + $* libbaz libfox/1.1.0 --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/2.0.0 + trace: collect_build: add libfox/1.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: begin libbar/0.1.0 + trace: collect_build_prerequisites: end libbar/0.1.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build: postpone failure for dependent libfox unsatisfied with dependency libbar/0.1.0 (>= 1.0.0) + trace: collect_build: pick libbar/0.1.0 over libbar/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: execute_plan: simulate: yes + %.* + error: unable to satisfy constraints on package libbar + info: libfox/1.1.0 depends on (libbar >= 1.0.0) + command line requires (libfox == 1.1.0) + info: libbaz/2.0.0 depends on (libbar < 2.1.0) + info: available libbar/2.1.0 + info: available libbar/0.1.0 + info: while satisfying libfox/1.1.0 + info: explicitly specify libbar version to manually satisfy both constraints + %.* + EOE + + $* libfox/1.1.0 libbaz ?libbar/1.2.0 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfox/1.1.0 + unpacked libfox/1.1.0 + fetched libbaz/2.0.0 + unpacked libbaz/2.0.0 + configured libbar/1.2.0 + configured libfox/1.1.0 + configured libbaz/2.0.0 + EOE + + $pkg_status -ar >>EOO; + libbar configured !1.2.0 available 2.1.0 + !libfox configured !1.1.0 available 2.0.0 + libbar configured !1.2.0 available 2.1.0 + !libbaz configured 2.0.0 + libbar configured !1.2.0 available 2.1.0 + EOO + + $pkg_drop libfox libbaz + } + + : unsatisfied-dependent + : + : This test demonstrates a case when the dependency resolution machinery + : fails to complete successfully as noop. + : + : Note that there is no version constraints are specified on the command + : line, the request is to upgrade all packages to the latest possible + : versions, and thus noop in this case would an appropriate outcome. + : + { + $clone_cfg; + + $* libbox ?libbix/1.0.0 libbux 2>!; + + $pkg_status -ar >>EOO; + libbax configured 1.0.0 available 2.0.0 + !libbox configured 2.0.0 + libbax configured 1.0.0 available 2.0.0 + libbix configured !1.0.0 available 2.0.0 + libbax configured 1.0.0 available 2.0.0 + !libbux configured 1.0.0 + libbix configured !1.0.0 available 2.0.0 + libbax configured 1.0.0 available 2.0.0 + EOO + + $* --upgrade --recursive --verbose 5 2>>~%EOE% != 0; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbox/2.0.0 + trace: collect_build: add libbux/1.0.0 + trace: collect_build_prerequisites: skip configured libbox/2.0.0 + trace: collect_build_prerequisites: skip configured libbux/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbix/1.0.0: update to libbix/2.0.0 + %.* + trace: pkg_build: refine package collection/plan execution + trace: collect_build: add libbix/2.0.0 + trace: collect_build_prerequisites: pre-reeval libbux/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated libbux/1.0.0: end reached + trace: collect_build_prerequisites: begin libbix/2.0.0 + trace: collect_build: add libbax/2.0.0 + info: package libbix dependency on (libbax == 2.0.0) is forcing upgrade of libbax/1.0.0 to 2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbax/2.0.0 of dependent libbix/2.0.0 + trace: collect_build_prerequisites: skip unsatisfied existing dependent libbox of dependency libbax/2.0.0 due to constraint (libbax == 1.0.0) + trace: collect_build_prerequisites: skip being built existing dependent libbix of dependency libbax + trace: collect_build_prerequisites: begin libbax/2.0.0 + trace: collect_build_prerequisites: end libbax/2.0.0 + trace: collect_build_prerequisites: end libbix/2.0.0 + trace: collect_dependents: postpone failure for existing dependent libbox unsatisfied with dependency libbax/2.0.0 (== 1.0.0) + trace: execute_plan: simulate: yes + %.* + error: unable to upgrade package libbax/1.0.0 to 2.0.0 + info: because configured package libbox/2.0.0 depends on (libbax == 1.0.0) + info: package libbax/2.0.0 required by + libbix/2.0.0 (libbax == 2.0.0) + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package libbox + info: or explicitly specify package libbax version to manually satisfy these constraints + %.* + EOE + + $pkg_drop libbox libbux + } + } } : upgrade diff --git a/tests/pkg-build/t4i b/tests/pkg-build/t4i new file mode 120000 index 0000000..41e500e --- /dev/null +++ b/tests/pkg-build/t4i @@ -0,0 +1 @@ +../common/satisfy/t4i \ No newline at end of file -- cgit v1.1