diff options
Diffstat (limited to 'tests/pkg-build.testscript')
-rw-r--r-- | tests/pkg-build.testscript | 19664 |
1 files changed, 18450 insertions, 1214 deletions
diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index e158130..9d19846 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -75,6 +75,7 @@ # | # |-- t2 # | |-- libbar-1.0.0.tar.gz -> libfoo +# | |-- libfoo-0.1.0.tar.gz # | |-- libfoo-1.0.0.tar.gz # | `-- repositories.manifest # | @@ -101,12 +102,67 @@ # | |-- libfox-1.0.0.tar.gz # | `-- repositories.manifest # | -# |-- t4e +# |-- t4e -> t4a (complement repository) # | |-- libfoo-1.1.0+1.tar.gz # | `-- repositories.manifest # | +# |-- t4f +# | |-- libfoo-2.0.0.tar.gz -> libbar == 1.2.0 +# | |-- libbar-1.2.0.tar.gz +# | |-- libbar-2.1.0.tar.gz -> libbox +# | |-- libbox-1.0.0.tar.gz -> libbax +# | |-- 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 +# | +# |-- t4j +# | |-- libbar-0.1.0.tar.gz +# | |-- libbar-1.2.0.tar.gz +# | |-- libfoo-3.0.0.tar.gz -> libbar +# | |-- libfox-0.0.1.tar.gz +# | |-- libfox-2.1.0.tar.gz -> libbar, libbaz == 1.2.0 +# | |-- libfox-3.0.0.tar.gz -> libbar == 0.1.0, libbaz == 1.2.0 +# | |-- libbaz-1.2.0.tar.gz -> libbar == 1.2.0 +# | |-- libbaz-2.1.0.tar.gz +# | `-- repositories.manifest +# | +# |-- t4k +# | |-- libbar-1.0.0.tar.gz -> libfoo == 1.0.0 +# | |-- libbaz-1.0.0.tar.gz -> libfox +# | |-- libfoo-1.0.0.tar.gz -> libfix == 1.0.0 +# | |-- libfoo-2.0.0.tar.gz -> libfix == 2.0.0 +# | |-- libfox-1.0.0.tar.gz -> libfux == 1.0.0 +# | |-- libfox-1.2.0.tar.gz -> libfux == 1.0.0, libfex >= 2.0.0 +# | |-- libfox-2.0.0.tar.gz -> libfux == 2.0.0 +# | |-- libfix-1.0.0.tar.gz -> libfax == 1.0.0 +# | |-- libfix-2.0.0.tar.gz -> libfax == 2.0.0 +# | |-- libfux-1.0.0.tar.gz -> libfaz == 1.0.0, libfex == 1.0.0 +# | |-- libfux-2.0.0.tar.gz -> libfaz == 2.0.0, libfex == 2.0.0 +# | |-- libfex-1.0.0.tar.gz -> libfaz == 1.0.0 +# | |-- libfex-2.0.0.tar.gz -> libfaz == 2.0.0 +# | |-- libfax-1.0.0.tar.gz -> libfuz == 1.0.0 +# | |-- libfax-2.0.0.tar.gz -> libfuz == 2.0.0 +# | |-- libfaz-1.0.0.tar.gz -> libfuz == 1.0.0 +# | |-- libfaz-2.0.0.tar.gz -> libfuz == 2.0.0 +# | |-- libfuz-1.0.0.tar.gz +# | |-- libfuz-2.0.0.tar.gz +# | `-- repositories.manifest +# | # |-- t5 # | |-- libbar-1.2.0.tar.gz +# | |-- libbox-1.2.0.tar.gz # | `-- repositories.manifest # | # |-- t6 @@ -145,17 +201,46 @@ # | |-- libbox-0.1.0.tar.gz # | |-- libbox-0.1.1.tar.gz # | |-- libbox-1.0.0.tar.gz -# | |-- foo-1.0.0.tar.gz -> {libbar libbaz} ^1.0.0 -# | |-- fox-1.0.0.tar.gz -> libbar ^1.0.0 | libbaz ^1.0.0 -# | |-- fix-1.0.0.tar.gz -> libbaz ^1.0.0 | libbar ^1.0.0 +# | |-- libfoo-1.0.0.tar.gz +# | |-- libfoo-2.0.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> libbar +# | |-- baz-1.0.0.tar.gz -> libbaz +# | |-- bax-0.1.0.tar.gz -> libbox config.bax.backend=libbox +# | |-- bax-1.0.0.tar.gz -> libbox >= 0.1.1 config.bax.backend=libbox +# | |-- bix-0.1.0.tar.gz +# | |-- bix-1.0.0.tar.gz -> bax == 0.1.0 +# | |-- box-1.0.0.tar.gz -> libbiz ^1.0.0 config.box.backend=libbiz | +# | | libbox >= 0.1.1 config.box.backend=libbox, +# | | libbaz +# | |-- bux-1.0.0.tar.gz -> bix +# | |-- dax-1.0.0.tar.gz -> libbar ? ($config.dax.extras) +# | | libbaz +# | |-- dix-0.1.0.tar.gz +# | |-- dix-1.0.0.tar.gz -> dax require {config.dax.extras=true} +# | |-- dox-1.0.0.tar.gz -> dax +# | |-- dux-1.0.0.tar.gz -> dix # | |-- fax-1.0.0.tar.gz -> libbar ^1.0.0 ? ($cxx.target.class == 'windows') config.fax.backend=libbar | # | | libbaz ^1.0.0 ? ($cxx.target.class != 'windows') config.fax.backend=libbaz, # | | libbiz ? ($config.fax.libbiz) config.fax.extras='[b\i$z]', # | | libbox ? ($config.fax.libbox && $config.fax.backend == libbaz && $config.fax.extras == '[b\i$z]') -# | |-- fux -> libbiz ? (!$config.fux.libbiz_old) | libbiz ^0.1.0 ? ($config.fux.libbiz_old) -# | |-- box -> libbiz ^1.0.0 config.box.backend=libbiz | -# | | libbox >= 0.1.1 config.box.backend=libbox, -# | | libbaz +# | |-- fix-1.0.0.tar.gz -> libbaz ^1.0.0 | libbar ^1.0.0 +# | |-- foo-1.0.0.tar.gz -> {libbar libbaz} ^1.0.0 +# | |-- fox-1.0.0.tar.gz -> libbar ^1.0.0 | libbaz ^1.0.0 +# | |-- fux-1.0.0.tar.gz -> libbiz ? (!$config.fux.libbiz_old) | libbiz ^0.1.0 ? ($config.fux.libbiz_old) +# | |-- fuz-1.0.0.tar.gz -> libfoo +# | |-- foz-1.0.0.tar.gz -> fuz +# | |-- tax-1.0.0.tar.gz -> libfoo == 1.0.0 | libfoo == 2.0.0 +# | |-- tex-1.0.0.tar.gz -> libfoo prefer{} accept(true) reflect {...} +# | |-- tix-1.0.0.tar.gz -> libfoo >= 2.0.0 reflect {...} | libfoo >= 1.0.0 reflect {...} +# | |-- tox-1.0.0.tar.gz -> libfoo >= 2.0.0 prefer{} accept(true) reflect {...} | libfoo >= 1.0.0 reflect {...} +# | |-- tpx-1.0.0.tar.gz -> libfoo >= 2.0.0 prefer{...} accept(true) reflect {...} | libfoo >= 1.0.0 prefer{...} accept(true) reflect {...} +# | |-- tux-1.0.0.tar.gz -> libfoo prefer{config.libfoo.protocol = "1"} accept(true), +# | | libbox ? (config.libfoo.protocol == "1") +# | |-- twx-1.0.0.tar.gz -> libbiz, +# | | libfoo prefer{config.libfoo.protocol = "1"} accept(true), +# | | libbox ? (config.libfoo.protocol == "1") +# | |-- tvx-1.0.0.tar.gz -> libfoo >= 2.0.0 reflect {...} | libfoo >= 1.0.0 reflect {...}, +# | | libfox prefer{config.libfox.level = $config.tvx.reflect} accept(true) # | `-- repositories.manifest # | # |-- t9 @@ -166,11 +251,18 @@ # | `-- repositories.manifest # | # |-- t10 -# | |-- libfoo-bar-1.0.0.tar.gz -> libfoo-tests -# | |-- libfoo-baz-1.0.0.tar.gz -> libfoo-tests +# | |-- libfoo-bar-1.0.0.tar.gz (tests) -> libfoo-tests +# | |-- libfoo-baz-1.0.0.tar.gz (tests) -> libfoo-tests # | |-- libfoo-tests-1.0.0.tar.gz +# | |-- libbar-foo-1.0.0.tar.gz (tests) -> libbar-tests +# | |-- libbar-baz-1.0.0.tar.gz (tests) -> libbar-tests +# | |-- libbar-tests-1.0.0.tar.gz -> ? libbar-foo, ? libbar-baz # | `-- repositories.manifest # | +# | NOTE: remember to update +# | pkg-build/dependency/config-negotiation-order/repo-packages/* +# | tests if adding any packages to the below repository. +# | # |-- t11a # | |-- libfoo-0.1.0.tar.gz # | |-- libfoo-1.0.0.tar.gz @@ -180,10 +272,24 @@ # | |-- libbaz-1.0.0.tar.gz # | |-- libbox-0.1.0.tar.gz # | |-- libbox-1.0.0.tar.gz -# | |-- foo-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true}} +# | |-- libbiz-0.1.0.tar.gz +# | |-- libbiz-1.0.0.tar.gz -> libbar +# | |-- foo-0.1.0.tar.gz -> libfoo {require {config.libfoo.extras=true}} +# | |-- foo-0.2.0.tar.gz -> libfoo {require {config.libfoo.extras=true}} | libbar +# | |-- foo-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true} reflect {...}} +# | |-- fox-0.1.0.tar.gz -> libfoo {prefer {config.libfoo.extras=true} accept (false)} | +# | | libbar +# | |-- fox-0.2.0.tar.gz -> libfoo {prefer {config.libfoo.extras=false} accept (!$config.libfoo.extras)} | +# | | libfoo {prefer {config.libfoo.extras=true} accept (true)} | +# | | libbar {require {config.libbar.extras=true}} # | |-- fox-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true}} +# | |-- fux-0.1.0.tar.gz -> libfoo ? ($config.fux.extras=true) +# | |-- fux-0.1.1.tar.gz -> libfoo ? ($config.fux.extras=true) +# | |-- fux-0.2.0.tar.gz -> libfoo {enable($config.fux.extras=true) require {config.libfoo.extras=true}} # | |-- fux-1.0.0.tar.gz -> libfoo +# | |-- fix-0.1.0.tar.gz -> foo == 0.1.0 # | |-- fix-1.0.0.tar.gz -> foo {require {config.foo.extras=true}} +# | |-- fex-0.1.0.tar.gz -> fux {require {config.fux.extras=true}} # | |-- fex-1.0.0.tar.gz -> foo, libfoo {require {config.libfoo.extras=true}} # | |-- bar-0.1.0.tar.gz -> libbar == 0.1.0 {require {config.libbar.extras=true}} # | |-- bar-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}} @@ -195,18 +301,22 @@ # | |-- bat-1.0.0.tar.gz -> libbaz {require {config.libbaz.extras=true}} # | |-- bas-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, # | | bus {require {config.bus.extras=true}} -# | |-- bus-1.0.0.tar.gz -> libaz {require {config.libbox.extras=true}}, +# | |-- bus-0.1.0.tar.gz -> foo {require {config.foo.extras=true} reflect {...}} +# | |-- bus-1.0.0.tar.gz -> libaz {require {config.libbaz.extras=true}}, # | | foo {require {config.foo.extras=true}} -# | |-- box-0.1.0.tar.gz -> libbox {require {config.libbox.extras=true}} +# | |-- box-0.1.0.tar.gz -> libbox == 0.1.0 {require {config.libbox.extras=true}} +# | |-- box-0.2.0.tar.gz -> libbox {require {config.libbox.extras=true}} # | |-- box-1.0.0.tar.gz -> {libbar libfoo} {require {config.libbar.extras=true config.libfoo.extras=true}} | # | | libbox -# | |-- bax-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true}}, +# | |-- bax-0.1.0.tar.gz -> {libbox libbar} {require {config.libbox.extras=true}} +# | |-- bax-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true} reflect {...}}, # | | {libbox libbar} {require {config.libbox.extras=true config.libbar.extras=true}} # | |-- bux-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}} # | |-- bix-1.0.0.tar.gz -> {libbar bar} {require {config.libbar.extras=true config.bar.extras=true}}, # | | bux # | |-- bex-1.0.0.tar.gz -> libbar # | |-- boo-1.0.0.tar.gz -> libbar | libfoo {require {config.libfoo.extras=true}} | libbox +# | |-- biz-0.1.0.tar.gz -> libbiz == 0.1.0 # | |-- biz-1.0.0.tar.gz -> boo {require {config.boo.extras=true}} # | |-- buz-1.0.0.tar.gz -> bux {require {config.bux.extras=true}} # | |-- buc-1.0.0.tar.gz -> libfoo {require {config.libfoo.extras=true}}, @@ -219,11 +329,11 @@ # | |-- tex-0.3.0.tar.gz -> libbar {require {config.libbar.extras=true}}, # | | libfoo {require {config.libfoo.extras=true}} # | |-- tex-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, -# | | libfoo {require {config.libfoo.extras=true}} +# | | libfoo {require {config.libfoo.extras=true} reflect {...}} # | |-- tix-0.1.0.tar.gz # | |-- tix-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, # | | tex {require {config.tex.extras=true}} -# | |-- tiz-1.0.0.tar.gz -> tex {require {config.tex.extras=true}}, +# | |-- tiz-1.0.0.tar.gz -> tex {require {config.tex.extras=true}, reflect {...}}, # | | libbar {require {config.libbar.extras=true}} # | |-- toz-0.1.0.tar.gz # | |-- toz-0.2.0.tar.gz -> libfoo {require {config.libfoo.extras=true}}, @@ -231,11 +341,18 @@ # | |-- toz-1.0.0.tar.gz -> libbaz {require {config.libbaz.extras=true}}, # | | libfoo {require {config.libfoo.extras=true}}, # | | libbar {require {config.libbar.extras=true}} +# | |-- tez-0.1.0.tar.gz -> libbox {require {config.libbox.extras=true}}, +# | | toz == 0.1.0 {require {config.toz.extras=true}} # | |-- tez-1.0.0.tar.gz -> libbox {require {config.libbox.extras=true}}, # | | toz == 0.1.0 {require {config.toz.extras=true}}, # | | libbar {require {config.libbar.extras=true}} +# | |-- tuz-1.0.0.tar.gz -> toz {require {config.toz.extras=true}} # | |-- tux-1.0.0.tar.gz -> libbox {require {config.libbox.extras=true}}, # | | tix == 0.1.0 +# | |-- tvz-0.1.0.tar.gz -> toz == 0.2.0 {require {config.toz.extras=true}}, +# | | bax, +# | | libfoo {require {config.libfoo.network=true}} +# | |-- tvz-1.0.0.tar.gz -> toz == 0.2.0 {require {config.toz.extras=true}} # | |-- dex-1.0.0.tar.gz -> bar {require {config.bar.extras=true}}, # | | libfoo {require {config.libfoo.extras=true}} # | |-- dix-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, @@ -252,7 +369,7 @@ # | |-- libbar-0.1.0.tar.gz -> libbaz # | `-- repositories.manifest # | -# |-- t12b -> t12b (prerequisite repository) +# |-- t12b -> t12a (prerequisite repository) # | |-- libbaz-0.1.0.tar.gz # | |-- libbar-1.0.0.tar.gz -> libbaz == 0.1.0 # | |-- foo-0.1.0.tar.gz @@ -267,6 +384,7 @@ # | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} # | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} # | |-- biz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- box-1.0.0.tar.gz -> liba {prefer {} accept (true) reflect {...}} # | `-- repositories.manifest # | # |-- t13b @@ -278,14 +396,14 @@ # | # |-- t13c # | |-- liba-0.1.0.tar.gz -# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)} +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}} # | |-- baz-1.0.0.tar.gz -> liba {require {...}} # | `-- repositories.manifest # | # |-- t13d # | |-- liba-0.1.0.tar.gz # | |-- libb-0.1.0.tar.gz -# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)}, +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}}, # | | libb ? (...) # | |-- baz-1.0.0.tar.gz -> bar, liba {require {...}} # | `-- repositories.manifest @@ -308,14 +426,14 @@ # |-- t13g # | |-- liba-0.1.0.tar.gz # | |-- libb-0.1.0.tar.gz -# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)}, -# | | libb {prefer {...} accept (...) reflect (...)} -# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)}, +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}}, +# | | libb {prefer {...} accept (...) reflect {...}} +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}}, # | | libb ? (...) -# | |-- biz-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)}, -# | | libb {prefer {...} accept (...) reflect (...)} -# | |-- box-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect (...)}, -# | | libb {prefer {...} accept (...) reflect (...)} +# | |-- biz-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}}, +# | | libb {prefer {...} accept (...) reflect {...}} +# | |-- box-1.0.0.tar.gz -> liba {prefer {...} accept (...) reflect {...}}, +# | | libb {prefer {...} accept (...) reflect {...}} # | `-- repositories.manifest # | # |-- t13h @@ -326,7 +444,7 @@ # | # |-- t13i # | |-- liba-0.1.0.tar.gz -# | |-- bar-1.0.0.tar.gz -> liba {require {...} reflect (...)} +# | |-- bar-1.0.0.tar.gz -> liba {require {...} reflect {...}} # | `-- repositories.manifest # | # |-- t13j @@ -376,6 +494,34 @@ # | |-- bix-1.0.0.tar.gz -> bar {prefer {...} accept (...)} # | `-- repositories.manifest # | +# |-- t14a +# | |-- libfoo-1.0.0.tar.gz +# | `-- repositories.manifest +# | +# |-- t14b +# | |-- libfoo-1.1.0.tar.gz +# | `-- repositories.manifest +# | +# |-- t14c +# | |-- libfoo-1.1.0+1.tar.gz +# | `-- repositories.manifest +# | +# |-- t14d +# | |-- libfoo-1.1.0+2.tar.gz +# | `-- repositories.manifest +# | +# |-- t14e +# | |-- libfoo-1.1.0+3.tar.gz +# | `-- repositories.manifest +# | +# |-- t14f +# | |-- libfoo-1.1.1.tar.gz +# | `-- repositories.manifest +# | +# |-- t14i +# | |-- libfoo-1.2.0.tar.gz +# | `-- repositories.manifest +# | # `-- git # |-- libbar.git -> style-basic.git (prerequisite repository) # |-- libbaz.git @@ -400,6 +546,10 @@ posix = ($cxx.target.class != 'windows') cp -r $src/t4c $out/t4c && $rep_create $out/t4c &$out/t4c/packages.manifest 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/t4j $out/t4j && $rep_create $out/t4j &$out/t4j/packages.manifest + cp -r $src/t4k $out/t4k && $rep_create $out/t4k &$out/t4k/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 @@ -425,6 +575,14 @@ posix = ($cxx.target.class != 'windows') cp -r $src/t13m $out/t13m && $rep_create $out/t13m &$out/t13m/packages.manifest cp -r $src/t13n $out/t13n && $rep_create $out/t13n &$out/t13n/packages.manifest cp -r $src/t13o $out/t13o && $rep_create $out/t13o &$out/t13o/packages.manifest + cp -r $src/t14a $out/t14a && $rep_create $out/t14a &$out/t14a/packages.manifest + cp -r $src/t14b $out/t14b && $rep_create $out/t14b &$out/t14b/packages.manifest + cp -r $src/t14c $out/t14c && $rep_create $out/t14c &$out/t14c/packages.manifest + cp -r $src/t14d $out/t14d && $rep_create $out/t14d &$out/t14d/packages.manifest + cp -r $src/t14e $out/t14e && $rep_create $out/t14e &$out/t14e/packages.manifest + cp -r $src/t14f $out/t14f && $rep_create $out/t14f &$out/t14f/packages.manifest + cp -r $src/t14i $out/t14i && $rep_create $out/t14i &$out/t14i/packages.manifest + cp -r $src/t15 $out/t15 && $rep_create $out/t15 &$out/t15/packages.manifest --ignore-unknown # Create git repositories. # @@ -433,11 +591,13 @@ posix = ($cxx.target.class != 'windows') $git_extract $src/git/libbaz.tar &$out_git/state1/*** end -config_cxx = config.cxx=$quote($recall($cxx.path) $cxx.config.mode, true) +config_cxx = [cmdline] config.cxx=$quote($recall($cxx.path) $cxx.config.mode, true) + +tar = [cmdline] ($posix ? tar : bsdtar) cfg_create += 2>! cfg_link += 2>! -pkg_configure += -d cfg $config_cxx 2>! +pkg_configure += -d cfg 2>! pkg_disfigure += -d cfg pkg_drop += -d cfg --yes 2>! pkg_fetch += -d cfg 2>! @@ -454,6 +614,10 @@ rep_list += -d cfg # test.options += --no-progress +# Disable the use of the system package manager. +# +test.arguments += --sys-no-query + : libfoo : : Test building different versions of libfoo. @@ -535,6 +699,41 @@ test.options += --no-progress info: use 'bpkg rep-add' to add a repository EOE + : mask-repository-not-found + : + $clone_root_cfg; + $* --mask-repository 'https://example.com/1' libfoo 2>>EOE != 0 + error: repository 'https://example.com/1' cannot be masked: not found + EOE + + : mask-repository-empty + : + $clone_root_cfg; + $* --mask-repository '' libfoo 2>>EOE != 0 + error: repository '' cannot be masked: invalid repository location: empty URL + EOE + + : mask-repository-uuid-db-not-found + : + $clone_root_cfg; + $* --mask-repository-uuid '00000000-0000-0000-0000-123456789012=repo' libfoo 2>>/EOE != 0 + error: configuration repository '00000000-0000-0000-0000-123456789012=repo' cannot be masked: no configuration with uuid 00000000-0000-0000-0000-123456789012 is linked with cfg/ + EOE + + : mask-repository-uuid-empty + : + $clone_root_cfg; + $* --mask-repository-uuid "$cfg_uuid=" libfoo 2>>EOE != 0 + error: configuration repository '00000000-0000-0000-0000-000000000001=' cannot be masked: invalid repository location '': empty URL + EOE + + : mask-repository-uuid-not-found + : + $clone_root_cfg; + $* --mask-repository-uuid "$cfg_uuid=https://example.com/1" libfoo 2>>EOE != 0 + error: configuration repository '00000000-0000-0000-0000-000000000001=https://example.com/1' cannot be masked: repository location 'https://example.com/1' not found in configuration 00000000-0000-0000-0000-000000000001 + EOE + : archive : $clone_root_cfg; @@ -1056,38 +1255,146 @@ test.options += --no-progress new libbaz/1.1.0 EOO - : unable-satisfy + : libbaz-unable-satisfy : - $clone_cfg; - $* libfoo/1.0.0 libbaz 2>>EOE != 0 - error: unable to satisfy constraints on package libfoo - info: command line depends on (libfoo == 1.0.0) - info: libbar depends on (libfoo == 1.1.0) - info: available libfoo/1.0.0 - info: available libfoo/1.1.0 - info: explicitly specify libfoo version to manually satisfy both constraints - info: while satisfying libbar/1.1.0 - info: while satisfying libbaz/1.1.0 - EOE + { + +$clone_cfg - : unable-satisfy-config - : - : As above but with a linked configuration. + : basic + : + { + $clone_cfg; + + $* libfoo/1.0.0 libbaz 2>>EOE != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: while satisfying libbaz/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unable-satisfy-reorder + : + : As above but the packages are specified in a different order on the + : command line. + : + { + $clone_cfg; + + $* libbaz libfoo/1.0.0 2>>EOE != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: while satisfying libbaz/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unable-satisfy-dependency + : + : As above but specify libfoo as a dependency. + : + { + $clone_cfg; + + $* libbaz ?libfoo/1.0.0 2>>EOE != 0 + error: unable to satisfy constraints on package libfoo + info: libbaz/1.1.0 depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: while satisfying libbaz/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unable-satisfy-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + $rep_add -d cfg2 $rep/t4c && $rep_fetch -d cfg2; + $* libbaz ?libbar +{ --config-id 1 } libfoo/1.0.0 +{ --config-id 1 } 2>>~%EOE% != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + % info: libbar/1.1.0 \[cfg2.\] depends on \(libfoo == 1.1.0\)% + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + % info: while satisfying libbar/1.1.0 \[cfg2.\]% + info: while satisfying libbaz/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + } + + : libbar-unable-satisfy : - $clone_cfg; - $cfg_create -d cfg2 &cfg2/***; - $cfg_link -d cfg cfg2; - $rep_add -d cfg2 $rep/t4c && $rep_fetch -d cfg2; - $* libbaz ?libbar +{ --config-id 1 } libfoo/1.0.0 +{ --config-id 1 } 2>>~%EOE% != 0 - error: unable to satisfy constraints on package libfoo - info: command line depends on (libfoo == 1.0.0) - % info: libbar \[cfg2.\] depends on \(libfoo == 1.1.0\)% - info: available libfoo/1.0.0 - info: available libfoo/1.1.0 - info: explicitly specify libfoo version to manually satisfy both constraints - %info: while satisfying libbar/1.1.0 \[cfg2.\]% - info: while satisfying libbaz/1.1.0 - EOE + { + +$clone_cfg + +$rep_add $rep/t4b && $rep_fetch + + : basic + : + { + $clone_cfg; + + $* libfoo/1.0.0 libbar 2>>EOE != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unable-satisfy-reorder + : + : As above but the packages are specified in a different order on the + : command line. + : + { + $clone_cfg; + + $* libbar libfoo/1.0.0 2>>EOE != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unable-satisfy-dependency + : + : Similar to the above, but specify libfoo as a dependency. + : + { + $clone_cfg; + + # Add libbaz, so that libfoo package is available from its dependents + # (libbaz) repositories. + # + $* libbar ?libfoo/1.0.0 libbaz 2>>EOE != 0 + error: package libfoo doesn't satisfy its dependents + info: libfoo/1.0.0 doesn't satisfy libbar/1.1.0 + EOE + } + } : not-available : @@ -1144,8 +1451,9 @@ test.options += --no-progress : { $clone_cfg; - $pkg_fetch libfoo/1.1.0 && $pkg_unpack libfoo && $pkg_configure libfoo; - $pkg_fetch libbar/1.1.0 && $pkg_unpack libbar && $pkg_configure libbar; + + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + $pkg_build libfoo/1.1.0 libbar/1.1.0 -d cfg 2>!; $* libfoo-1.2.0.tar.gz 2>>EOE != 0; error: unknown package libfoo-1.2.0.tar.gz @@ -1153,8 +1461,10 @@ test.options += --no-progress $* libfoo/1.0.0 2>>EOE != 0; error: unable to downgrade package libfoo/1.1.0 to 1.0.0 - info: because package libbar depends on (libfoo == 1.1.0) - info: explicitly request up/downgrade of package libbar + info: because configured package libbar/1.1.0 depends on (libfoo == 1.1.0) + info: re-run with -v for additional dependency information + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package libbar info: or explicitly specify package libfoo version to manually satisfy these constraints EOE @@ -1174,10 +1484,11 @@ test.options += --no-progress { $clone_cfg; $cfg_create -d cfg2 &cfg2/***; - $rep_add -d cfg2 $rep/t4c && $rep_fetch -d cfg2; + $rep_add -d cfg2 $rep/t4a $rep/t4b $rep/t4c && $rep_fetch -d cfg2; $cfg_link -d cfg2 cfg; - $pkg_fetch libfoo/1.1.0 && $pkg_unpack libfoo && $pkg_configure libfoo; - $pkg_fetch libbar/1.1.0 && $pkg_unpack libbar && $pkg_configure libbar; + + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + $pkg_build libfoo/1.1.0 libbar/1.1.0 -d cfg 2>!; $* libfoo-1.2.0.tar.gz 2>>EOE != 0; error: unknown package libfoo-1.2.0.tar.gz @@ -1187,8 +1498,10 @@ test.options += --no-progress $* libfoo/1.0.0 +{ --config-id 1 } 2>>~%EOE% != 0; %error: unable to downgrade package libfoo/1.1.0 \[cfg.\] to 1.0.0% - % info: because package libbar \[cfg.\] depends on \(libfoo == 1.1.0\)% - info: explicitly request up/downgrade of package libbar + % info: because configured package libbar/1.1.0 \[cfg.\] depends on \(libfoo == 1.1.0\)% + info: re-run with -v for additional dependency information + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package libbar info: or explicitly specify package libfoo version to manually satisfy these constraints EOE @@ -1202,6 +1515,49 @@ test.options += --no-progress $pkg_disfigure libfoo 2>'disfigured libfoo/1.1.0'; $pkg_purge libfoo 2>'purged libfoo/1.1.0' } + + : able-downgrade + : + : Similar to the above unable-downgrade, but this time libfoo and libbar + : are configured manually and so are not held. Thus, libfoo downgrades + : successfully since libbar is just dropped having no dependents. + : + { + $clone_cfg; + + $pkg_fetch libfoo/1.1.0 && $pkg_unpack libfoo && $pkg_configure libfoo; + $pkg_fetch libbar/1.1.0 && $pkg_unpack libbar && $pkg_configure libbar; + + $* libfoo/1.0.0 >>EOO; + downgrade libfoo/1.0.0 + drop libbar/1.1.0 (unused) + EOO + + $pkg_drop libbar libfoo + } + + : able-downgrade-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $rep_add -d cfg2 $rep/t4c && $rep_fetch -d cfg2; + $cfg_link -d cfg2 cfg; + + $pkg_fetch libfoo/1.1.0 && $pkg_unpack libfoo && $pkg_configure libfoo; + $pkg_fetch libbar/1.1.0 && $pkg_unpack libbar && $pkg_configure libbar; + + test.arguments = $regex.apply($test.arguments, cfg, cfg2); + + $* libfoo/1.0.0 +{ --config-id 1 } >>~%EOO%; + %downgrade libfoo/1.0.0 \[cfg.\]% + %drop libbar/1.1.0 \[cfg.\] \(unused\)% + EOO + + $pkg_drop libbar libfoo + } } : dependent-reconfiguration @@ -1483,7 +1839,6 @@ test.options += --no-progress $pkg_status libfoo >'!libfoo configured 1.0.0 available [1.1.0]'; $* libbaz 2>>~%EOE%; - warning: package libbar dependency on (libfoo == 1.1.0) is forcing upgrade of libfoo/1.0.0 to 1.1.0 disfigured libfoo/1.0.0 fetched libfoo/1.1.0 unpacked libfoo/1.1.0 @@ -1602,7 +1957,7 @@ test.options += --no-progress updated libbar/1.2.0 EOE - $pkg_status libfoo >'libfoo available 1.0.0'; + $pkg_status libfoo >'libfoo available 1.0.0 0.1.0'; $pkg_status libbar >'!libbar configured 1.2.0'; $* libbar/1.0.0 libfoo 2>>~%EOE%; @@ -1719,6 +2074,17 @@ test.options += --no-progress $pkg_status libbar >'!libbar configured 1.2.0'; + # While at it, test using --mask-repository* instead of rep-remove. + # + $* --upgrade --mask-repository $rep/t2 --mask-repository $rep/t5 2>>/EOE != 0; + error: libbar is not available + EOE + + $* --upgrade --mask-repository-uuid "$cfg_uuid=($rep/t2)" \ + --mask-repository-uuid "$cfg_uuid=($rep/t5)" 2>>/EOE != 0; + error: libbar is not available + EOE + $rep_remove $rep/t2 $rep/t5; $* --upgrade 2>>/EOE != 0; @@ -1735,10 +2101,7 @@ test.options += --no-progress : Test build scenarios described in : https://github.com/conan-io/conan/issues/9547. : - : Note: using tar on Windows is a bit hairy (needs --force-local, etc), so - : we do not run this test on Windows. - : - if ($posix && !$remote) + if (!$remote) { +mkdir 1/ @@ -1748,10 +2111,10 @@ test.options += --no-progress # r = 1/t9-1 +cp -r $rep/t9 $r && \ - tar xzf $r/libbar-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbar-1.0.0.tar.gz -C $r && \ mv $r/libbar-1.0.0 $r/libbar-2.0.0 && \ sed -i -e 's/(version:).+/\1 2.0.0/' $r/libbar-2.0.0/manifest && \ - tar cfz $r/libbar-2.0.0.tar.gz -C $r libbar-2.0.0 &$r/libbar-2.0.0.tar.gz && \ + $tar cfz $r/libbar-2.0.0.tar.gz -C $r libbar-2.0.0 &$r/libbar-2.0.0.tar.gz && \ rm -r $r/libbar-2.0.0 && \ $rep_create $r &$r/packages.manifest @@ -1760,10 +2123,10 @@ test.options += --no-progress # r = 1/t9-2 +cp -r 1/t9-1 $r && \ - tar xzf $r/libbaz-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbaz-1.0.0.tar.gz -C $r && \ mv $r/libbaz-1.0.0 $r/libbaz-2.0.0 && \ sed -i -e 's/(version:).+/\1 2.0.0/' -e 's/(depends: libbar).+/\1 ^2.0.0/' $r/libbaz-2.0.0/manifest && \ - tar cfz $r/libbaz-2.0.0.tar.gz -C $r libbaz-2.0.0 &$r/libbaz-2.0.0.tar.gz && \ + $tar cfz $r/libbaz-2.0.0.tar.gz -C $r libbaz-2.0.0 &$r/libbaz-2.0.0.tar.gz && \ rm -r $r/libbaz-2.0.0 && \ $rep_create $r &$r/packages.manifest @@ -1772,10 +2135,10 @@ test.options += --no-progress # r = 1/t9-3 +cp -r 1/t9-2 $r && \ - tar xzf $r/libbox-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbox-1.0.0.tar.gz -C $r && \ mv $r/libbox-1.0.0 $r/libbox-1.1.0 && \ sed -i -e 's/(version:).+/\1 1.1.0/' $r/libbox-1.1.0/manifest && \ - tar cfz $r/libbox-1.1.0.tar.gz -C $r libbox-1.1.0 &$r/libbox-1.1.0.tar.gz && \ + $tar cfz $r/libbox-1.1.0.tar.gz -C $r libbox-1.1.0 &$r/libbox-1.1.0.tar.gz && \ rm -r $r/libbox-1.1.0 && \ $rep_create $r &$r/packages.manifest @@ -1869,22 +2232,65 @@ test.options += --no-progress # Picks up the latest libbaz (2.0.0) as a prerequisite for foo, which # leads to the conflict between libbaz/2.0.0 and libbox/1.0.0 about # prerequisite libbar because of the incompatible version constraints. + # This get automatically resolved by the unsatisfied constraints + # resolution machinery. # - $* foo 2>>EOE != 0; - error: unable to satisfy constraints on package libbar - info: libbaz depends on (libbar ^2.0.0) - info: libbox depends on (libbar ^1.0.0) - info: available libbar/2.0.0 - info: available libbar/1.0.0 - info: explicitly specify libbar version to manually satisfy both constraints - info: while satisfying libbox/1.0.0 - info: while satisfying foo/1.0.0 + $* foo --plan '' --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libbaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/2.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build: postpone failure for dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: collect_build: pick libbar/2.0.0 over libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libbox/1.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libbaz/2.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version libbaz/2.0.0 with 1.0.0 by adding package spec '?libbaz == 1.0.0' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.0.0 (required by libbaz, libbox) + new libbaz/1.0.0 (required by foo) + new libbox/1.0.0 (required by foo) + new foo/1.0.0 + trace: execute_plan: simulate: no + %.* EOE - $* foo ?libbaz/1.0.0 2>!; $pkg_status -r >>EOO; !foo configured 1.0.0 - libbaz configured !1.0.0 available 2.0.0 + libbaz configured 1.0.0 available 2.0.0 libbar configured 1.0.0 available 2.0.0 libbox configured 1.0.0 libbar configured 1.0.0 available 2.0.0 @@ -1937,17 +2343,49 @@ test.options += --no-progress libbar configured 1.0.0 available 2.0.0 EOO - # Unable to satisfy the dependent libbox with an upgraded (due to - # libbaz 2.0.0) prerequisite libbar/2.0.0. + # Initially unable to satisfy the dependent libbox with an upgraded + # (due to libbaz 2.0.0) prerequisite libbar/2.0.0. But this get + # automatically resolved by the unsatisfied constraints resolution + # machinery. # - $* ?libbaz 2>>EOE != 0; - error: unable to upgrade package libbar/1.0.0 to 2.0.0 - info: because package libbox depends on (libbar ^1.0.0) - info: package libbar/2.0.0 required by libbaz - info: explicitly request up/downgrade of package libbox - info: or explicitly specify package libbar version to manually satisfy these constraints + $* ?libbaz --plan '' --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbaz/1.0.0: update to libbaz/2.0.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + info: package libbaz dependency on (libbar ^2.0.0) is forcing upgrade of libbar/1.0.0 to 2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: skip being built existing dependent libbaz of dependency libbar + trace: collect_build_prerequisites: skip unsatisfied existing dependent libbox of dependency libbar/2.0.0 due to constraint (libbar ^1.0.0) + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_dependents: postpone failure for existing dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfiable dependent libbaz/2.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfiable dependent version libbaz/2.0.0 with 1.0.0 by adding constraint '?libbaz' -> '?libbaz == 1.0.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: simulate: no + %.* EOE + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 available 2.0.0 + libbar configured 1.0.0 available 2.0.0 + libbox configured 1.0.0 + libbar configured 1.0.0 available 2.0.0 + EOO + $pkg_drop foo } } @@ -1961,24 +2399,109 @@ test.options += --no-progress $clone_root_cfg; $rep_add ../../1/t9-3 && $rep_fetch; - # Similar to the repository state 2, picks up the latest libbaz (2.0.0) - # as a prerequisite for foo, which leads to the conflict. + # Similar to the repository state 2, picks up the latest libbaz + # (2.0.0) as a prerequisite for foo, which leads to the conflict, + # which is resolved automatically. # - $* foo 2>>EOE != 0; - error: unable to satisfy constraints on package libbar - info: libbaz depends on (libbar ^2.0.0) - info: libbox depends on (libbar ^1.0.0) - info: available libbar/2.0.0 - info: available libbar/1.0.0 - info: explicitly specify libbar version to manually satisfy both constraints - info: while satisfying libbox/1.1.0 - info: while satisfying foo/1.0.0 + $* foo --plan '' --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libbaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/2.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build: add libbox/1.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.1.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.1.0 + trace: collect_build: postpone failure for dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: collect_build: pick libbar/2.0.0 over libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbox/1.1.0 + trace: collect_build_prerequisites: end libbox/1.1.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libbox/1.1.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version libbox/1.1.0 with 1.0.0 by adding package spec '?libbox == 1.0.0' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libbaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/2.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build: postpone failure for dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: collect_build: pick libbar/2.0.0 over libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libbox/1.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version libbox/1.0.0 is denied since it is specified on command line as '?libbox == 1.0.0' + trace: try_replace_dependent: try to replace conflicting dependent libbaz/2.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version libbaz/2.0.0 with 1.0.0 by adding package spec '?libbaz == 1.0.0' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: start command line adjustments refinement cycle by rolling back first adjustment ('?libbox == 1.0.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.0.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build: add libbox/1.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/1.1.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbox/1.1.0 + trace: collect_build_prerequisites: end libbox/1.1.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: command line adjustment '?libbox == 1.0.0' is redundant, dropping it + new libbar/1.0.0 (required by libbaz, libbox) + new libbaz/1.0.0 (required by foo) + new libbox/1.1.0 (required by foo) + new foo/1.0.0 + trace: execute_plan: simulate: no + %.* EOE - $* foo ?libbaz/1.0.0 2>!; $pkg_status -r >>EOO; !foo configured 1.0.0 - libbaz configured !1.0.0 available 2.0.0 + libbaz configured 1.0.0 available 2.0.0 libbar configured 1.0.0 available 2.0.0 libbox configured 1.1.0 libbar configured 1.0.0 available 2.0.0 @@ -2031,31 +2554,146 @@ test.options += --no-progress libbar configured 1.0.0 available 2.0.0 EOO - # Unable to satisfy the dependent libbox with an upgraded (due to - # libbaz 2.0.0) prerequisite libbar/2.0.0. + test.arguments += --plan '' --verbose 5; + + # Initially, unable to satisfy the dependent libbox with an upgraded + # (due to libbaz 2.0.0) prerequisite libbar/2.0.0. But this get + # automatically resolved by the unsatisfied constraints resolution + # machinery. # - $* foo ?libbaz 2>>EOE != 0; - error: unable to upgrade package libbar/1.0.0 to 2.0.0 - info: because package libbox depends on (libbar ^1.0.0) - info: package libbar/2.0.0 required by libbaz - info: explicitly request up/downgrade of package libbox - info: or explicitly specify package libbar version to manually satisfy these constraints + $* foo ?libbaz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbaz/1.0.0: update to libbaz/2.0.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + info: package libbaz dependency on (libbar ^2.0.0) is forcing upgrade of libbar/1.0.0 to 2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: skip being built existing dependent libbaz of dependency libbar + trace: collect_build_prerequisites: skip unsatisfied existing dependent libbox of dependency libbar/2.0.0 due to constraint (libbar ^1.0.0) + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_dependents: postpone failure for existing dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfiable dependent libbaz/2.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfiable dependent version libbaz/2.0.0 with 1.0.0 by adding constraint '?libbaz' -> '?libbaz == 1.0.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + update foo/1.0.0 + trace: execute_plan: simulate: no + %.* EOE - # libbar/2.0.0 is still unsatisfactory as a prerequisite for libbox, - # even after libbox upgrade is requested on the command line. + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 available 2.0.0 + libbar configured 1.0.0 available 2.0.0 + libbox configured 1.0.0 available 1.1.0 + libbar configured 1.0.0 available 2.0.0 + EOO + + # libbar/2.0.0 is still unsatisfactory, initially, as a prerequisite + # for libbox, even after libbox upgrade is requested on the command + # line. This get automatically resolved by the unsatisfied constraints + # resolution machinery. # - $* foo ?libbaz ?libbox 2>>EOE != 0; - error: unable to satisfy constraints on package libbar - info: libbaz depends on (libbar ^2.0.0) - info: libbox depends on (libbar ^1.0.0) - info: available libbar/2.0.0 - info: available libbar/1.0.0 - info: explicitly specify libbar version to manually satisfy both constraints - info: while satisfying libbox/1.1.0 + $* foo ?libbaz ?libbox 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbaz/1.0.0: update to libbaz/2.0.0 + trace: evaluate_dependency: libbox/1.0.0: update to libbox/1.1.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + info: package libbaz dependency on (libbar ^2.0.0) is forcing upgrade of libbar/1.0.0 to 2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: skip being built existing dependent libbaz of dependency libbar + trace: collect_build_prerequisites: skip unsatisfied existing dependent libbox of dependency libbar/2.0.0 due to constraint (libbar ^1.0.0) + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbox/1.1.0 + trace: collect_build: postpone failure for dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: collect_build: pick libbar/2.0.0 over libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbox/1.1.0 + trace: collect_build_prerequisites: end libbox/1.1.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libbox/1.1.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version libbox/1.1.0 with 1.0.0 by adding constraint '?libbox' -> '?libbox == 1.0.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbaz/1.0.0: update to libbaz/2.0.0 + %.* + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: add libbar/2.0.0 + info: package libbaz dependency on (libbar ^2.0.0) is forcing upgrade of libbar/1.0.0 to 2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/2.0.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: skip being built existing dependent libbaz of dependency libbar + trace: collect_build_prerequisites: skip unsatisfied existing dependent libbox of dependency libbar/2.0.0 due to constraint (libbar ^1.0.0) + trace: collect_build_prerequisites: begin libbar/2.0.0 + trace: collect_build_prerequisites: end libbar/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_dependents: postpone failure for existing dependent libbox unsatisfied with dependency libbar/2.0.0 (^1.0.0) + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfiable dependent libbaz/2.0.0 of dependency libbar/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfiable dependent version libbaz/2.0.0 with 1.0.0 by adding constraint '?libbaz' -> '?libbaz == 1.0.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: start command line adjustments refinement cycle by rolling back first adjustment ('?libbox' -> '?libbox == 1.0.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: skip configured foo/1.0.0 + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbaz/1.0.0: unchanged + trace: evaluate_dependency: libbox/1.0.0: update to libbox/1.1.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: end reached + trace: collect_build_prerequisites: begin libbox/1.1.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbox/1.1.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end libbox/1.1.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: command line adjustment '?libbox' -> '?libbox == 1.0.0' is redundant, dropping it + upgrade libbox/1.1.0 + reconfigure/update foo/1.0.0 + trace: execute_plan: simulate: no + %.* EOE - $* ?libbox 2>!; $pkg_status -r >>EOO; !foo configured 1.0.0 libbaz configured 1.0.0 available 2.0.0 @@ -2068,6 +2706,76 @@ test.options += --no-progress } } } + + : config-vars + : + { + +$cfg_create -d cfg cc config.cc.coptions=-Wall 2>- &cfg/*** + +$rep_add $rep/t5 && $rep_fetch + + : override-package-specific + : + { + $clone_cfg; + + $* --configure-only { config.cc.coptions+=-g }+ libbar \ + { config.cc.coptions+=-O }+ libbox 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libbox/1.2.0 + unpacked libbox/1.2.0 + configured libbar/1.2.0 + configured libbox/1.2.0 + EOE + + cat cfg/build/config.build >>~%EOO%; + %.* + config.cc.coptions = -Wall + %.* + EOO + + cat cfg/libbar-1.2.0/build/config.build >>~%EOO%; + %.* + config.cc.coptions = -Wall -g + %.* + EOO + + cat cfg/libbox-1.2.0/build/config.build >>~%EOO%; + %.* + config.cc.coptions = -Wall -O + %.* + EOO + + $pkg_drop libbar libbox + } + + : override-globally + : + { + $clone_cfg; + + $* --configure-only config.cc.coptions+=-g \ + config.cc.coptions+=-O -- libbar 2>>EOE; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + configured libbar/1.2.0 + EOE + + cat cfg/build/config.build >>~%EOO%; + %.* + config.cc.coptions = -Wall + %.* + EOO + + cat cfg/libbar-1.2.0/build/config.build >>~%EOO%; + %.* + config.cc.coptions = -Wall -g -O + %.* + EOO + + $pkg_drop libbar + } + } } : dependency @@ -2168,7 +2876,10 @@ test.options += --no-progress $rep_fetch $rep/t0c; $* '?libbux' 2>'error: unknown package libbux' != 0; - $* '?sys:libbux' 2>'error: unknown package sys:libbux' != 0; + $* '?sys:libbux' 2>>EOE != 0; + error: unknown package sys:libbux + info: consider specifying sys:libbux/* + EOE $* '?libbar/1.3' 2>'error: unknown package libbar/1.3' != 0; $* '?libbar[5 7]' 2>"error: unknown package 'libbar [5 7]'" != 0 } @@ -2188,8 +2899,7 @@ test.options += --no-progress unpacked libbox/0.0.1 configured libbaz/0.0.4 configured libbox/0.0.1 - %info: .+ is up to date%{2} - updated libbaz/0.0.4 + %info: .+libbox.+ is up to date% updated libbox/0.0.1 EOE @@ -2211,8 +2921,7 @@ test.options += --no-progress unpacked libbaz/0.1.0 configured libbaz/0.1.0 configured libbox/0.0.1 - %info: .+ is up to date%{2} - updated libbaz/0.1.0 + %info: .+libbox.+ is up to date% updated libbox/0.0.1 EOE @@ -2237,16 +2946,22 @@ test.options += --no-progress %.+ EOE - $* libfoo '?sys:libhello' 2>'error: unknown package sys:libhello' != 0; + $* libfoo '?sys:libhello' 2>>EOE != 0; + error: unknown package sys:libhello + info: consider specifying sys:libhello/* + EOE $* "sys:libhello/2.0@$rep/t0a" --trust-yes 2>>~%EOE% != 0; %.+ %error: package sys:libhello/2\.0 is not found in .+t0a% EOE - $* libfoo '?sys:libhello/0.1' 2>>~%EOE% != 0; + $* libfoo '?sys:libhello/0.1' 2>>EOE != 0; error: unable to satisfy constraints on package libhello - %.+ + info: libfoo depends on (libhello >= 1.0) + info: command line depends on (libhello == 0.1) + info: specify libhello version to satisfy libfoo constraint + info: while satisfying libfoo/1.1.0 EOE $* libfoo '?sys:libhello/*' 2>>~%EOE%; @@ -2311,7 +3026,7 @@ test.options += --no-progress configured libbar/1.2.0 EOE - $pkg_status libfoo >'libfoo available 1.0.0'; + $pkg_status libfoo >'libfoo available 1.0.0 0.1.0'; $pkg_disfigure libbar 2>'disfigured libbar/1.2.0'; $pkg_purge libbar 2>'purged libbar/1.2.0' @@ -2350,6 +3065,43 @@ test.options += --no-progress $pkg_purge libfoo 2>'purged libfoo/1.0.0' } + : order-drop + : + { + test.arguments += --yes + + $clone_root_cfg; + $rep_fetch $rep/t2 $rep/t3; + + $* libbaz libbar 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + libfoo configured 1.0.0 + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* ?libbaz ?libfoo/0.1.0 2>>EOE; + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/0.1.0 + unpacked libfoo/0.1.0 + purged libbaz/1.0.0 + configured libfoo/0.1.0 + configured libbar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + $pkg_drop libbar + } + : drop-recursive : { @@ -2367,10 +3119,10 @@ test.options += --no-progress disfigured libbar/0.0.1 disfigured libbaz/0.0.1 disfigured libfox/0.0.1 - fetched libfoo/1.0.0 - unpacked libfoo/1.0.0 purged libfox/0.0.1 purged libbaz/0.0.1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 configured libfoo/1.0.0 @@ -2430,20 +3182,33 @@ test.options += --no-progress $clone_root_cfg; $rep_fetch $rep/t0a $rep/t0b; + # Note that before we have implemented the unsatisfied constraints + # resolution this command has failed as follows: + # + # error: unable to satisfy constraints on package libbaz + # info: libbar depends on (libbaz == 0.0.1) + # command line requires (libbar == 0.0.1) + # info: command line depends on (libbaz == 0.0.2) + # info: specify libbaz version to satisfy libbar constraint + # info: while satisfying libbar/0.0.1 + # $* libbar/0.0.1 ?libbaz/0.0.2 2>>EOE != 0; - error: unable to satisfy constraints on package libbaz - info: libbar depends on (libbaz == 0.0.1) - info: command line depends on (libbaz == 0.0.2) - info: specify libbaz version to satisfy libbar constraint - info: while satisfying libbar/0.0.1 + error: libbaz/0.0.2 is not available from its dependents' repositories EOE + # Note that before we have implemented the unsatisfied constraints + # resolution this command has failed as follows: + # + # error: unable to satisfy constraints on package libbaz + # info: libbar depends on (libbaz == 0.0.1) + # command line requires (libbar == 0.0.1) + # info: command line depends on (libbaz >= 0.0.2) + # info: specify libbaz version to satisfy libbar constraint + # info: while satisfying libbar/0.0.1 + # $* -- libbar/0.0.1 '?libbaz>=0.0.2' 2>>EOE != 0 - error: unable to satisfy constraints on package libbaz - info: libbar depends on (libbaz == 0.0.1) - info: command line depends on (libbaz >= 0.0.2) - info: specify libbaz version to satisfy libbar constraint - info: while satisfying libbar/0.0.1 + error: package libbaz doesn't satisfy its dependents + info: libbaz/0.0.3 doesn't satisfy libbar/0.0.1 EOE } @@ -2453,40 +3218,61 @@ test.options += --no-progress : satisfy-dependents : : Test resolving a conflict when libfix and libbiz have selected such - : versions of their dependency libbaz, that do not satisfy each other - : constraints. We resolve the conflict explicitly specifying + : versions of their dependency libbaz, that don't satisfy each other + : constraints. We resolve the conflict automatically as if by specifying : ?libbaz/0.0.3 on the command line, which satisfies both constraints. : { $clone_root_cfg; $rep_fetch $rep/t0b $rep/t0c; - $* libfix libbiz 2>>EOE != 0; - error: unable to satisfy constraints on package libbaz - info: libfix depends on (libbaz >= 0.0.3) - info: libbiz depends on (libbaz <= 0.0.3) - info: available libbaz/0.1.0 - info: available libbaz/0.0.2 - info: explicitly specify libbaz version to manually satisfy both constraints - info: while satisfying libbiz/0.0.2 - EOE - - $* libfix libbiz ?libbaz/0.0.3 2>>EOE; - fetched libfoo/1.0.0 - unpacked libfoo/1.0.0 - fetched libbaz/0.0.3 - unpacked libbaz/0.0.3 - fetched libfix/0.0.3 - unpacked libfix/0.0.3 - fetched libbiz/0.0.2 - unpacked libbiz/0.0.2 - configured libfoo/1.0.0 - configured libbaz/0.0.3 - configured libfix/0.0.3 - configured libbiz/0.0.2 + $* libfix libbiz --plan '' --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfix/0.0.3 + trace: collect_build: add libbiz/0.0.2 + trace: collect_build_prerequisites: begin libfix/0.0.3 + trace: collect_build: add libbaz/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.1.0 of dependent libfix/0.0.3 + trace: collect_build_prerequisites: begin libbaz/0.1.0 + trace: collect_build_prerequisites: end libbaz/0.1.0 + trace: collect_build_prerequisites: end libfix/0.0.3 + trace: collect_build_prerequisites: begin libbiz/0.0.2 + trace: collect_build: postpone failure for dependent libbiz unsatisfied with dependency libbaz/0.1.0 (<= 0.0.3) + trace: collect_build: pick libbaz/0.1.0 over libbaz/0.0.2 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.1.0 of dependent libbiz/0.0.2 + trace: collect_build_prerequisites: end libbiz/0.0.2 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbaz/0.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbaz/0.1.0 with 0.0.3 by adding package spec '?libbaz == 0.0.3' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfix/0.0.3 + trace: collect_build: add libbiz/0.0.2 + trace: collect_build_prerequisites: begin libfix/0.0.3 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.0.3 of dependent libfix/0.0.3 + trace: collect_build_prerequisites: begin libbaz/0.0.3 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbaz/0.0.3 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbaz/0.0.3 + trace: collect_build_prerequisites: end libfix/0.0.3 + trace: collect_build_prerequisites: begin libbiz/0.0.2 + trace: collect_build: pick libbaz/0.0.3 over libbaz/0.0.2 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.0.3 of dependent libbiz/0.0.2 + trace: collect_build_prerequisites: end libbiz/0.0.2 + trace: execute_plan: simulate: yes + %.* + new libfoo/1.0.0 (required by libbaz) + new libbaz/0.0.3 (required by libbiz, libfix) + new libfix/0.0.3 + new libbiz/0.0.2 + trace: execute_plan: simulate: no + %.* EOE - $pkg_status libbaz >'libbaz configured !0.0.3 available 0.1.0 0.0.4'; + $pkg_status libbaz >'libbaz configured 0.0.3 available 0.1.0 0.0.4'; $pkg_drop libbiz libfix } @@ -2528,40 +3314,71 @@ test.options += --no-progress : Test resolving a conflict when libbox and libfox have selected such : versions of their dependency libfoo, that do not satisfy each other : constraints. Note that these constraints are incompatible, so we - : resolve the conflict explicitly specifying ?libfox/0.0.1 on the - : command line, to replace one of the conflicting dependents. + : automatically resolve the conflict by implicitly specifying + : ?libfox/0.0.1 on the command line, to replace one of the conflicting + : dependents. : { $clone_root_cfg; $rep_fetch $rep/t0d; - $* libbiz 2>>EOE != 0; - error: unable to satisfy constraints on package libfoo - info: libfox depends on (libfoo == 0.0.1) - info: libbox depends on (libfoo == 1.0.0) - info: available libfoo/0.0.1 - info: available libfoo/1.0.0 - info: explicitly specify libfoo version to manually satisfy both constraints - info: while satisfying libbox/0.0.2 - info: while satisfying libbiz/0.0.1 - EOE - - $* libbiz ?libfox/0.0.1 2>>EOE; - fetched libfox/0.0.1 - unpacked libfox/0.0.1 - fetched libfoo/1.0.0 - unpacked libfoo/1.0.0 - fetched libbox/0.0.2 - unpacked libbox/0.0.2 - fetched libbiz/0.0.1 - unpacked libbiz/0.0.1 - configured libfox/0.0.1 - configured libfoo/1.0.0 - configured libbox/0.0.2 - configured libbiz/0.0.1 + $* libbiz --plan "" --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbiz/0.0.1 + trace: collect_build_prerequisites: begin libbiz/0.0.1 + trace: collect_build: add libfox/0.0.2 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/0.0.2 of dependent libbiz/0.0.1 + trace: collect_build_prerequisites: begin libfox/0.0.2 + trace: collect_build: add libfoo/0.0.1 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/0.0.1 of dependent libfox/0.0.2 + trace: collect_build_prerequisites: begin libfoo/0.0.1 + trace: collect_build: add libfix/0.0.1 + trace: collect_build_prerequisites: no cfg-clause for dependency libfix/0.0.1 of dependent libfoo/0.0.1 + trace: collect_build_prerequisites: begin libfix/0.0.1 + trace: collect_build_prerequisites: end libfix/0.0.1 + trace: collect_build_prerequisites: end libfoo/0.0.1 + trace: collect_build_prerequisites: end libfox/0.0.2 + trace: collect_build: add libbox/0.0.2 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/0.0.2 of dependent libbiz/0.0.1 + trace: collect_build_prerequisites: begin libbox/0.0.2 + trace: collect_build: postpone failure for dependent libbox unsatisfied with dependency libfoo/0.0.1 (== 1.0.0) + trace: collect_build: pick libfoo/0.0.1 over libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/0.0.1 of dependent libbox/0.0.2 + trace: collect_build_prerequisites: end libbox/0.0.2 + trace: collect_build_prerequisites: end libbiz/0.0.1 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libfoo/0.0.1 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libbox/0.0.2 of dependency libfoo/0.0.1 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libfox/0.0.2 of dependency libfoo/0.0.1 with some other version + trace: try_replace_dependency: replace conflicting dependent version libfox/0.0.2 with 0.0.1 by adding package spec '?libfox == 0.0.1' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbiz/0.0.1 + trace: collect_build_prerequisites: begin libbiz/0.0.1 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/0.0.1 of dependent libbiz/0.0.1 + trace: collect_build_prerequisites: begin libfox/0.0.1 + trace: collect_build_prerequisites: end libfox/0.0.1 + trace: collect_build: add libbox/0.0.2 + trace: collect_build_prerequisites: no cfg-clause for dependency libbox/0.0.2 of dependent libbiz/0.0.1 + trace: collect_build_prerequisites: begin libbox/0.0.2 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbox/0.0.2 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbox/0.0.2 + trace: collect_build_prerequisites: end libbiz/0.0.1 + trace: execute_plan: simulate: yes + %.* + new libfox/0.0.1 (required by libbiz) + new libfoo/1.0.0 (required by libbox) + new libbox/0.0.2 (required by libbiz) + new libbiz/0.0.1 + trace: execute_plan: simulate: no + %.* EOE - $pkg_status libfox >'libfox configured !0.0.1 available 0.0.2'; + $pkg_status libfox >'libfox configured 0.0.1 available 0.0.2'; $pkg_drop libbiz } @@ -2659,6 +3476,266 @@ test.options += --no-progress } } + : reconfigure + : + { + test.arguments += --yes --configure-only + + +$clone_root_cfg + +$rep_fetch $rep/t8a + + : deps-with-buildfile-clause + : + { + $clone_cfg; + + $* dox 2>!; + + $pkg_status -r >>EOO; + !dox configured 1.0.0 + dax configured 1.0.0 + libbaz configured 1.1.0 + EOO + + $* ?dax; # Noop. + + $* { config.dax.extras=true }+ ?dax 2>>EOE; + disfigured dox/1.0.0 + disfigured dax/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libbar/1.0.0 + configured dax/1.0.0 + configured dox/1.0.0 + EOE + + cat cfg/dax-1.0.0/build/config.build >>~%EOO%; + %.* + config.dax.extras = true + %.* + EOO + + $* ?dax; # Noop. + + cat cfg/dax-1.0.0/build/config.build >>~%EOO%; + %.* + config.dax.extras = true + %.* + EOO + + $pkg_status -r >>EOO; + !dox configured 1.0.0 + dax configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.1.0 + EOO + + $* { config.dax.extras=true }+ ?dax 2>>EOE; + disfigured dox/1.0.0 + disfigured dax/1.0.0 + configured dax/1.0.0 + configured dox/1.0.0 + EOE + + $pkg_status -r >>EOO; + !dox configured 1.0.0 + dax configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.1.0 + EOO + + $* { config.dax.extras=false }+ ?dax 2>>EOE; + disfigured dox/1.0.0 + disfigured dax/1.0.0 + disfigured libbar/1.0.0 + purged libbar/1.0.0 + configured dax/1.0.0 + configured dox/1.0.0 + EOE + + cat cfg/dax-1.0.0/build/config.build >>~%EOO%; + %.* + config.dax.extras = false + %.* + EOO + + $pkg_status -r >>EOO; + !dox configured 1.0.0 + dax configured 1.0.0 + libbaz configured 1.1.0 + EOO + + # While at it, test that an attempt to reconfigure an orphan dependency + # which has its own dependencies with buildfile clauses fails. + # + $rep_remove $rep/t8a; + + $* { config.dax.extras=true }+ ?dax 2>>/EOE != 0; + error: unknown package dax + info: configuration cfg/ has no repositories + info: use 'bpkg rep-add' to add a repository + EOE + + cp -rp cfg/dax-1.0.0/ dax; + + $rep_add --type dir "$~/dax"; + $rep_fetch; + + $* { config.dax.extras=true }+ ?dax 2>>EOE != 0; + error: package dax/1.0.0 is orphaned + info: explicitly upgrade it to a new version + info: while satisfying dax/1.0.0 + EOE + + $pkg_drop dox + } + + : deps-without-buildfile-clause + : + { + $clone_cfg; + + $* foz 2>!; + + $pkg_status -r >>EOO; + !foz configured 1.0.0 + fuz configured 1.0.0 + libfoo configured 2.0.0 + EOO + + $* ?fuz; # Noop. + + cat cfg/fuz-1.0.0/build/config.build >>~%EOO%; + %.* + config.fuz.extras = false + %.* + EOO + + $* { config.fuz.extras=true }+ ?fuz 2>>EOE; + disfigured foz/1.0.0 + disfigured fuz/1.0.0 + configured fuz/1.0.0 + configured foz/1.0.0 + EOE + + cat cfg/fuz-1.0.0/build/config.build >>~%EOO%; + %.* + config.fuz.extras = true + %.* + EOO + + $* ?fuz; # Noop. + + cat cfg/fuz-1.0.0/build/config.build >>~%EOO%; + %.* + config.fuz.extras = true + %.* + EOO + + $* { config.fuz.extras=false }+ ?fuz 2>>EOE; + disfigured foz/1.0.0 + disfigured fuz/1.0.0 + configured fuz/1.0.0 + configured foz/1.0.0 + EOE + + cat cfg/fuz-1.0.0/build/config.build >>~%EOO%; + %.* + config.fuz.extras = false + %.* + EOO + + # While at it, test that we can also reconfigure an orphan with its own + # dependencies but without buildfile clauses. + # + $rep_remove $rep/t8a; + + cp -rp cfg/fuz-1.0.0/ fuz; + sed -i -e 's/(version:) 1.0.0/\1 2.0.0/' fuz/manifest; + + $rep_add --type dir "$~/fuz"; + $rep_fetch; + + $* { config.fuz.extras=true }+ ?fuz 2>>EOE; + disfigured foz/1.0.0 + disfigured fuz/1.0.0 + configured fuz/1.0.0 + configured foz/1.0.0 + EOE + + cat cfg/fuz-1.0.0/build/config.build >>~%EOO%; + %.* + config.fuz.extras = true + %.* + EOO + + $pkg_status -r >>EOO; + !foz configured 1.0.0 + fuz configured 1.0.0 available 2.0.0 + libfoo configured 2.0.0 + EOO + + $pkg_drop foz + } + + : no-deps + : + { + $clone_cfg; + + $* fuz 2>!; + + $* ?libfoo; # Noop. + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 2 + %.* + EOO + + $* { config.libfoo.protocol=1 }+ ?libfoo 2>>EOE; + disfigured fuz/1.0.0 + disfigured libfoo/2.0.0 + configured libfoo/2.0.0 + configured fuz/1.0.0 + EOE + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 1 + %.* + EOO + + $* ?libfoo; # Noop. + + # While at it, test that we can also reconfigure an orphan without + # dependencies. + # + $rep_remove $rep/t8a; + + cp -rp cfg/libfoo-2.0.0/ libfoo; + sed -i -e 's/(version:) 2.0.0/\1 3.0.0/' libfoo/manifest; + + $rep_add --type dir "$~/libfoo"; + $rep_fetch; + + $* { config.libfoo.protocol=3 }+ ?libfoo 2>>EOE; + disfigured fuz/1.0.0 + disfigured libfoo/2.0.0 + configured libfoo/2.0.0 + configured fuz/1.0.0 + EOE + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 3 + %.* + EOO + + $pkg_drop fuz + } + } + : refine : { @@ -3074,6 +4151,71 @@ test.options += --no-progress $pkg_drop libbar libbox } + : satisfy-masked + : + : As above but using --mask-repository* instead of rep-remove. + : + { + $clone_cfg; + $rep_fetch $rep/t0b; + + $* libbar/0.0.1 2>!; + + $pkg_status libbaz >'libbaz configured 0.0.1 available 0.1.0 0.0.4 0.0.3 0.0.2'; + + $* libbar/0.0.2 ?libbaz 2>>EOE; + disfigured libbar/0.0.1 + disfigured libbaz/0.0.1 + disfigured libfox/0.0.1 + purged libfox/0.0.1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbaz/0.0.2 + unpacked libbaz/0.0.2 + fetched libbar/0.0.2 + unpacked libbar/0.0.2 + configured libfoo/1.0.0 + configured libbaz/0.0.2 + configured libbar/0.0.2 + EOE + + $pkg_status libbaz >'libbaz configured 0.0.2 available 0.1.0 0.0.4 0.0.3'; + + # Test that the selected package, that is "better" than the available + # one, is left. + # + $* --mask-repository $rep/t0b libbox ?libbaz 2>>EOE; + fetched libbox/0.0.1 + unpacked libbox/0.0.1 + configured libbox/0.0.1 + EOE + + $pkg_status libbaz >'libbaz configured 0.0.2 available 0.1.0 0.0.4 0.0.3'; + + # Test that the selected package is left as there is no satisfactory + # available package. + # + $* --mask-repository $rep/t0b --mask-repository-uuid "$cfg_uuid=($rep/t0a)" ?libbaz; + + # Test that the above behavior is not triggered for the system package. + # + $* --mask-repository $rep/t0b --mask-repository $rep/t0a '?sys:libbaz' 2>>EOE; + disfigured libbar/0.0.2 + disfigured libbox/0.0.1 + disfigured libbaz/0.0.2 + disfigured libfoo/1.0.0 + purged libfoo/1.0.0 + purged libbaz/0.0.2 + configured sys:libbaz/* + configured libbox/0.0.1 + configured libbar/0.0.2 + EOE + + $pkg_status libbaz >'libbaz configured,system !* available 0.1.0 0.0.4 0.0.3 0.0.2 0.0.1'; + + $pkg_drop libbar libbox + } + : unsatisfied : { @@ -3106,12 +4248,9 @@ test.options += --no-progress $pkg_status libbaz >'libbaz configured 0.0.1 available 0.1.0 0.0.4 0.0.3'; - $* ?libbaz/0.0.3 +{ --config-id 1 } 2>>EOE != 0; - error: unable to satisfy constraints on package libbaz - info: libbar depends on (libbaz == 0.0.1) - info: command line depends on (libbaz == 0.0.3) - info: specify libbaz version to satisfy libbar constraint - info: while satisfying libbar/0.0.1 + $* ?libbaz/0.0.3 +{ --config-id 1 } 2>>~%EOE% != 0; + %error: package libbaz \[cfg2.\] doesn't satisfy its dependents% + info: libbaz/0.0.3 doesn't satisfy libbar/0.0.1 EOE $pkg_status libbaz >'libbaz configured 0.0.1 available 0.1.0 0.0.4 0.0.3'; @@ -3290,7 +4429,7 @@ test.options += --no-progress # Note that libfoo building doesn't trigger libhello building as it is a # fake dependent, so build both explicitly. # - $* libfoo ?libhello 2>!; + $* libfoo libhello 2>!; # Move libhello version ahead. # @@ -3304,16 +4443,17 @@ test.options += --no-progress # date on filesystems with a low file timestamps resolution (for example # HFS+). # - $* ?libhello --yes --keep-out 2>>~%EOE% + $* ?libhello --yes --keep-out 2>>~%EOE%; disfigured libfoo/1.1.0 disfigured libhello/1.0.0 using libhello/1.0.1 (external) configured libhello/1.0.1 configured libfoo/1.1.0 - %info: .+ is up to date%{1,2} - updated libhello/1.0.1 + %info: .+libfoo.+ is up to date% updated libfoo/1.1.0 EOE + + test -d cfg/libhello/libhello } } @@ -3365,10 +4505,9 @@ test.options += --no-progress : adjust-merge-build : - : Test that the registered in the map but not ordered package build - : (libfoo) is properly merged into the reconfigure adjustment as a - : dependent of the reconfigured dependency (see collect_order_dependents() - : for more details). + : Test that the registered in the map package build (libfoo) is properly + : merged into the reconfigure adjustment as a dependent of the + : reconfigured dependency (see collect_dependents() for more details). : { $clone_root_cfg; @@ -3402,6 +4541,1564 @@ test.options += --no-progress $pkg_drop libbaz libbar libfoo } + + : reconfiguration + : + { + +$clone_root_cfg + +$rep_add $rep/t4f && $rep_fetch + + : re-order + : + : This test reproduced a failure of the collect_order_dependents() + : function (now turned into collect_dependents()) to properly order + : dependents of a being upgraded package, if the current version of this + : package is a dependent of a being reconfigured dependency. The now + : fixed bug ended up with the 'unable to satisfy dependency' failure of + : the subsequent pkg_configure() function call for the described case. + : + { + $clone_cfg; + + $* libbar libbox/1.0.0 ?libbax/1.0.0 2>!; + + $pkg_status -ar >>EOO; + libbax configured !1.0.0 available 2.0.0 + !libbox configured !1.0.0 available 2.0.0 + libbax configured !1.0.0 available 2.0.0 + !libbar configured 2.1.0 + !libbox configured !1.0.0 available 2.0.0 + libbax configured !1.0.0 available 2.0.0 + EOO + + $* libfoo libbax 2>>EOE; + warning: package libfoo dependency on (libbar == 1.2.0) is forcing downgrade of libbar/2.1.0 to 1.2.0 + disfigured libbar/2.1.0 + disfigured libbox/1.0.0 + disfigured libbax/1.0.0 + fetched libbax/2.0.0 + unpacked libbax/2.0.0 + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libbax/2.0.0 + configured libbox/1.0.0 + configured libbar/1.2.0 + configured libfoo/2.0.0 + EOE + + $pkg_status -ar >>EOO; + !libbax configured 2.0.0 + !libbox configured !1.0.0 available 2.0.0 + !libbax configured 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 libbax libbox libbar libfoo + } + + : re-order-unsatisfied + : + : Similar to the above but the dependent of the mentioned package is + : unsatisfied with its dependencies. + : + { + $clone_cfg; + + $* libbar libbox ?libbax/1.0.0 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 + !libbar configured 2.1.0 + !libbox configured 2.0.0 + libbax configured !1.0.0 available 2.0.0 + EOO + + $* libfoo libbax/2.0.0 --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 libbax/2.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: add libbar/1.2.0 + warning: package libfoo dependency on (libbar == 1.2.0) is forcing downgrade of libbar/2.1.0 to 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: skip unsatisfied existing dependent libbox of dependency libbax/2.0.0 due to constraint (libbax == 1.0.0) + trace: collect_build_prerequisites: begin libbax/2.0.0 + trace: collect_build_prerequisites: end libbax/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: 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 libbar + } + } + + : denied-version-replacements + : + { + +$clone_root_cfg + +$rep_add $rep/t4j && $rep_fetch + + : unsatisfactory-version + : + { + $clone_cfg; + + $* libbaz libfoo libfox --plan "" --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/2.1.0 + trace: collect_build: add libfoo/3.0.0 + trace: collect_build: add libfox/3.0.0 + trace: collect_build_prerequisites: begin libbaz/2.1.0 + trace: collect_build_prerequisites: end libbaz/2.1.0 + trace: collect_build_prerequisites: begin libfoo/3.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/3.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/3.0.0 + trace: collect_build_prerequisites: begin libfox/3.0.0 + trace: collect_build: pick libbar/0.1.0 over libbar/1.2.0 + trace: collect_build: libbar/1.2.0 package version needs to be replaced with libbar/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/2.1.0 + trace: collect_build: add libfoo/3.0.0 + trace: collect_build: add libfox/3.0.0 + trace: collect_build_prerequisites: begin libbaz/2.1.0 + trace: collect_build_prerequisites: end libbaz/2.1.0 + trace: collect_build_prerequisites: begin libfoo/3.0.0 + trace: collect_build: apply version replacement for libbar/1.2.0 + trace: collect_build: replacement: libbar/0.1.0 + trace: collect_build: add libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent libfoo/3.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 libfoo/3.0.0 + trace: collect_build_prerequisites: begin libfox/3.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent libfox/3.0.0 + trace: collect_build: pick libbaz/1.2.0 over libbaz/2.1.0 + trace: collect_build: libbaz/2.1.0 package version needs to be replaced with libbaz/1.2.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: apply version replacement for libbaz/2.1.0 + trace: collect_build: replacement: libbaz/1.2.0 + trace: collect_build: add libbaz/1.2.0 + trace: collect_build: add libfoo/3.0.0 + trace: collect_build: add libfox/3.0.0 + trace: collect_build_prerequisites: begin libbaz/1.2.0 + trace: collect_build: apply version replacement for libbar/1.2.0 + trace: collect_build: replacement to 0.1.0 is denied since libbaz/1.2.0 depends on (libbar == 1.2.0) + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/1.2.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libbaz/1.2.0 + trace: collect_build_prerequisites: begin libfoo/3.0.0 + trace: collect_build: apply version replacement for libbar/1.2.0 + trace: collect_build: replacement: libbar/0.1.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/3.0.0 + trace: collect_build_prerequisites: end libfoo/3.0.0 + trace: collect_build_prerequisites: begin libfox/3.0.0 + trace: collect_build: postpone failure for dependent libfox unsatisfied with dependency libbar/1.2.0 (== 0.1.0) + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/3.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.2.0 of dependent libfox/3.0.0 + trace: collect_build_prerequisites: end libfox/3.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/1.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfox/3.0.0 of dependency libbar/1.2.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version libfox/3.0.0 with 2.1.0 by adding constraint 'libfox' -> 'libfox == 2.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/2.1.0 + trace: collect_build: add libfoo/3.0.0 + trace: collect_build: add libfox/2.1.0 + trace: collect_build_prerequisites: begin libbaz/2.1.0 + trace: collect_build_prerequisites: end libbaz/2.1.0 + trace: collect_build_prerequisites: begin libfoo/3.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/3.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/3.0.0 + trace: collect_build_prerequisites: begin libfox/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.1.0 + trace: collect_build: pick libbaz/1.2.0 over libbaz/2.1.0 + trace: collect_build: libbaz/2.1.0 package version needs to be replaced with libbaz/1.2.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: apply version replacement for libbaz/2.1.0 + trace: collect_build: replacement: libbaz/1.2.0 + trace: collect_build: add libbaz/1.2.0 + trace: collect_build: add libfoo/3.0.0 + trace: collect_build: add libfox/2.1.0 + trace: collect_build_prerequisites: begin libbaz/1.2.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/1.2.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libbaz/1.2.0 + trace: collect_build_prerequisites: begin libfoo/3.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/3.0.0 + trace: collect_build_prerequisites: end libfoo/3.0.0 + trace: collect_build_prerequisites: begin libfox/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: end libfox/2.1.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libbaz, libfoo, libfox) + new libbaz/1.2.0 + new libfoo/3.0.0 + new libfox/2.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 + !libbaz configured 1.2.0 available 2.1.0 + libbar configured 1.2.0 + !libfoo configured 3.0.0 + libbar configured 1.2.0 + !libfox configured 2.1.0 available 3.0.0 + libbar configured 1.2.0 + !libbaz configured 1.2.0 available 2.1.0 + libbar configured 1.2.0 + EOO + + $pkg_drop libbaz libfoo libfox + } + + : collect-drop + : + { + $clone_cfg; + + $* libfix ?libfox/0.0.1 libbaz 2>!; + + $pkg_status -ar >>EOO; + libfox configured !0.0.1 available 3.0.0 2.1.0 + !libfix configured 1.0.0 + libfox configured !0.0.1 available 3.0.0 2.1.0 + !libbaz configured 2.1.0 + EOO + + $* ?libbaz ?libfox/2.1.0 --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libfox/0.0.1: update to libfox/2.1.0 + trace: evaluate_dependency: libbaz/2.1.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval libfix/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated libfix/1.0.0: end reached + trace: collect_build_prerequisites: begin libfox/2.1.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + warning: package libfox dependency on (libbaz == 1.2.0) is forcing downgrade of libbaz/2.1.0 to 1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: begin libbaz/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/1.2.0 + trace: collect_build_prerequisites: end libbaz/1.2.0 + trace: collect_build_prerequisites: end libfox/2.1.0 + trace: collect_drop: libbaz cannot be dropped since it is required by command line, libfox/2.1.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: one of dependency evaluation decisions has changed, re-collecting from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build_prerequisites: pre-reeval libfix/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated libfix/1.0.0: end reached + trace: collect_build_prerequisites: begin libfox/2.1.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + warning: package libfox dependency on (libbaz == 1.2.0) is forcing downgrade of libbaz/2.1.0 to 1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.2.0 of dependent libfox/2.1.0 + trace: collect_build_prerequisites: begin libbaz/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/1.2.0 + trace: collect_build_prerequisites: end libbaz/1.2.0 + trace: collect_build_prerequisites: end libfox/2.1.0 + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + libfox configured !2.1.0 available 3.0.0 + libbar configured 1.2.0 + libbaz configured 1.2.0 available 2.1.0 + libbar configured 1.2.0 + !libfix configured 1.0.0 + libfox configured !2.1.0 available 3.0.0 + libbar configured 1.2.0 + libbaz configured 1.2.0 available 2.1.0 + libbar configured 1.2.0 + libbaz configured 1.2.0 available 2.1.0 + libbar configured 1.2.0 + libbar configured 1.2.0 + EOO + + $pkg_drop libfix + } + } + + : constraint-resolution + : + { + +$clone_root_cfg + +$rep_add $rep/t4f && $rep_fetch + + test.arguments += --plan "" --verbose 5 + + : replace-dependent + : + { + +$clone_cfg + + : basics + : + : This test demonstrates a case when the dependency resolution + : machinery resolves unsatisfied dependency constraints by adding the + : package spec to the command line for an unsatisfied dependent + : version. + : + { + $clone_cfg; + + $* libfoo libfix 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/1.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfox/2.0.0 of dependency libbar/1.2.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version libfox/2.0.0 with 1.1.0 by adding package spec '?libfox == 1.1.0' to command line + 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_prerequisites: no cfg-clause for dependency libfox/1.1.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.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/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libfoo, libfox) + new libfoo/2.0.0 + new libfox/1.1.0 (required by libfix) + new libfix/1.0.0 + trace: execute_plan: simulate: no + %.* + 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 + } + + : 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 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.1.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfoo/2.0.0 of dependency libbar/2.1.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libfox/2.0.0 of dependency libbar/2.1.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version libfox/2.0.0 with 1.1.0 by adding package spec '?libfox == 1.1.0' to command line + 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_prerequisites: no cfg-clause for dependency libfox/1.1.0 of dependent libfix/1.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: end libfix/1.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/2.1.0 + trace: collect_build: libbar/2.1.0 package version needs to be replaced with libbar/1.2.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + 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_prerequisites: no cfg-clause for dependency libfox/1.1.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build: apply version replacement for libbar/2.1.0 + trace: collect_build: replacement: libbar/1.2.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libfoo, libfox) + new libfox/1.1.0 (required by libfix) + new libfix/1.0.0 + new libfoo/2.0.0 + trace: execute_plan: simulate: no + %.* + 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 + } + + : to-hold + : + : Similar to the basics test, but the unsatisfied dependent is being + : built to hold rather than as a dependency. + : + { + $clone_cfg; + + $* libfoo libfox 2>>~%EOE%; + %.* + 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 + %.* + trace: try_replace_dependent: try to replace unsatisfied dependent libfox/2.0.0 of dependency libbar/1.2.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version libfox/2.0.0 with 1.1.0 by adding constraint 'libfox' -> 'libfox == 1.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/2.0.0 + trace: collect_build: add libfox/1.1.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/1.1.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/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libfoo, libfox) + new libfoo/2.0.0 + new libfox/1.1.0 + trace: execute_plan: simulate: no + %.* + 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 + } + + : 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 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.1.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfoo/2.0.0 of dependency libbar/2.1.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libfox/2.0.0 of dependency libbar/2.1.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version libfox/2.0.0 with 1.1.0 by adding constraint 'libfox' -> 'libfox == 1.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfox/1.1.0 + trace: collect_build: add libfoo/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 libfoo/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/2.1.0 + trace: collect_build: libbar/2.1.0 package version needs to be replaced with libbar/1.2.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfox/1.1.0 + trace: collect_build: add libfoo/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build: apply version replacement for libbar/2.1.0 + trace: collect_build: replacement: libbar/1.2.0 + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: begin libfoo/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfoo/2.0.0 + trace: collect_build_prerequisites: end libfoo/2.0.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libfoo, libfox) + new libfox/1.1.0 + new libfoo/2.0.0 + trace: execute_plan: simulate: no + %.* + 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 + } + + : unsatisfied-dependent + : + : This test demonstrates a case when the dependency resolution + : machinery resolves unsatisfied dependency constraints by + : enforcing 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 is 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 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbax/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfiable dependent libbix/2.0.0 of dependency libbax/2.0.0 with some other version + trace: try_replace_dependency: replace unsatisfiable dependent version libbix/2.0.0 with 1.0.0 by adding package spec '?libbix == 1.0.0' to command line + 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: execute_plan: simulate: no + %.* + EOE + + $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 + + $pkg_drop libbox libbux + } + + : indirect + : + : Test replacement of indirect dependents of an unsatisfactory + : dependency. + : + { + $clone_root_cfg; + $rep_add $rep/t4k && $rep_fetch; + + $* libbaz libbar 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/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 libbaz/1.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: add libfux/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfux/2.0.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: begin libfux/2.0.0 + trace: collect_build: add libfaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/2.0.0 of dependent libfux/2.0.0 + trace: collect_build_prerequisites: begin libfaz/2.0.0 + trace: collect_build: add libfuz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/2.0.0 of dependent libfaz/2.0.0 + trace: collect_build_prerequisites: begin libfuz/2.0.0 + trace: collect_build_prerequisites: end libfuz/2.0.0 + trace: collect_build_prerequisites: end libfaz/2.0.0 + trace: collect_build: add libfex/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfex/2.0.0 of dependent libfux/2.0.0 + trace: collect_build_prerequisites: begin libfex/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/2.0.0 of dependent libfex/2.0.0 + trace: collect_build_prerequisites: end libfex/2.0.0 + trace: collect_build_prerequisites: end libfux/2.0.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbar/1.0.0 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build: add libfix/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfix/1.0.0 of dependent libfoo/1.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfax/1.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfax/1.0.0 + trace: collect_build: postpone failure for dependent libfax unsatisfied with dependency libfuz/2.0.0 (== 1.0.0) + trace: collect_build: pick libfuz/2.0.0 over libfuz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/2.0.0 of dependent libfax/1.0.0 + trace: collect_build_prerequisites: end libfax/1.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfax/1.0.0 of dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libfaz/2.0.0 of dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfix/1.0.0 of dependency libfax/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfoo/1.0.0 of dependency libfix/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libbar/1.0.0 of dependency libfoo/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfux/2.0.0 of dependency libfaz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfex/2.0.0 of dependency libfaz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfox/2.0.0 of dependency libfux/2.0.0 with some other version + trace: try_replace_dependency: replace constraining dependent version libfox/2.0.0 with 1.2.0 by adding package spec '?libfox == 1.2.0' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/1.2.0 of dependent libbaz/1.0.0 + trace: collect_build_prerequisites: begin libfox/1.2.0 + trace: collect_build: add libfux/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfux/1.0.0 of dependent libfox/1.2.0 + trace: collect_build_prerequisites: begin libfux/1.0.0 + trace: collect_build: add libfaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/1.0.0 of dependent libfux/1.0.0 + trace: collect_build_prerequisites: begin libfaz/1.0.0 + trace: collect_build: add libfuz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/1.0.0 of dependent libfaz/1.0.0 + trace: collect_build_prerequisites: begin libfuz/1.0.0 + trace: collect_build_prerequisites: end libfuz/1.0.0 + trace: collect_build_prerequisites: end libfaz/1.0.0 + trace: collect_build: add libfex/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfex/1.0.0 of dependent libfux/1.0.0 + trace: collect_build_prerequisites: begin libfex/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/1.0.0 of dependent libfex/1.0.0 + trace: collect_build_prerequisites: end libfex/1.0.0 + trace: collect_build_prerequisites: end libfux/1.0.0 + trace: collect_build: postpone failure for dependent libfox unsatisfied with dependency libfex/1.0.0 (>= 2.0.0) + trace: collect_build: pick libfex/1.0.0 over libfex/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfex/1.0.0 of dependent libfox/1.2.0 + trace: collect_build_prerequisites: end libfox/1.2.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbar/1.0.0 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build: add libfix/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfix/1.0.0 of dependent libfoo/1.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfax/1.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/1.0.0 of dependent libfax/1.0.0 + trace: collect_build_prerequisites: end libfax/1.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libfex/1.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfox/1.2.0 of dependency libfex/1.0.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version libfox/1.2.0 is denied since it is specified on command line as '?libfox == 1.2.0' + trace: try_replace_dependent: try to replace conflicting dependent libfux/1.0.0 of dependency libfex/1.0.0 with some other version + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('?libfox == 1.2.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/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 libbaz/1.0.0 + trace: collect_build_prerequisites: begin libfox/2.0.0 + trace: collect_build: add libfux/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfux/2.0.0 of dependent libfox/2.0.0 + trace: collect_build_prerequisites: begin libfux/2.0.0 + trace: collect_build: add libfaz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/2.0.0 of dependent libfux/2.0.0 + trace: collect_build_prerequisites: begin libfaz/2.0.0 + trace: collect_build: add libfuz/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/2.0.0 of dependent libfaz/2.0.0 + trace: collect_build_prerequisites: begin libfuz/2.0.0 + trace: collect_build_prerequisites: end libfuz/2.0.0 + trace: collect_build_prerequisites: end libfaz/2.0.0 + trace: collect_build: add libfex/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfex/2.0.0 of dependent libfux/2.0.0 + trace: collect_build_prerequisites: begin libfex/2.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/2.0.0 of dependent libfex/2.0.0 + trace: collect_build_prerequisites: end libfex/2.0.0 + trace: collect_build_prerequisites: end libfux/2.0.0 + trace: collect_build_prerequisites: end libfox/2.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbar/1.0.0 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build: add libfix/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfix/1.0.0 of dependent libfoo/1.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfax/1.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfax/1.0.0 + trace: collect_build: postpone failure for dependent libfax unsatisfied with dependency libfuz/2.0.0 (== 1.0.0) + trace: collect_build: pick libfuz/2.0.0 over libfuz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/2.0.0 of dependent libfax/1.0.0 + trace: collect_build_prerequisites: end libfax/1.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent libfax/1.0.0 of dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent libfaz/2.0.0 of dependency libfuz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfix/1.0.0 of dependency libfax/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfoo/1.0.0 of dependency libfix/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libbar/1.0.0 of dependency libfoo/1.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfux/2.0.0 of dependency libfaz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfex/2.0.0 of dependency libfaz/2.0.0 with some other version + trace: try_replace_dependent: try to replace constraining dependent libfox/2.0.0 of dependency libfux/2.0.0 with some other version + trace: try_replace_dependency: replacement libfox/1.2.0 tried earlier for same command line, skipping + trace: try_replace_dependency: replace constraining dependent version libfox/2.0.0 with 1.0.0 by adding package spec '?libfox == 1.0.0' to command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfox/1.0.0 of dependent libbaz/1.0.0 + trace: collect_build_prerequisites: begin libfox/1.0.0 + trace: collect_build: add libfux/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfux/1.0.0 of dependent libfox/1.0.0 + trace: collect_build_prerequisites: begin libfux/1.0.0 + trace: collect_build: add libfaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/1.0.0 of dependent libfux/1.0.0 + trace: collect_build_prerequisites: begin libfaz/1.0.0 + trace: collect_build: add libfuz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/1.0.0 of dependent libfaz/1.0.0 + trace: collect_build_prerequisites: begin libfuz/1.0.0 + trace: collect_build_prerequisites: end libfuz/1.0.0 + trace: collect_build_prerequisites: end libfaz/1.0.0 + trace: collect_build: add libfex/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfex/1.0.0 of dependent libfux/1.0.0 + trace: collect_build_prerequisites: begin libfex/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfaz/1.0.0 of dependent libfex/1.0.0 + trace: collect_build_prerequisites: end libfex/1.0.0 + trace: collect_build_prerequisites: end libfux/1.0.0 + trace: collect_build_prerequisites: end libfox/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent libbar/1.0.0 + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build: add libfix/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfix/1.0.0 of dependent libfoo/1.0.0 + trace: collect_build_prerequisites: begin libfix/1.0.0 + trace: collect_build: add libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfax/1.0.0 of dependent libfix/1.0.0 + trace: collect_build_prerequisites: begin libfax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfuz/1.0.0 of dependent libfax/1.0.0 + trace: collect_build_prerequisites: end libfax/1.0.0 + trace: collect_build_prerequisites: end libfix/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + new libfuz/1.0.0 (required by libfax, libfaz) + new libfaz/1.0.0 (required by libfex, libfux) + new libfex/1.0.0 (required by libfux) + new libfux/1.0.0 (required by libfox) + new libfox/1.0.0 (required by libbaz) + new libbaz/1.0.0 + new libfax/1.0.0 (required by libfix) + new libfix/1.0.0 (required by libfoo) + new libfoo/1.0.0 (required by libbar) + new libbar/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r libbaz libbar >>EOO; + !libbaz configured 1.0.0 + libfox configured 1.0.0 available 2.0.0 1.2.0 + libfux configured 1.0.0 available 2.0.0 + libfaz configured 1.0.0 available 2.0.0 + libfuz configured 1.0.0 available 2.0.0 + libfex configured 1.0.0 available 2.0.0 + libfaz configured 1.0.0 available 2.0.0 + libfuz configured 1.0.0 available 2.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 available 2.0.0 + libfix configured 1.0.0 available 2.0.0 + libfax configured 1.0.0 available 2.0.0 + libfuz configured 1.0.0 available 2.0.0 + EOO + + $pkg_drop libbaz libbar + } + } + + : replace-dependency + : + { + +$clone_cfg + +$rep_add $rep/t4i && $rep_fetch + + : basics + : + : This test demonstrates a case when the dependency resolution + : machinery resolves unsatisfied dependency constraints by adding the + : package spec to the command line for an unsatisfactory dependency + : version. + : + { + $clone_cfg; + + $* libfox/1.1.0 libbaz 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/2.1.0 with 1.2.0 by adding package spec '?libbar == 1.2.0' to command line + 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_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: simulate: no + %.* + 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 + } + + : reorder + : + : Similar to the above, but the order of the dependents on the command + : line is swapped. + : + { + $clone_cfg; + + $* libbaz libfox/1.1.0 2>>~%EOE%; + %.* + 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/0.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/0.1.0 with 1.2.0 by adding package spec '?libbar == 1.2.0' to command line + 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_prerequisites: rep-postpone dependent libbaz/2.0.0 due to dependency libbar < 2.1.0 and user-specified constraint == 1.2.0 + trace: collect_build_prerequisites: postpone libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): collect rep-postponed libbaz/2.0.0 + trace: collect_build_prerequisites: resume libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + !libbaz 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 libfox libbaz + } + + : dependency + : + : Similar to the above, but the dependency is also specified on the + : command line. + : + { + $clone_cfg; + + $* libbaz libfox/1.1.0 '?libbar' 2>>~%EOE%; + %.* + 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_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 + %.* + trace: evaluate_dependency: libbar/0.1.0: update to libbar/1.2.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_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: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build: libbar/0.1.0 package version needs to be replaced with libbar/1.2.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + 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: apply version replacement for libbar/0.1.0 + trace: collect_build: replacement: libbar/1.2.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/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 libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.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/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libbaz, libfox) + new libbaz/2.0.0 + new libfox/1.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + libbar configured 1.2.0 available 2.1.0 + !libbaz 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 libfox libbaz libbar + } + + : dependency-constr + : + : Similar to the above, but also specify the version constraint. + : + { + $clone_cfg; + + $* libbaz libfox/1.1.0 '?libbar < 3.0.0' 2>>~%EOE%; + %.* + 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_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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/0.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/0.1.0 with 1.2.0 by overwriting constraint '?libbar < 3.0.0' -> '?libbar == 1.2.0' on command line + 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_prerequisites: rep-postpone dependent libbaz/2.0.0 due to dependency libbar < 2.1.0 and user-specified constraint == 1.2.0 + trace: collect_build_prerequisites: postpone libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libfox/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): collect rep-postponed libbaz/2.0.0 + trace: collect_build_prerequisites: resume libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 (required by libbaz, libfox) + new libbaz/2.0.0 + new libfox/1.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + libbar configured !1.2.0 available 2.1.0 + !libbaz 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 libfox libbaz libbar + } + + : to-hold + : + : Similar to the dependency test, but the dependency is specified as + : build-to-hold. + : + { + $clone_cfg; + + $* libbaz libfox/1.1.0 libbar 2>>~%EOE%; + %.* + 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: add libbar/2.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/0.1.0 over libbar/2.1.0 + trace: collect_build: libbar/2.1.0 package version needs to be replaced with libbar/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + 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: apply version replacement for libbar/2.1.0 + trace: collect_build: replacement: libbar/0.1.0 + trace: collect_build: add libbar/0.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.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: collect_build_prerequisites: resume libbar/0.1.0 + trace: collect_build_prerequisites: end libbar/0.1.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/0.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/0.1.0 with 1.2.0 by adding constraint 'libbar' -> 'libbar == 1.2.0' on command line + 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: add libbar/1.2.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/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 libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.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/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: resume libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: execute_plan: simulate: yes + %.* + new libbar/1.2.0 + new libbaz/2.0.0 + new libfox/1.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + !libbar configured 1.2.0 available 2.1.0 + !libbaz 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 libfox libbaz libbar + } + + : to-hold-constr + : + : Similar to the above, but also specify the version constraint. + : + { + $clone_cfg; + + $* libbaz libfox/1.1.0 'libbar < 3.0.0' 2>>~%EOE%; + %.* + 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: add libbar/2.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/0.1.0 over libbar/2.1.0 + trace: collect_build: libbar/2.1.0 package version needs to be replaced with libbar/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + 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: apply version replacement for libbar/2.1.0 + trace: collect_build: replacement: libbar/0.1.0 + trace: collect_build: add libbar/0.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.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: collect_build_prerequisites: resume libbar/0.1.0 + trace: collect_build_prerequisites: end libbar/0.1.0 + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/0.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/0.1.0 with 1.2.0 by overwriting constraint 'libbar < 3.0.0' -> 'libbar == 1.2.0' on command line + 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: add libbar/1.2.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/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 libbaz/2.0.0 + trace: collect_build_prerequisites: begin libfox/1.1.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/1.1.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: resume libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -ar >>EOO; + !libbar configured !1.2.0 available 2.1.0 + !libbaz 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 libfox libbaz libbar + } + + : configured + : + : Similar to replace-dependency but the dependency is already configured + : as built-to-hold. + : + { + $clone_cfg; + + $* libbar 2>!; + + $* libfox/1.1.0 libbaz 2>>~%EOE%; + %.* + 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: skip configured 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 + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.1.0 with some other version + warning: package libbaz/2.0.0 dependency on (libbar < 2.1.0) is forcing downgrade of libbar/2.1.0 to 1.2.0 + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/2.1.0 with 1.2.0 by adding package spec 'libbar == 1.2.0' to command line + 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: add libbar/1.2.0 + trace: collect_build_prerequisites: begin libfox/1.1.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/1.1.0 + trace: collect_build_prerequisites: begin libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: collect_build_prerequisites: end libfox/1.1.0 + trace: collect_build_prerequisites: begin libbaz/2.0.0 + trace: collect_build: pick libbar/1.2.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.2.0 of dependent libbaz/2.0.0 + trace: collect_build_prerequisites: end libbaz/2.0.0 + trace: collect_build_prerequisites: resume libbar/1.2.0 + trace: collect_build_prerequisites: end libbar/1.2.0 + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbox/2.0.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_drop: add libbox + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbax/1.0.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_drop: overwrite libbox + trace: collect_drop: add libbax + trace: execute_plan: simulate: yes + %.* + drop libbax/1.0.0 (unused) + drop libbox/2.0.0 (unused) + downgrade libbar/1.2.0 + new libfox/1.1.0 + new libbaz/2.0.0 + trace: execute_plan: simulate: no + %.* + 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 libbar + } + + : unsatisfied-dependent + : + : Test that not being able to upgrade a dependency to a later version + : which doesn't satisfy an existing dependent, we don't upgrade the + : dependency. + : + { + $clone_cfg; + + $* libfoo 2>!; + + $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 + EOO + + $* libbar 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/2.1.0 + trace: collect_build_prerequisites: skip unsatisfied existing dependent libfoo of dependency libbar/2.1.0 due to constraint (libbar == 1.2.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_dependents: postpone failure for existing dependent libfoo unsatisfied with dependency libbar/2.1.0 (== 1.2.0) + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency libbar/2.1.0 with some other version + trace: try_replace_dependency: replace unsatisfactory dependency version libbar/2.1.0 with 1.2.0 by adding constraint 'libbar' -> 'libbar == 1.2.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.2.0 + trace: collect_build_prerequisites: skip configured libbar/1.2.0 + trace: execute_plan: simulate: yes + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_drop libfoo libbar + } + } + } } : upgrade @@ -3429,7 +6126,20 @@ test.options += --no-progress configured libbar/0.0.2 EOE - clone_cfg = cp --no-cleanup -r ../cfg ./ &cfg/*** + +$pkg_status -ar >>EOO + libfix configured 0.0.1 available 0.0.3 + !libfoo configured !0.0.1 available 1.0.0 + libfix configured 0.0.1 available 0.0.3 + !libbaz configured !0.0.2 available 0.1.0 0.0.4 0.0.3 + !libfoo configured !0.0.1 available 1.0.0 + libfix configured 0.0.1 available 0.0.3 + !libbar configured !0.0.2 available 1.0.0 0.0.3 + !libbaz configured !0.0.2 available 0.1.0 0.0.4 0.0.3 + !libfoo configured !0.0.1 available 1.0.0 + libfix configured 0.0.1 available 0.0.3 + EOO + + clone_cfg = [cmdline] cp --no-cleanup -r ../cfg ./ &cfg/*** : immediate : @@ -3594,6 +6304,17 @@ test.options += --no-progress $* libbar --recursive --yes } + : unavailable-masked + : + : As above but using --mask-repository* instead of rep-remove. + : + { + $clone_cfg; + + $* libbar --mask-repository $rep/t0a --mask-repository $rep/t0b \ + --mask-repository-uuid "$cfg_uuid=($rep/t0c)" --recursive --yes + } + -$pkg_drop libbar libbaz libfoo } @@ -3624,7 +6345,7 @@ test.options += --no-progress $pkg_drop foo } - : multiple-alternatives + : multiple-alts : { +$clone_cfg @@ -3666,9 +6387,7 @@ test.options += --no-progress unpacked fox/1.0.0 configured libbaz/1.1.0 configured fox/1.0.0 - %info: .+libbaz-1.1.0.+ is up to date% %info: .+fox-1.0.0.+ is up to date% - updated libbaz/1.1.0 updated fox/1.0.0 EOE @@ -3851,9 +6570,7 @@ test.options += --no-progress unpacked fox/1.0.0 configured libbaz/1.0.0 configured fox/1.0.0 - %info: .+libbaz-1.0.0.+ is up to date% %info: .+fox-1.0.0.+ is up to date% - updated libbaz/1.0.0 updated fox/1.0.0 EOE @@ -3867,9 +6584,7 @@ test.options += --no-progress unpacked libbaz/1.1.0 configured libbaz/1.1.0 configured fox/1.0.0 - %info: .+libbaz-1.1.0.+ is up to date% %info: .+fox-1.0.0.+ is up to date% - updated libbaz/1.1.0 updated fox/1.0.0 EOE @@ -3887,7 +6602,7 @@ test.options += --no-progress { +$clone_cfg - : reevaluate-alternatives + : reevaluate-alts : { +$clone_cfg @@ -3939,6 +6654,7 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbox + %.* EOO $pkg_drop box; @@ -3946,7 +6662,7 @@ test.options += --no-progress $pkg_drop libbiz } - : change-downgraded-depenency + : change-downgraded-dependency : : Test that libbiz is selected as a dependency since the existing : dependency decision cannot be preserved (libbox is downgraded to @@ -3959,16 +6675,16 @@ test.options += --no-progress $* box +{ config.box.extras=true } ?libbox/0.1.0 2>>~%EOE%; build plan: - new libbiz/1.0.0 (required by box) drop libbox/1.0.0 (unused) + new libbiz/1.0.0 (required by box) reconfigure/update box/1.0.0 config.box.extras=true (user configuration) config.box.backend=libbiz (set by box) disfigured box/1.0.0 disfigured libbox/1.0.0 + purged libbox/1.0.0 fetched libbiz/1.0.0 unpacked libbiz/1.0.0 - purged libbox/1.0.0 configured libbiz/1.0.0 configured box/1.0.0 %info: .+box-1.0.0.+ is up to date% @@ -3984,6 +6700,7 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbiz + %.* EOO $pkg_drop box @@ -3998,7 +6715,21 @@ test.options += --no-progress $* box libbox 2>!; - $* box +{ config.box.extras=true } libbox/0.1.0 2>>~%EOE%; + # While at it, test the reused-only alternative selection mode. + # Also test the postponement of the 'unable to satisfy constraints + # on package' failure. + # + $* box +{ config.box.extras=true } libbox/0.1.0 2>>EOE != 0; + error: unable to satisfy constraints on package libbox + info: command line depends on (libbox == 0.1.0) + info: box/1.0.0 depends on (libbox >= 0.1.1) + info: available libbox/0.1.0 + info: available libbox/1.0.0 + info: while satisfying box/1.0.0 + info: explicitly specify libbox version to manually satisfy both constraints + EOE + + $* box +{ config.box.extras=true } libbox/0.1.0 ?libbiz 2>>~%EOE%; build plan: new libbiz/1.0.0 (required by box) downgrade libbox/0.1.0 @@ -4029,11 +6760,99 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbiz + %.* EOO $pkg_drop box; $pkg_drop libbox } + + : postpone-unable-satisfy + : + : Similar to the above, but this time the postponement of the + : 'unable to satisfy constraints on package' failure ends up with + : downgrading of the unsatisfied dependent (bax). + : + { + $clone_cfg; + + $* bax libbox 2>!; + + $* bax +{ config.bax.extras=true } libbox/0.1.0 bix 2>>~%EOE%; + build plan: + downgrade libbox/0.1.0 + downgrade bax/0.1.0 + config.bax.extras=true (user configuration) + config.bax.backend=libbox (set by bax) + new bix/1.0.0 + disfigured bax/1.0.0 + disfigured libbox/1.0.0 + fetched libbox/0.1.0 + unpacked libbox/0.1.0 + fetched bax/0.1.0 + unpacked bax/0.1.0 + fetched bix/1.0.0 + unpacked bix/1.0.0 + configured libbox/0.1.0 + configured bax/0.1.0 + configured bix/1.0.0 + %info: .+libbox-0.1.0.+ is up to date% + %info: .+bax-0.1.0.+ is up to date% + %info: .+bix-1.0.0.+ is up to date% + updated libbox/0.1.0 + updated bax/0.1.0 + updated bix/1.0.0 + EOE + + $pkg_drop bix; + $pkg_drop bax; + $pkg_drop libbox + } + + : postpone-unable-satisfy-dep + : + : Similar to the above, but the failure postponement ends up with + : downgrading on the next dependency refinement iteration. + : + { + $clone_cfg; + + $* bax libbox bux ?bix/0.1.0 2>!; + + $* bax +{ config.bax.extras=true } libbox/0.1.0 ?bix 2>>~%EOE%; + build plan: + downgrade libbox/0.1.0 + downgrade bax/0.1.0 + config.bax.extras=true (user configuration) + config.bax.backend=libbox (set by bax) + upgrade bix/1.0.0 + reconfigure bux (dependent of bix) + disfigured bux/1.0.0 + disfigured bix/0.1.0 + disfigured bax/1.0.0 + disfigured libbox/1.0.0 + fetched libbox/0.1.0 + unpacked libbox/0.1.0 + fetched bax/0.1.0 + unpacked bax/0.1.0 + fetched bix/1.0.0 + unpacked bix/1.0.0 + configured libbox/0.1.0 + configured bax/0.1.0 + configured bix/1.0.0 + configured bux/1.0.0 + %info: .+libbox-0.1.0.+ is up to date% + %info: .+bax-0.1.0.+ is up to date% + %info: .+bux-1.0.0.+ is up to date% + updated libbox/0.1.0 + updated bax/0.1.0 + updated bux/1.0.0 + EOE + + $pkg_drop bux; + $pkg_drop bax; + $pkg_drop libbox + } } : reconfigure @@ -4069,6 +6888,7 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbox + %.* EOO # Downgrade libbaz to reconfigure box and make sure we still keep @@ -4089,10 +6909,8 @@ test.options += --no-progress configured libbaz/1.0.0 configured box/1.0.0 %info: .+libbiz-1.0.0.+ is up to date% - %info: .+libbaz-1.0.0.+ is up to date% %info: .+box-1.0.0.+ is up to date% updated libbiz/1.0.0 - updated libbaz/1.0.0 updated box/1.0.0 EOE @@ -4106,6 +6924,7 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbox + %.* EOO # Make sure the decision is hold for downgraded dependency either. @@ -4120,9 +6939,7 @@ test.options += --no-progress unpacked libbox/0.1.1 configured libbox/0.1.1 configured box/1.0.0 - %info: .+libbox-0.1.1.+ is up to date% %info: .+box-1.0.0.+ is up to date% - updated libbox/0.1.1 updated box/1.0.0 EOE @@ -4136,6 +6953,7 @@ test.options += --no-progress cat cfg/box-1.0.0/build/config.build >>~%EOO%; %.* config.box.backend = libbox + %.* EOO $pkg_drop box; @@ -4222,6 +7040,147 @@ test.options += --no-progress $pkg_drop fax } + : enable-indirect-dependency + : + { + $clone_cfg; + + test.arguments += --plan ""; + + $* dax 2>>~%EOE%; + new libbaz/1.1.0 (required by dax) + new dax/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched dax/1.0.0 + unpacked dax/1.0.0 + configured libbaz/1.1.0 + configured dax/1.0.0 + %info: .+dax-1.0.0.+ is up to date% + updated dax/1.0.0 + EOE + + $pkg_status -r >>EOO; + !dax configured 1.0.0 + libbaz configured 1.1.0 + EOO + + $* dix 2>>~%EOE%; + new libbar/1.0.0 (required by dax) + reconfigure/update dax/1.0.0 (required by dix) + config.dax.extras=true (set by dix) + new dix/1.0.0 + disfigured dax/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched dix/1.0.0 + unpacked dix/1.0.0 + configured libbar/1.0.0 + configured dax/1.0.0 + configured dix/1.0.0 + %info: .+dix-1.0.0.+ is up to date% + updated dix/1.0.0 + EOE + + $pkg_status -r >>EOO; + !dax configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.1.0 + !dix configured 1.0.0 + !dax configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.1.0 + EOO + + $pkg_drop dax dix + } + + : repoint-enable-indirect-dependency + : + { + $clone_cfg; + + test.arguments += --plan ""; + + $* dax dux ?dix/0.1.0 2>>~%EOE%; + new libbaz/1.1.0 (required by dax) + new dax/1.0.0 + new dix/0.1.0 (required by dux) + new dux/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched dax/1.0.0 + unpacked dax/1.0.0 + fetched dix/0.1.0 + unpacked dix/0.1.0 + fetched dux/1.0.0 + unpacked dux/1.0.0 + configured libbaz/1.1.0 + configured dax/1.0.0 + configured dix/0.1.0 + configured dux/1.0.0 + %info: .+dax-1.0.0.+ is up to date% + %info: .+dux-1.0.0.+ is up to date% + updated dax/1.0.0 + updated dux/1.0.0 + EOE + + $pkg_status -r >>EOO; + !dax configured 1.0.0 + libbaz configured 1.1.0 + !dux configured 1.0.0 + dix configured !0.1.0 available 1.0.0 + EOO + + $cfg_create -d cfg2 --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + $rep_add -d cfg2 $rep/t8a && $rep_fetch -d cfg2; + + $* libbaz +{ --config-name cfg2 } ?dix 2>>~%EOE%; + % new libbaz/1.1.0 \[cfg2.\]% + drop libbaz/1.1.0 (unused) + new libbar/1.0.0 (required by dax) + reconfigure/update dax/1.0.0 (required by dix) + config.dax.extras=true (set by dix) + upgrade dix/1.0.0 + reconfigure dux (dependent of dix) + disfigured dux/1.0.0 + disfigured dix/0.1.0 + disfigured dax/1.0.0 + disfigured libbaz/1.1.0 + %fetched libbaz/1.1.0 \[cfg2.\]% + %unpacked libbaz/1.1.0 \[cfg2.\]% + purged libbaz/1.1.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched dix/1.0.0 + unpacked dix/1.0.0 + %configured libbaz/1.1.0 \[cfg2.\]% + configured libbar/1.0.0 + configured dax/1.0.0 + configured dix/1.0.0 + configured dux/1.0.0 + %info: .+libbaz-1.1.0.+ is up to date% + %info: .+dux-1.0.0.+ is up to date% + %updated libbaz/1.1.0 \[cfg2.\]% + updated dux/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !dax configured 1.0.0 + libbar configured 1.0.0 + !libbaz [cfg2/] configured 1.1.0 + !dux configured 1.0.0 + dix configured 1.0.0 + !dax configured 1.0.0 + libbar configured 1.0.0 + !libbaz [cfg2/] configured 1.1.0 + EOO + + $pkg_drop dux; + $pkg_drop dax + } + : reevaluate-alternatives : { @@ -4326,9 +7285,7 @@ test.options += --no-progress unpacked libbiz/1.0.0 configured libbiz/1.0.0 configured fux/1.0.0 - %info: .+libbiz-1.0.0.+ is up to date% %info: .+fux-1.0.0.+ is up to date% - updated libbiz/1.0.0 updated fux/1.0.0 EOE @@ -4347,7 +7304,7 @@ test.options += --no-progress { +$clone_cfg - +tar (!$posix ? --force-local : ) -xzf $src/t8a/fax-1.0.0.tar.gz &fax-1.0.0/*** + +$tar -xzf $src/t8a/fax-1.0.0.tar.gz &fax-1.0.0/*** +mv fax-1.0.0 fax : change-manifest @@ -4483,45 +7440,51 @@ test.options += --no-progress $backend_configured EOO - # No upgrade after turning a package from the archive-based repo - # into an external package. + # Iteration increment and upgrade after turning a package from the + # archive-based repo into an external package. # $* fax/ 2>>~%EOE%; - %info: .+fax-1.0.0.+ is up to date% - updated fax/1.0.0 + disfigured fax/1.0.0 + using fax/1.0.0#1 (external) + configured fax/1.0.0#1 + %info: .+dir.fax.+ is up to date% + updated fax/1.0.0#1 EOE $pkg_status -r >>"EOO"; - !fax configured !1.0.0 + !fax configured !1.0.0#1 $backend_configured EOO - # Upgrade after the package' buildfile is edited. + # Further upgrade after the package' buildfile is edited. # echo '' >+fax/build/root.build; $* fax/ 2>>~%EOE%; - disfigured fax/1.0.0 - using fax/1.0.0#1 (external) - configured fax/1.0.0#1 + disfigured fax/1.0.0#1 + using fax/1.0.0#2 (external) + configured fax/1.0.0#2 %info: .+fax.+ is up to date% - updated fax/1.0.0#1 + updated fax/1.0.0#2 EOE $pkg_status -r >>"EOO"; - !fax configured !1.0.0#1 + !fax configured !1.0.0#2 $backend_configured EOO # No upgrade if the buildfile is not edited. # $* fax/ 2>>~%EOE%; + disfigured fax/1.0.0#2 + using fax/1.0.0#2 (external) + configured fax/1.0.0#2 %info: .+fax.+ is up to date% - updated fax/1.0.0#1 + updated fax/1.0.0#2 EOE $pkg_status -r >>"EOO"; - !fax configured !1.0.0#1 + !fax configured !1.0.0#2 $backend_configured EOO @@ -4550,37 +7513,40 @@ test.options += --no-progress $backend_configured EOO - # No upgrade after turning a package from the archive-based repo - # into an external package. + # Iteration increment and upgrade after turning a package from the + # archive-based repo into an external package. # $rep_add --type dir fax/ && $rep_fetch; $* fax 2>>~%EOE%; - %info: .+fax-1.0.0.+ is up to date% - updated fax/1.0.0 + disfigured fax/1.0.0 + using fax/1.0.0#1 (external) + configured fax/1.0.0#1 + %info: .+dir.fax.+ is up to date% + updated fax/1.0.0#1 EOE $pkg_status -r >>"EOO"; - !fax configured 1.0.0 + !fax configured 1.0.0#1 $backend_configured EOO - # Upgrade after the package' buildfile is edited. + # Further upgrade after the package' buildfile is edited. # echo '' >+fax/build/root.build; $rep_fetch; $* fax 2>>~%EOE%; - disfigured fax/1.0.0 - using fax/1.0.0#1 (external) - configured fax/1.0.0#1 + disfigured fax/1.0.0#1 + using fax/1.0.0#2 (external) + configured fax/1.0.0#2 %info: .+fax.+ is up to date% - updated fax/1.0.0#1 + updated fax/1.0.0#2 EOE $pkg_status -r >>"EOO"; - !fax configured 1.0.0#1 + !fax configured 1.0.0#2 $backend_configured EOO @@ -4590,11 +7556,11 @@ test.options += --no-progress $* fax 2>>~%EOE%; %info: .+fax.+ is up to date% - updated fax/1.0.0#1 + updated fax/1.0.0#2 EOE $pkg_status -r >>"EOO"; - !fax configured 1.0.0#1 + !fax configured 1.0.0#2 $backend_configured EOO @@ -4643,6 +7609,7 @@ test.options += --no-progress disfigured fax/1.0.0 %disfigured $backend/.+% %purged $backend/.+% + using fax/1.0.0 \(external\) configured sys:$backend/* configured fax/1.0.0 %info: .+fax.+ is up to date% @@ -4670,6 +7637,7 @@ test.options += --no-progress disfigured fax/1.0.0 disfigured libbiz/1.0.0 purged libbiz/1.0.0 + using fax/1.0.0 \(external\) configured fax/1.0.0 %info: .+fax.+ is up to date% updated fax/1.0.0 @@ -4717,6 +7685,436 @@ test.options += --no-progress $pkg_drop fax } } + + : reconfigure-dependent + : + : Test some cases when a dependent needs to be reconfigured due to an + : upgraded dependency. + : + { + +$clone_cfg + + test.arguments += --yes + + : keep-alternative + : + { + $clone_cfg; + + $* tax ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + $* --upgrade --recursive 2>!; # Noop. + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + $* ?libfoo 2>!; # Noop. + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + $* ?libfoo/2.0.0 2>>EOE != 0; + error: package libfoo doesn't satisfy its dependents + info: libfoo/2.0.0 doesn't satisfy tax/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + $pkg_drop tax + } + + : re-evaluate-dependent + : + { + $clone_cfg; + + $* tex ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + cat cfg/tex-1.0.0/build/config.build >>~%EOO%; + %.* + config.tex.libfoo_protocol = 1 + %.* + EOO + + # @@ Strangely, if upgrade with -ur instead of ?libfoo, then status + # prints 'libfoo configured !2.0.0' instead of + # 'libfoo configured 2.0.0'. + # + $* ?libfoo 2>>~%EOE%; + disfigured tex/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libfoo/2.0.0 + configured tex/1.0.0 + %info: .+tex-1.0.0.+ is up to date% + updated tex/1.0.0 + EOE + + cat cfg/tex-1.0.0/build/config.build >>~%EOO%; + %.* + config.tex.libfoo_protocol = 2 + %.* + EOO + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libfoo configured 2.0.0 + EOO + + $pkg_drop tex + } + + : re-evaluate-reflect + : + { + $clone_cfg; + + # @@ The fact that `$* tix` fails as follows but `$* tix ?libfoo` + # doesn't looks confusing: + # + # error: unable to select dependency alternative for package tix/1.0.0 + # info: explicitly specify dependency packages to manually select the alternative + # info: alternative: libfoo + # info: alternative: libfoo + # info: while satisfying tix/1.0.0 + # + # Note: + # + # tix -> libfoo>=2.0.0 reflect{...} | libfoo>=1.0.0 reflect{...} + # + $* tix ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tix configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + cat cfg/tix-1.0.0/build/config.build >>~%EOO%; + %.* + config.tix.reflect = 1 + %.* + EOO + + $* ?libfoo 2>>~%EOE%; + disfigured tix/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libfoo/2.0.0 + configured tix/1.0.0 + %info: .+tix-1.0.0.+ is up to date% + updated tix/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tix configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/tix-1.0.0/build/config.build >>~%EOO%; + %.* + config.tix.reflect = 2 + %.* + EOO + + $pkg_drop tix + } + + : select-alt-with-reflect + : + { + $clone_cfg; + + $* tox ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tox configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + cat cfg/tox-1.0.0/build/config.build >>~%EOO%; + %.* + config.tox.libfoo_protocol = '1 or 2' + %.* + EOO + + $* ?libfoo 2>>~%EOE%; + disfigured tox/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libfoo/2.0.0 + configured tox/1.0.0 + %info: .+tox-1.0.0.+ is up to date% + updated tox/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tox configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/tox-1.0.0/build/config.build >>~%EOO%; + %.* + config.tox.libfoo_protocol = 2 + %.* + EOO + + $pkg_drop tox + } + + : re-evaluate-from + : + { + +$clone_cfg + + : earlier-depends + : + { + $clone_cfg; + + $* tux ?libbox/0.1.0 2>!; + + $pkg_status -r >>EOO; + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 0.1.1 + libfoo configured 2.0.0 + EOO + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 1 + %.* + EOO + + $* ?libbox 2>>~%EOE%; + disfigured tux/1.0.0 + disfigured libbox/0.1.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + configured libbox/1.0.0 + configured tux/1.0.0 + %info: .+tux-1.0.0.+ is up to date% + updated tux/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tux configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 1 + %.* + EOO + + $pkg_drop tux + } + + : later-depends + : + { + $clone_cfg; + + $* twx ?libbiz/0.1.0 2>!; + + $pkg_status -r >>EOO; + !twx configured 1.0.0 + libbiz configured !0.1.0 available 1.0.0 + libbox configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 1 + %.* + EOO + + $* ?libbiz 2>>~%EOE%; + disfigured twx/1.0.0 + disfigured libbiz/0.1.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + configured libbiz/1.0.0 + configured twx/1.0.0 + %info: .+twx-1.0.0.+ is up to date% + updated twx/1.0.0 + EOE + + $pkg_status -r >>EOO; + !twx configured 1.0.0 + libbiz configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/libfoo-2.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo.protocol = 1 + %.* + EOO + + $pkg_drop twx + } + + : same-depends + : + { + $clone_cfg; + + $* tvx ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tvx configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + libfox configured 1.0.0 + EOO + + cat cfg/libfox-1.0.0/build/config.build >>~%EOO%; + %.* + config.libfox.level = 1 + %.* + EOO + + $* ?libfoo 2>>~%EOE%; + disfigured tvx/1.0.0 + disfigured libfoo/1.0.0 + disfigured libfox/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libfox/1.0.0 + configured libfoo/2.0.0 + configured tvx/1.0.0 + %info: .+tvx-1.0.0.+ is up to date% + updated tvx/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tvx configured 1.0.0 + libfoo configured 2.0.0 + libfox configured 1.0.0 + EOO + + cat cfg/libfox-1.0.0/build/config.build >>~%EOO%; + %.* + config.libfox.level = 2 + %.* + EOO + + $pkg_drop tvx + } + } + + : change-alternative + : + { + $clone_cfg; + + $* tpx ?libfoo/1.0.0 2>!; + + $pkg_status -r >>EOO; + !tpx configured 1.0.0 + libfoo configured !1.0.0 available 2.0.0 + EOO + + cat cfg/tpx-1.0.0/build/config.build >>~%EOO%; + %.* + config.tpx.libfoo_protocol = 1 + %.* + EOO + + $* ?libfoo 2>>~%EOE%; + disfigured tpx/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/2.0.0 + unpacked libfoo/2.0.0 + configured libfoo/2.0.0 + configured tpx/1.0.0 + %info: .+tpx-1.0.0.+ is up to date% + updated tpx/1.0.0 + EOE + + $pkg_status -r >>EOO; + !tpx configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/tpx-1.0.0/build/config.build >>~%EOO%; + %.* + config.tpx.libfoo_protocol = 2 + %.* + EOO + + $pkg_drop tpx + } + + : fail-change-unsatisfactory-alternative + : + { + $clone_cfg; + + $* tpx ?libfoo 2>!; + + $pkg_status -r >>EOO; + !tpx configured 1.0.0 + libfoo configured 2.0.0 + EOO + + cat cfg/tpx-1.0.0/build/config.build >>~%EOO%; + %.* + config.tpx.libfoo_protocol = 2 + %.* + EOO + + $* tax 2>>EOE != 0; + error: unable to downgrade package libfoo/2.0.0 to 1.0.0 + info: because configured package tpx/1.0.0 depends on (libfoo >= 2.0.0) + info: package libfoo/1.0.0 required by + tax/1.0.0 (libfoo == 1.0.0) + info: re-run with -v for additional dependency information + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package tpx + info: or explicitly specify package libfoo version to manually satisfy these constraints + EOE + + # @@ Note that the above advises doesn't really work here since the + # tpx package is not re-collected recursively. We should probably + # invent the package-specific --rebuild option to re-collect a + # configured package. + # + $* tax tpx ?libfoo/1.0.0 2>>EOE != 0; + error: unable to downgrade package libfoo/2.0.0 to 1.0.0 + info: because configured package tpx/1.0.0 depends on (libfoo >= 2.0.0) + info: re-run with -v for additional dependency information + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package tpx + info: or explicitly specify package libfoo version to manually satisfy these constraints + EOE + + $pkg_drop tpx + } + } } : version-replacement @@ -4824,10 +8222,14 @@ test.options += --no-progress : replaced with 0.1.0 but without re-collection from scratch since it : does not have any dependencies. : + : Note that the inplace replacement has been disabled for now (see + : build_packages::collect_build() for details). + : { $clone_cfg && $rep_add $rep/t12a && $rep_fetch; - $* libbaz libbar --verbose 5 2>>~%EOE%; +#\ + $* libbaz libbar --verbose 5 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -4847,6 +8249,38 @@ test.options += --no-progress trace: execute_plan: simulate: yes %.* EOE +#\ + + $* libbaz libbar --verbose 5 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbaz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + %.* + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + %.* + trace: collect_build: pick libbaz/0.1.0 over libbaz/1.0.0 + trace: collect_build: libbaz/1.0.0 package version needs to be replaced with libbaz/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: apply version replacement for libbaz/1.0.0 + trace: collect_build: replacement: libbaz/0.1.0 + trace: collect_build: add libbaz/0.1.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: begin libbaz/0.1.0 + trace: collect_build_prerequisites: end libbaz/0.1.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + %.* + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.1.0 of dependent libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + EOE $pkg_status -r >>EOO; !libbaz configured 0.1.0 available 1.0.0 @@ -4897,21 +8331,6 @@ test.options += --no-progress : dropped, which will happen some later execution plan refinement : iteration. : - : @@ This scenario is not supported yet and fails with: - : - : error: unable to upgrade package libbaz/0.1.0 to 1.0.0 - : info: because package libbar depends on (libbaz == 0.1.0) - : info: package libbaz/1.0.0 required by baz - : info: explicitly request up/downgrade of package libbar - : info: or explicitly specify package libbaz version to manually satisfy these constraints - : - : We could probably fix this postponing the constraints check in - : collect_order_dependents() until the final execution plan is produced - : (after all that refinement iterations). We could have an additional - : iteration after all the refinements which would enable the constraint - : check in collect_order_dependents(). - : - if false { $clone_cfg; @@ -4923,12 +8342,15 @@ test.options += --no-progress libbaz configured 0.1.0 available [1.0.0] EOO - $* baz foo/0.1.0 2>|; + $* baz foo/0.1.0 2>!; $pkg_status -r >>EOO; + !foo configured !0.1.0 available 1.0.0 + !baz configured 1.0.0 + libbaz configured 1.0.0 EOO - $pkg_drop foo + $pkg_drop baz foo } } @@ -4937,7 +8359,16 @@ test.options += --no-progress { +$clone_root_cfg && $rep_add $rep/t11a && $rep_fetch - test.arguments += --yes --plan 'build plan:' --verbose 5 --build-option --quiet + test.arguments += --yes --plan='build plan:' --verbose 5 --build-option --quiet + + # Note that on some platforms matching bpkg's stderr using a regular + # expression which contains too may '%.*' lines ends up with the + # regex_error exception with the error_complexity code. To fix that we + # pipe bpkg's stderr through the sed-based pipeline filtering the stream + # content and simplify the stderr-matching regular expressions. + # + filter = [cmdline] sed -e "'"'s/^mkdir -p .*//'"'" | \ + sed -n -e "'"'s/(.+)/\1/p'"'" >&2 : initial-collection : @@ -4949,33 +8380,35 @@ test.options += --no-progress { $clone_cfg; - $* foo fox fux 2>>~%EOE%; + # Dependencies: + # + # foo: depends: libfoo(c) + # + # fox: depends: libfoo(c) + # + # fux: depends: libfoo + # + $* foo fox fux 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add foo/1.0.0 trace: collect_build: add fox/1.0.0 trace: collect_build: add fux/1.0.0 trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone foo/1.0.0 trace: collect_build_prerequisites: begin fox/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/1.0.0 trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone fox/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 since already in cluster {foo fox | libfoo->{foo/1,1 fox/1,1}} trace: collect_build_prerequisites: end fux/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo fox | libfoo->{foo/1,1 fox/1,1}} - %.* trace: collect_build_postponed (1): cfg-negotiate begin {foo fox | libfoo->{foo/1,1 fox/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -4995,7 +8428,9 @@ test.options += --no-progress new libfoo/1.0.0 (required by foo, fox, fux) config.libfoo.extras=true (set by foo) new foo/1.0.0 + config.foo.libfoo_extras=true (set by foo) new fox/1.0.0 + config.fox.libfoo_extras=true (set by fox) new fux/1.0.0 %.* EOE @@ -5017,28 +8452,22 @@ test.options += --no-progress { $clone_cfg; - $* foo fox '?sys:libfoo/*' 2>>~%EOE%; + $* foo fox '?sys:libfoo/*' 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add foo/1.0.0 trace: collect_build: add fox/1.0.0 trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency sys:libfoo/* of dependent foo/1.0.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone foo/1.0.0 trace: collect_build_prerequisites: begin fox/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency sys:libfoo/* of dependent fox/1.0.0 trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone fox/1.0.0 - %.* trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo fox | libfoo->{foo/1,1 fox/1,1}} - %.* trace: collect_build_postponed (1): cfg-negotiate begin {foo fox | libfoo->{foo/1,1 fox/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip system sys:libfoo/* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents @@ -5051,14 +8480,15 @@ test.options += --no-progress trace: collect_build_postponed (1): cfg-negotiate end {foo fox | libfoo->{foo/1,1 fox/1,1}}! trace: collect_build_postponed (1): end {foo fox | libfoo->{foo/1,1 fox/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* build plan: configure sys:libfoo/* (required by foo, fox) config.libfoo.extras=true (expected by foo) new foo/1.0.0 + config.foo.libfoo_extras=true (set by foo) new fox/1.0.0 + config.fox.libfoo_extras=true (set by fox) %.* EOE @@ -5077,27 +8507,23 @@ test.options += --no-progress { $clone_cfg; - $* foo bar baz 2>>~%EOE%; + $* foo bar baz 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add foo/1.0.0 trace: collect_build: add bar/1.0.0 trace: collect_build: add baz/1.0.0 trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone foo/1.0.0 trace: collect_build_prerequisites: begin bar/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 trace: postponed_configurations::add: create {bar | libbar->{bar/1,1}} trace: collect_build_prerequisites: postpone bar/1.0.0 trace: collect_build_prerequisites: begin baz/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent baz/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent baz/1.0.0 trace: postponed_configurations::add: add {baz 1,1: libbar libfoo} to {foo | libfoo->{foo/1,1}} @@ -5105,9 +8531,7 @@ test.options += --no-progress trace: collect_build_prerequisites: postpone baz/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {bar baz foo | libfoo->{baz/1,1 foo/1,1} libbar->{bar/1,1 baz/1,1}} - %.* trace: collect_build_postponed (1): cfg-negotiate begin {bar baz foo | libfoo->{baz/1,1 foo/1,1} libbar->{bar/1,1 baz/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -5132,6 +8556,7 @@ test.options += --no-progress new libfoo/1.0.0 (required by baz, foo) config.libfoo.extras=true (set by baz) new foo/1.0.0 + config.foo.libfoo_extras=true (set by foo) new libbar/1.0.0 (required by bar, baz) config.libbar.extras=true (set by bar) new bar/1.0.0 @@ -5208,6 +8633,573 @@ test.options += --no-progress $pkg_drop fex } + : reconf-existing-dept + : + { + +$clone_cfg + + : no-build-clause + : + { + +$clone_cfg + + : no-config + : + { + $clone_cfg; + + # Dependencies: + # + # fex: depends: fux(c) + # + # fux: depends: libfoo + # + $* fex/0.1.0 fux libfoo 2>!; + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !fux configured 1.0.0 + !libfoo configured 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $* libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !libfoo configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + !libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + !libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $pkg_drop fex fux libfoo + } + + : dept-upgrade + : + { + $clone_cfg; + + # Dependencies: + # + # fux: depends: libfoo ? + # + $* fux/0.1.0 +{ config.fux.extras=true } 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-0.1.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $* fux/0.1.1 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.1.1 available 1.0.0 0.2.0 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-0.1.1/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $pkg_drop fux + } + + : dept-depc + : + { + $clone_cfg; + + # Dependencies: + # + # fux: depends: libfoo + # + $* fux +{ config.fux.extras=true } ?libfoo +{ config.libfoo.extras=true } 2>!; + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + config.libfoo.network = false + %.* + EOO + + $* ?libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + EOO + + $pkg_drop fux + } + + : dept-depc-no-plan + : + : As above but the configuration is not printed (as a part of the + : plan) before the plan execution. + : + { + $clone_cfg; + + # Dependencies: + # + # fux: depends: libfoo + # + $* fux +{ config.fux.extras=true } ?libfoo +{ config.libfoo.extras=true } 2>!; + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + config.libfoo.network = false + EOO + + test.arguments = $regex.filter_out_match($test.arguments, '--plan=.*'); + + $* ?libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-1.0.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + EOO + + $pkg_drop fux + } + } + + : enabled-clause + : + { + $clone_cfg; + + # Dependencies: + # + # fex: depends: fux(c) + # + # fux: depends: libfoo ? + # + $* fex/0.1.0 fux/0.1.0 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-0.1.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $* ?libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-0.1.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + $pkg_drop fex fux + } + + : require-clause + : + { + $clone_cfg; + + # Dependencies: + # + # fex: depends: fux(c) + # + # fux: depends: libfoo(c) ? + # + $* fex/0.1.0 fux/0.2.0 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-0.2.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + config.libfoo.network = false + %.* + EOO + + $* ?libfoo/0.1.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libfoo/1.0.0: update to libfoo/0.1.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent fux/0.2.0 due to dependency libfoo/0.1.0 + trace: collect_build: add fux/0.2.0 + trace: postponed_configurations::add: create {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: reeval fux/0.2.0 + trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 + trace: postponed_configurations::add: add {fux^ 1,1: libfoo} to {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent fux/0.2.0 results in {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluated fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/0.1.0 + trace: collect_build_prerequisites: end libfoo/0.1.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fux/0.2.0 + trace: collect_build_prerequisites: resume fux/0.2.0 + trace: collect_build_prerequisites: end fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {fux^ | libfoo->{fux/1,1}}! + trace: collect_build_postponed (1): end {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + downgrade libfoo/0.1.0 + config.libfoo.extras=true (set by fux) + reconfigure fux/0.2.0 (dependent of libfoo) + config.fux.extras=true (dependent configuration) + reconfigure fex (dependent of fux) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !fux configured !0.2.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.2.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-0.2.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = false + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + EOO + + $* ?fex ?fux libfoo/0.1.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/0.1.0 + trace: collect_build_prerequisites: skip configured libfoo/0.1.0 + trace: execute_plan: simulate: yes + trace: evaluate_dependency: fux/0.2.0: update to fux/1.0.0 + trace: evaluate_dependency: fex/0.1.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval fex/0.1.0 + trace: collect_build_prerequisites: pre-reevaluated fex/0.1.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency fux/1.0.0 of existing dependent fex/0.1.0 due to dependency fux/1.0.0 + trace: postponed_configurations::add: create {fex^ | fux->{fex/1,1}} + trace: collect_drop: fex/0.1.0 package version needs to be replaced with drop + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/0.1.0 + trace: collect_build_prerequisites: skip configured libfoo/0.1.0 + trace: collect_build_prerequisites: skip expected to be dropped existing dependent fex of dependency fux + trace: collect_build_prerequisites: begin fux/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/0.1.0 of dependent fux/1.0.0 + trace: collect_build_prerequisites: end fux/1.0.0 + trace: collect_drop: overwrite fex + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: fux/1.0.0: unused + trace: pkg_build: one of dependency evaluation decisions has changed, re-collecting from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/0.1.0 + trace: collect_build_prerequisites: skip configured libfoo/0.1.0 + trace: collect_drop: overwrite fex + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: fux/0.2.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_drop: overwrite fex + trace: collect_drop: overwrite fux + trace: execute_plan: simulate: yes + %.* + build plan: + drop fux/0.2.0 (unused) + drop fex/0.1.0 (unused) + update libfoo/0.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + EOO + + $pkg_drop libfoo + } + + : require-clause-user-config + : + { + $clone_cfg; + + # Dependencies: + # + # fex: depends: fux(c) + # + # fux: depends: libfoo(c) ? + # + $* fex/0.1.0 fux/0.2.0 +{ config.fux.network=true } 2>!; + + $pkg_status -r >>EOO; + !fux configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + cat cfg/fux-0.2.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = true + %.* + EOO + + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + config.libfoo.network = false + %.* + EOO + + $* ?libfoo/0.1.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libfoo/1.0.0: update to libfoo/0.1.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent fux/0.2.0 due to dependency libfoo/0.1.0 + trace: collect_build: add fux/0.2.0 + trace: postponed_configurations::add: create {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: reeval fux/0.2.0 + trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 + trace: postponed_configurations::add: add {fux^ 1,1: libfoo} to {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent fux/0.2.0 results in {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluated fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/0.1.0 + trace: collect_build_prerequisites: end libfoo/0.1.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fux/0.2.0 + trace: collect_build_prerequisites: resume fux/0.2.0 + trace: collect_build_prerequisites: end fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {fux^ | libfoo->{fux/1,1}}! + trace: collect_build_postponed (1): end {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + downgrade libfoo/0.1.0 + config.libfoo.extras=true (set by fux) + reconfigure fux/0.2.0 (dependent of libfoo) + config.fux.network=true (user configuration) + config.fux.extras=true (dependent configuration) + reconfigure fex (dependent of fux) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !fux configured !0.2.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.2.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + cat cfg/fux-0.2.0/build/config.build >>~%EOO%; + %.* + config.fux.extras = true + config.fux.network = true + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + %.* + EOO + + $* ?fex ?libfoo 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libfoo/0.1.0: update to libfoo/1.0.0 + trace: evaluate_dependency: fex/0.1.0: unused + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent fux/0.2.0 due to dependency libfoo/1.0.0 + trace: collect_build: add fux/0.2.0 + trace: postponed_configurations::add: create {fux^ | libfoo->{fux/1,1}} + trace: collect_drop: overwrite fex + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: pre-reeval fux/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated fux/0.2.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: reeval fux/0.2.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: postponed_configurations::add: add {fux^ 1,1: libfoo} to {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent fux/0.2.0 results in {fux^ | libfoo->{fux/1,1}} + trace: collect_build_prerequisites: re-evaluated fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate begin {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fux/0.2.0 + trace: collect_build_prerequisites: resume fux/0.2.0 + trace: collect_build_prerequisites: end fux/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {fux^ | libfoo->{fux/1,1}}! + trace: collect_build_postponed (1): end {fux^ | libfoo->{fux/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (set by fux) + reconfigure fux/0.2.0 (dependent of libfoo) + config.fux.network=true (user configuration) + config.fux.extras=true (user configuration) + drop fex/0.1.0 (unused) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_drop fux + } + } + : premature : { @@ -5286,143 +9278,67 @@ test.options += --no-progress $pkg_drop fux foo fox } - : bogus-postponment + : bogus-postponement : { $clone_cfg; - $* fux foo fix 2>>~%EOE%; + # Dependencies: + # + # fux: depends: libfoo + # + # foo: depends: libfoo(c) + # + # fix: depends: foo(c) + # + $* fux foo fix 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add fux/1.0.0 trace: collect_build: add foo/1.0.0 trace: collect_build: add fix/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent fux/1.0.0 trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 trace: collect_build_prerequisites: end fux/1.0.0 trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 (collected prematurely), throwing postpone_dependency trace: pkg_build: collection failed due to prematurely collected dependency (libfoo), retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add fux/1.0.0 trace: collect_build: add foo/1.0.0 trace: collect_build: add fix/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 trace: collect_build_prerequisites: end fux/1.0.0 trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone foo/1.0.0 trace: collect_build_prerequisites: begin fix/1.0.0 - %.* trace: collect_build_prerequisites: cannot cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 (collected prematurely), throwing postpone_dependency trace: pkg_build: collection failed due to prematurely collected dependency (foo), retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add fux/1.0.0 trace: collect_build: add foo/1.0.0 trace: collect_build: add fix/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 trace: collect_build_prerequisites: end fux/1.0.0 trace: pkg_build: dep-postpone user-specified foo trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 - trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} - trace: collect_build_prerequisites: postpone fix/1.0.0 - trace: pkg_build: erase bogus postponement libfoo - trace: pkg_build: bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: begin libfoo/1.0.0 - trace: collect_build_prerequisites: end libfoo/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: pkg_build: dep-postpone user-specified foo - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} trace: collect_build_prerequisites: postpone fix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {fix | foo->{fix/1,1}} - %.* trace: collect_build_postponed (1): cfg-negotiate begin {fix | foo->{fix/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin foo/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (libfoo), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: collect_build_prerequisites: begin foo/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 - trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} - trace: collect_build_prerequisites: postpone foo/1.0.0 - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (foo), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: pkg_build: dep-postpone user-specified foo - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 - trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} - trace: collect_build_prerequisites: postpone fix/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {fix | foo->{fix/1,1}} - %.* - trace: collect_build_postponed (1): cfg-negotiate begin {fix | foo->{fix/1,1}} - %.* - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin foo/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone foo/1.0.0 @@ -5432,9 +9348,7 @@ test.options += --no-progress trace: collect_build_prerequisites: end fix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {fix | foo->{fix/1,1}}! trace: collect_build_postponed (2): begin {foo | libfoo->{foo/1,1}} - %.* trace: collect_build_postponed (2): cfg-negotiate begin {foo | libfoo->{foo/1,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -5448,6 +9362,16 @@ test.options += --no-progress trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* + build plan: + new libfoo/1.0.0 (required by foo, fux) + config.libfoo.extras=true (set by foo) + new fux/1.0.0 + new foo/1.0.0 + config.foo.extras=true (set by fix) + config.foo.libfoo_extras=true (set by foo) + new fix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -5474,7 +9398,7 @@ test.options += --no-progress { $clone_cfg; - $* libfoo 2>!; + $* libfoo --verbose 1 2>!; $* foo 2>>~%EOE%; %.* @@ -5530,7 +9454,11 @@ test.options += --no-progress { $clone_cfg; - $* foo 2>>~%EOE%; + # Dependencies: + # + # foo/1.0.0: depends: libfoo(c) + # + $* foo +{ config.foo.extras=true } 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -5558,8 +9486,34 @@ test.options += --no-progress trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* + build plan: + new libfoo/1.0.0 (required by foo) + config.libfoo.extras=true (set by foo) + new foo/1.0.0 + config.foo.extras=true (user configuration) + config.foo.libfoo_extras=true (set by foo) + trace: execute_plan: simulate: no + %.* EOE + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + cat cfg/foo-1.0.0/build/config.build >>~%EOO%; + %.* + config.foo.extras = true + config.foo.libfoo_extras = true + %.* + EOO + + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + %.* + EOO + # Downgrade the dependency. # $* ?libfoo/0.1.0 2>>~%EOE%; @@ -5572,13 +9526,19 @@ test.options += --no-progress %.* trace: pkg_build: refine package collection/plan execution %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 due to dependency libfoo/0.1.0 + trace: collect_build: add foo/1.0.0 trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo^ | libfoo->{foo/1,1}} %.* + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {foo^ | libfoo->{foo/1,1}} - trace: collect_build: add foo/1.0.0 trace: collect_build_prerequisites: reeval foo/1.0.0 %.* trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 @@ -5617,8 +9577,6 @@ test.options += --no-progress %.* configured foo/1.0.0 %.* - updated libfoo/0.1.0 - %.* updated foo/1.0.0 %.* EOE @@ -5628,6 +9586,19 @@ test.options += --no-progress libfoo configured !0.1.0 available 1.0.0 EOO + cat cfg/foo-1.0.0/build/config.build >>~%EOO%; + %.* + config.foo.extras = true + config.foo.libfoo_extras = true + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + %.* + EOO + # Reconfigure the dependency and hold. # $* libfoo/0.1.0 +{ config.libfoo.extras=true } 2>>~%EOE%; @@ -5636,14 +9607,19 @@ test.options += --no-progress %.* trace: collect_build: add libfoo/0.1.0 %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 due to dependency libfoo/0.1.0 + trace: collect_build: add foo/1.0.0 trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo^ | libfoo->{foo/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 %.* - trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {foo^ | libfoo->{foo/1,1}} trace: collect_build_prerequisites: reeval foo/1.0.0 %.* trace: postponed_configurations::add: add {foo^ 1,1: libfoo} to {foo^ | libfoo->{foo/1,1}} @@ -5688,6 +9664,19 @@ test.options += --no-progress !libfoo configured !0.1.0 available 1.0.0 EOO + cat cfg/foo-1.0.0/build/config.build >>~%EOO%; + %.* + config.foo.extras = true + config.foo.libfoo_extras = true + %.* + EOO + + cat cfg/libfoo-0.1.0/build/config.build >>~%EOO%; + %.* + config.libfoo.extras = true + %.* + EOO + # Upgrade the dependency and unhold existing dependent. # $* libfoo ?foo 2>>~%EOE%; @@ -5696,11 +9685,17 @@ test.options += --no-progress %.* trace: collect_build: add libfoo/1.0.0 %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent foo/1.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent foo/1.0.0 due to dependency libfoo/1.0.0 trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo^ | libfoo->{foo/1,1}} %.* + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {foo^ | libfoo->{foo/1,1}} trace: collect_build_prerequisites: reeval foo/1.0.0 %.* @@ -5725,8 +9720,15 @@ test.options += --no-progress %.* trace: evaluate_dependency: foo/1.0.0: unused %.* - trace: pkg_build: refine package collection/plan execution + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libfoo/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 %.* + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent foo/1.0.0 due to dependency libfoo/1.0.0 + trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} trace: collect_drop: foo/1.0.0 package version needs to be replaced with drop trace: pkg_build: collection failed due to package version replacement, retry from scratch %.* @@ -5743,6 +9745,7 @@ test.options += --no-progress %.* build plan: upgrade libfoo/1.0.0 + config.libfoo.extras=true (user configuration) drop foo/1.0.0 (unused) %.* disfigured foo/1.0.0 @@ -5765,9 +9768,240 @@ test.options += --no-progress !libfoo configured 1.0.0 EOO + cat cfg/libfoo-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libfoo.extras = true + %.* + EOO + $pkg_drop libfoo } + : multiple-dependents + : + { + $clone_cfg; + + # Dependencies: + # + # foo/1.0.0: depends: libfoo(c) + # fox/1.0.0: depends: libfoo(c) + # + $* libfoo/0.1.0 foo/1.0.0 fox/1.0.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !libfoo configured !0.1.0 available 1.0.0 + !foo configured !1.0.0 + !libfoo configured !0.1.0 available 1.0.0 + !fox configured !1.0.0 + !libfoo configured !0.1.0 available 1.0.0 + EOO + + $* libfoo 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval fox/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated fox/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent foo/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent fox/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add fox/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval fox/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated fox/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: reeval foo/1.0.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} to {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent foo/1.0.0 results in {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: re-evaluated foo/1.0.0 + trace: collect_build_prerequisites: reeval fox/1.0.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: postponed_configurations::add: add {fox^ 1,1: libfoo} to {foo^ | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent fox/1.0.0 results in {foo^ fox^ | libfoo->{foo/1,1 fox/1,1}} + trace: collect_build_prerequisites: re-evaluated fox/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {foo^ fox^ | libfoo->{foo/1,1 fox/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fox/1.0.0 + trace: collect_build_prerequisites: resume fox/1.0.0 + trace: collect_build_prerequisites: end fox/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo^ fox^ | libfoo->{foo/1,1 fox/1,1}}! + trace: collect_build_postponed (1): end {foo^ | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (set by foo) + reconfigure fox/1.0.0 (dependent of libfoo) + config.fox.libfoo_extras=true (set by fox) + reconfigure foo/1.0.0 (dependent of libfoo) + config.foo.libfoo_extras=true (set by foo) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !foo configured !1.0.0 + !libfoo configured 1.0.0 + !fox configured !1.0.0 + !libfoo configured 1.0.0 + EOO + + $pkg_drop libfoo foo fox + } + + : postpone-existing-dependency + : + { + $clone_cfg; + + # Dependencies: + # + # bus: depends: foo(c) + # + # fix: depends: foo == 0.1.0 + # + # biz/0.1.0: depends: libbiz == 0.1.0 + # + # libbiz/1.0.0: depends: libbar + # libbiz/0.1.0: + # + # foo: depends: libfoo(c) + # + $* bus/0.1.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !bus configured !0.1.0 available 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* fix/0.1.0 libbiz biz/0.1.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add fix/0.1.0 + trace: collect_build: add libbiz/1.0.0 + trace: collect_build: add biz/0.1.0 + trace: collect_build_prerequisites: begin fix/0.1.0 + trace: collect_build: add foo/0.1.0 + info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency foo/0.1.0 of dependent fix/0.1.0 + trace: collect_build_prerequisites: pre-reeval bus/0.1.0 + trace: collect_build_prerequisites: pre-reevaluated bus/0.1.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency foo/0.1.0 of existing dependent bus/0.1.0 due to dependency foo/0.1.0 + trace: collect_build: add bus/0.1.0 + trace: postponed_configurations::add: create {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: end fix/0.1.0 + trace: collect_build_prerequisites: begin libbiz/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbiz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end libbiz/1.0.0 + trace: collect_build_prerequisites: begin biz/0.1.0 + trace: collect_build: pick libbiz/0.1.0 over libbiz/1.0.0 + trace: collect_build: libbiz/1.0.0 package version needs to be replaced with libbiz/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add fix/0.1.0 + trace: collect_build: apply version replacement for libbiz/1.0.0 + trace: collect_build: replacement: libbiz/0.1.0 + trace: collect_build: add libbiz/0.1.0 + trace: collect_build: add biz/0.1.0 + trace: collect_build_prerequisites: begin fix/0.1.0 + trace: collect_build: add foo/0.1.0 + info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency foo/0.1.0 of dependent fix/0.1.0 + trace: collect_build_prerequisites: pre-reeval bus/0.1.0 + trace: collect_build_prerequisites: pre-reevaluated bus/0.1.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency foo/0.1.0 of existing dependent bus/0.1.0 due to dependency foo/0.1.0 + trace: collect_build: add bus/0.1.0 + trace: postponed_configurations::add: create {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: end fix/0.1.0 + trace: collect_build_prerequisites: begin libbiz/0.1.0 + trace: collect_build_prerequisites: end libbiz/0.1.0 + trace: collect_build_prerequisites: begin biz/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbiz/0.1.0 of dependent biz/0.1.0 + trace: collect_build_prerequisites: end biz/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: pre-reeval bus/0.1.0 + trace: collect_build_prerequisites: pre-reevaluated bus/0.1.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: reeval bus/0.1.0 + trace: collect_build: pick foo/0.1.0 over foo/1.0.0 + trace: postponed_configurations::add: add {bus^ 1,1: foo} to {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bus/0.1.0 results in {bus^ | foo->{bus/1,1}} + trace: collect_build_prerequisites: re-evaluated bus/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bus^ | foo->{bus/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin foo/0.1.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/0.1.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/0.1.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bus/0.1.0 + trace: collect_build_prerequisites: resume bus/0.1.0 + trace: collect_build_prerequisites: end bus/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {bus^ | foo->{bus/1,1}}! + trace: collect_build_postponed (2): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent foo of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent foo/0.1.0 + trace: collect_build_prerequisites: resume foo/0.1.0 + trace: collect_build_prerequisites: end foo/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (2): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): end {bus^ | foo->{bus/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + downgrade foo/0.1.0 (required by bus, fix) + config.foo.extras=true (set by bus) + reconfigure bus/0.1.0 (dependent of foo) + config.bus.foo_extras=true (set by bus) + new fix/0.1.0 + new libbiz/0.1.0 + new biz/0.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bus configured !0.1.0 available 1.0.0 + foo configured 0.1.0 available 1.0.0 0.2.0 + libfoo configured 1.0.0 + !fix configured !0.1.0 available 1.0.0 + foo configured 0.1.0 available 1.0.0 0.2.0 + libfoo configured 1.0.0 + !libbiz configured 0.1.0 available 1.0.0 + !biz configured !0.1.0 available 1.0.0 + !libbiz configured 0.1.0 available 1.0.0 + EOO + + $pkg_drop bus fix libbiz biz + } + : postpone-existing : { @@ -5781,61 +10015,57 @@ test.options += --no-progress # fix/0.1.0: depends: foo == 0.1.0 # foo/0.1.0: depends: libfoo(c) # - $* fix 2>!; + $* fix --verbose 1 2>!; - $* libfoo/0.1.0 fix/0.1.0 2>>~%EOE%; + $pkg_status -r >>EOO; + !fix configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* libfoo/0.1.0 fix/0.1.0 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add fix/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 due to dependency libfoo/0.1.0 + trace: collect_build: add foo/1.0.0 trace: postponed_configurations::add: create {foo^ | libfoo->{foo/1,1}} - %.* trace: collect_build_prerequisites: begin fix/0.1.0 - %.* + trace: collect_build: pick foo/0.1.0 over foo/1.0.0 + trace: collect_build: foo/1.0.0 package version needs to be replaced with foo/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add fix/0.1.0 - %.* trace: collect_build_prerequisites: skip expected to be built existing dependent foo of dependency libfoo trace: collect_build_prerequisites: begin libfoo/0.1.0 trace: collect_build_prerequisites: end libfoo/0.1.0 - %.* trace: collect_build_prerequisites: begin fix/0.1.0 - %.* trace: collect_build: apply version replacement for foo/0.1.0 trace: collect_build: replacement: foo/0.1.0 trace: collect_build: add foo/0.1.0 info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 trace: collect_build_prerequisites: no cfg-clause for dependency foo/0.1.0 of dependent fix/0.1.0 - %.* trace: collect_build_prerequisites: skip being built existing dependent fix of dependency foo trace: collect_build_prerequisites: begin foo/0.1.0 - %.* trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/0.1.0 of dependent foo/0.1.0 (collected prematurely), throwing postpone_dependency trace: pkg_build: collection failed due to prematurely collected dependency (libfoo), retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add fix/0.1.0 trace: pkg_build: dep-postpone user-specified libfoo - %.* trace: collect_build_prerequisites: begin fix/0.1.0 - %.* trace: collect_build: apply version replacement for foo/0.1.0 trace: collect_build: replacement: foo/0.1.0 trace: collect_build: add foo/0.1.0 info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 trace: collect_build_prerequisites: no cfg-clause for dependency foo/0.1.0 of dependent fix/0.1.0 - %.* trace: collect_build_prerequisites: skip being built existing dependent fix of dependency foo trace: collect_build_prerequisites: begin foo/0.1.0 - %.* trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of dependent foo/0.1.0 trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} @@ -5843,10 +10073,8 @@ test.options += --no-progress trace: collect_build_prerequisites: end fix/0.1.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} - %.* trace: collect_build_postponed (1): skip being built existing dependent foo of dependency libfoo trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/0.1.0 trace: collect_build_prerequisites: end libfoo/0.1.0 @@ -5857,15 +10085,22 @@ test.options += --no-progress trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade libfoo/0.1.0 + config.libfoo.extras=true (set by foo) + downgrade foo/0.1.0 (required by fix) + config.foo.extras=true (dependent configuration) + downgrade fix/0.1.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; !libfoo configured !0.1.0 available 1.0.0 !fix configured !0.1.0 available 1.0.0 - foo configured 0.1.0 available 1.0.0 + foo configured 0.1.0 available 1.0.0 0.2.0 !libfoo configured !0.1.0 available 1.0.0 EOO @@ -5888,56 +10123,51 @@ test.options += --no-progress # tex: depends: libbar(c) # depends: libfoo(c) # - $* tex 2>!; + $* tex --verbose 1 2>!; + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO - $* libfoo/0.1.0 libbar/0.1.0 2>>~%EOE%; + $* libfoo/0.1.0 libbar/0.1.0 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add libbar/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent tex/1.0.0 - trace: postponed_configurations::add: create {tex^ | libfoo->{tex/2,1}} - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of existing dependent tex/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of existing dependent tex/1.0.0 due to dependency libfoo/0.1.0 + trace: collect_build: add tex/1.0.0 trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: pkg_build: dep-postpone user-specified libbar since already in cluster {tex^ | libbar->{tex/1,1}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tex^ | libfoo->{tex/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (1): cannot re-evaluate dependent tex to dependency index 2 due to earlier dependency index 1 in {tex^ | libbar->{tex/1,1}}, skipping {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (0): postpone cfg-negotiation of {tex^ | libfoo->{tex/2,1}} trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} - %.* - trace: collect_build: add tex/1.0.0 trace: collect_build_prerequisites: reeval tex/1.0.0 - %.* trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} trace: collect_build_prerequisites: re-evaluated tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libbar/0.1.0 trace: collect_build_prerequisites: end libbar/0.1.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tex/1.0.0 trace: collect_build_prerequisites: resume tex/1.0.0 - %.* trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of dependent tex/1.0.0 - trace: postponed_configurations::add: add {tex 2,1: libfoo} to {tex^ | libfoo->{tex/2,1}} + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} trace: collect_build_prerequisites: postpone tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! - trace: collect_build_postponed (2): begin {tex^ | libfoo->{tex/2,1}} - %.* + trace: collect_build_postponed (2): begin {tex | libfoo->{tex/2,1}} trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo - trace: collect_build_postponed (2): cfg-negotiate begin {tex^ | libfoo->{tex/2,1}} - %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tex | libfoo->{tex/2,1}} trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/0.1.0 trace: collect_build_prerequisites: end libfoo/0.1.0 @@ -5945,11 +10175,10 @@ test.options += --no-progress trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/1.0.0 trace: collect_build_prerequisites: resume tex/1.0.0 trace: collect_build_prerequisites: end tex/1.0.0 - trace: collect_build_postponed (2): cfg-negotiate end {tex^ | libfoo->{tex/2,1}}! - trace: collect_build_postponed (2): end {tex^ | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (2): end {tex | libfoo->{tex/2,1}} trace: collect_build_postponed (1): end {tex^ | libbar->{tex/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* build plan: @@ -5957,33 +10186,9 @@ test.options += --no-progress config.libfoo.extras=true (set by tex) downgrade libbar/0.1.0 config.libbar.extras=true (set by tex) - reconfigure tex/1.0.0 (dependent of libbar) - %.* - disfigured tex/1.0.0 - %.* - disfigured libbar/1.0.0 - %.* - disfigured libfoo/1.0.0 - %.* - fetched libfoo/0.1.0 - %.* - unpacked libfoo/0.1.0 - %.* - fetched libbar/0.1.0 - %.* - unpacked libbar/0.1.0 - %.* - configured libfoo/0.1.0 - %.* - configured libbar/0.1.0 - %.* - configured tex/1.0.0 - %.* - updated libfoo/0.1.0 - %.* - updated libbar/0.1.0 - %.* - updated tex/1.0.0 + reconfigure tex/1.0.0 (dependent of libbar, libfoo) + config.tex.libfoo_extras=true (set by tex) + trace: execute_plan: simulate: no %.* EOE @@ -6010,86 +10215,55 @@ test.options += --no-progress # # bar: depends: libbar == 0.1.0 (c) # - $* tex 2>!; + $* tex --verbose 1 2>!; - $* libfoo/0.1.0 bar/0.1.0 2>>~%EOE%; + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* libfoo/0.1.0 bar/0.1.0 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add bar/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent tex/1.0.0 - trace: postponed_configurations::add: create {tex^ | libfoo->{tex/2,1}} - trace: collect_build_prerequisites: begin bar/0.1.0 - %.* - trace: collect_build: add libbar/0.1.0 - info: package bar dependency on (libbar == 0.1.0) is forcing downgrade of libbar/1.0.0 to 0.1.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of dependent bar/0.1.0 - trace: postponed_configurations::add: create {bar | libbar->{bar/1,1}} - trace: collect_build_prerequisites: postpone bar/0.1.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tex^ | libfoo->{tex/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libfoo->{tex/2,1}} - %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libfoo/0.1.0 trace: collect_build: add tex/1.0.0 - trace: collect_build_prerequisites: reeval tex/1.0.0 - %.* + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: begin bar/0.1.0 trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 - %.* - trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 - trace: postponed_configurations::add: add {tex^ 2,1: libfoo} to {tex^ | libfoo->{tex/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libfoo->{tex/2,1}} - trace: collect_build_prerequisites: re-evaluated tex/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libfoo->{tex/2,1}} - %.* - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin libfoo/0.1.0 - trace: collect_build_prerequisites: end libfoo/0.1.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tex/1.0.0 - trace: collect_build_prerequisites: resume tex/1.0.0 - trace: collect_build_prerequisites: end tex/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libfoo->{tex/2,1}}! - trace: collect_build_postponed (2): begin {bar | libbar->{bar/1,1}} - %.* - trace: collect_build_postponed (2): re-evaluate existing dependents for {bar | libbar->{bar/1,1}} - trace: collect_build_postponed (2): cannot re-evaluate dependent tex to dependency index 1 due to greater dependency index 2 in {tex^ | libfoo->{tex/2,1}}!, throwing postpone_position - trace: pkg_build: collection failed due to earlier dependency position, retry from scratch - %.* + trace: collect_build: libbar/1.0.0 package version needs to be replaced with libbar/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libfoo/0.1.0 trace: collect_build: add bar/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent tex/1.0.0 - trace: postponed_configurations::add: create {tex^ | libfoo->{tex/2,1}} - trace: collect_build_prerequisites: begin bar/0.1.0 - %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: apply version replacement for libbar/1.0.0 + trace: collect_build: replacement: libbar/0.1.0 trace: collect_build: add libbar/0.1.0 - info: package bar dependency on (libbar == 0.1.0) is forcing downgrade of libbar/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of existing dependent tex/1.0.0 due to dependency libfoo/0.1.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: begin bar/0.1.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of dependent bar/0.1.0 - trace: postponed_configurations::add: create {bar | libbar->{bar/1,1}} + trace: postponed_configurations::add: add {bar 1,1: libbar} to {tex^ | libbar->{tex/1,1}} trace: collect_build_prerequisites: postpone bar/0.1.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tex^ | libfoo->{tex/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (1): pos-postpone existing dependent tex re-evaluation to dependency index 2 due to recorded index 1, skipping {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (0): postpone cfg-negotiation of {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (1): begin {bar | libbar->{bar/1,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {bar | libbar->{bar/1,1}} - trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): begin {bar tex^ | libbar->{bar/1,1 tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar tex^ | libbar->{bar/1,1 tex/1,1}} trace: collect_build_prerequisites: reeval tex/1.0.0 - %.* trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 - trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {bar | libbar->{bar/1,1}} + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {bar tex^ | libbar->{bar/1,1 tex/1,1}} trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {bar tex^ | libbar->{bar/1,1 tex/1,1}} trace: collect_build_prerequisites: re-evaluated tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {bar tex^ | libbar->{bar/1,1 tex/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libbar/0.1.0 trace: collect_build_prerequisites: end libbar/0.1.0 @@ -6099,17 +10273,14 @@ test.options += --no-progress trace: collect_build_prerequisites: end bar/0.1.0 trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tex/1.0.0 trace: collect_build_prerequisites: resume tex/1.0.0 - %.* trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of dependent tex/1.0.0 - trace: postponed_configurations::add: add {tex 2,1: libfoo} to {tex^ | libfoo->{tex/2,1}} + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} trace: collect_build_prerequisites: postpone tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {bar tex^ | libbar->{bar/1,1 tex/1,1}}! - trace: collect_build_postponed (2): begin {tex^ | libfoo->{tex/2,1}} - %.* + trace: collect_build_postponed (2): begin {tex | libfoo->{tex/2,1}} trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo - trace: collect_build_postponed (2): cfg-negotiate begin {tex^ | libfoo->{tex/2,1}} - %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tex | libfoo->{tex/2,1}} trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/0.1.0 trace: collect_build_prerequisites: end libfoo/0.1.0 @@ -6117,13 +10288,22 @@ test.options += --no-progress trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/1.0.0 trace: collect_build_prerequisites: resume tex/1.0.0 trace: collect_build_prerequisites: end tex/1.0.0 - trace: collect_build_postponed (2): cfg-negotiate end {tex^ | libfoo->{tex/2,1}}! - trace: collect_build_postponed (2): end {tex^ | libfoo->{tex/2,1}} - trace: collect_build_postponed (1): end {bar | libbar->{bar/1,1}} + trace: collect_build_postponed (2): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (2): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (1): end {bar tex^ | libbar->{bar/1,1 tex/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade libfoo/0.1.0 + config.libfoo.extras=true (set by tex) + downgrade libbar/0.1.0 (required by bar, tex) + config.libbar.extras=true (set by bar) + reconfigure tex/1.0.0 (dependent of libbar, libfoo) + config.tex.libfoo_extras=true (set by tex) + new bar/0.1.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -6150,7 +10330,7 @@ test.options += --no-progress # # baz: depends: {libbar libfoo} == 0.1.0 (c) # - $* tex 2>!; + $* tex --verbose 1 2>!; $* baz/0.1.0 2>>~%EOE%; %.* @@ -6236,122 +10416,81 @@ test.options += --no-progress # # baz: depends: {libbar libfoo} (c) # - $* bax baz 2>!; + $* bax baz --verbose 1 2>!; - $* libbox/0.1.0 2>>~%EOE%; + $* libbox/0.1.0 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libbox/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of existing dependent bax/1.0.0 - trace: postponed_configurations::add: create {bax^ | libbox->{bax/2,1}} - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {bax^ | libbox->{bax/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libbox->{bax/2,1}} - %.* - trace: collect_build: add bax/1.0.0 - trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 trace: collect_build: add libfoo/1.0.0 - %.* - trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 - trace: collect_build: add libbar/1.0.0 - trace: postponed_configurations::add: add {bax^ 2,1: libbox libbar} to {bax^ | libbox->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluated bax/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - %.* - trace: collect_build: add baz/1.0.0 - trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* - trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libbox->{bax/2,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}} - trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libfoo - trace: collect_build_postponed (1): cannot re-evaluate dependent bax to dependency index 1 since it is already re-evaluated to greater index 2 in {bax^ baz^ | libbox->{bax/2,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}}, throwing postpone_position - trace: pkg_build: collection failed due to earlier dependency position, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbox/0.1.0 - %.* - trace: collect_build_prerequisites: replace dependency at index 2 of existing dependent bax/1.0.0 with dependency libfoo/1.0.0 at index 1 - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 due to dependency libbox/0.1.0 + trace: collect_build: add bax/1.0.0 trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} - trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 trace: collect_build: add baz/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? - %.* + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1}}?, throwing retry_configuration trace: collect_build_postponed (0): cfg-negotiation of {bax^ | libfoo->{bax/1,1}} failed due to dependent bax, refining configuration trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} - trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 trace: collect_build: add baz/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: begin libbox/0.1.0 @@ -6364,9 +10503,15 @@ test.options += --no-progress trace: collect_build_postponed (1): cfg-negotiate end {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1}}! trace: collect_build_postponed (1): end {bax^ | libfoo->{bax/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade libbox/0.1.0 + config.libbox.extras=true (set by bax) + reconfigure bax/1.0.0 (dependent of libbox, libfoo) + config.bax.libfoo_extras=true (set by bax) + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -6397,15 +10542,13 @@ test.options += --no-progress # # box: depends: libbox == 0.1.0 (c) # - $* bax baz 2>!; + $* bax baz --verbose 1 2>!; - $* box/0.1.0 2>>~%EOE%; + $* box/0.1.0 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add box/0.1.0 trace: collect_build_prerequisites: begin box/0.1.0 - %.* trace: collect_build: add libbox/0.1.0 info: package box dependency on (libbox == 0.1.0) is forcing downgrade of libbox/1.0.0 to 0.1.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent box/0.1.0 @@ -6413,123 +10556,86 @@ test.options += --no-progress trace: collect_build_prerequisites: postpone box/0.1.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} - %.* - trace: collect_build: add bax/1.0.0 - trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 trace: collect_build: add libfoo/1.0.0 - %.* - trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 - trace: collect_build: add libbar/1.0.0 - trace: postponed_configurations::add: add {bax^ 2,1: libbox libbar} to {box | libbox->{box/1,1}} - trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluated bax/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}} - %.* - trace: collect_build: add baz/1.0.0 - trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* - trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}} - trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libfoo - trace: collect_build_postponed (1): cannot re-evaluate dependent bax to dependency index 1 since it is already re-evaluated to greater index 2 in {bax^ baz^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}}, throwing postpone_position - trace: pkg_build: collection failed due to earlier dependency position, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add box/0.1.0 - trace: collect_build_prerequisites: begin box/0.1.0 - %.* - trace: collect_build: add libbox/0.1.0 - info: package box dependency on (libbox == 0.1.0) is forcing downgrade of libbox/1.0.0 to 0.1.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent box/0.1.0 - trace: postponed_configurations::add: create {box | libbox->{box/1,1}} - trace: collect_build_prerequisites: postpone box/0.1.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} - %.* trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} - trace: collect_build_postponed (1): pos-postpone existing dependent bax re-evaluation to dependency index 2 due to recorded index 1, skipping {box | libbox->{box/1,1}} - trace: collect_build_postponed (0): replace dependency at index 2 of existing dependent bax/1.0.0 with dependency libfoo/1.0.0 at index 1 - trace: collect_build: add libfoo/1.0.0 - trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} - trace: collect_build_postponed (0): postpone cfg-negotiation of {box | libbox->{box/1,1}} - trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* - trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/0.1.0 + trace: collect_build_prerequisites: end libbox/0.1.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.1.0 + trace: collect_build_prerequisites: resume box/0.1.0 + trace: collect_build_prerequisites: end box/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} trace: collect_build: add baz/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar - trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar - trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} - %.* - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent baz of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 - trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? - trace: postponed_configurations::add: merge {box | libbox->{box/1,1}} into {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1 box/1,1}}?, throwing merge_configuration - trace: collect_build_postponed (0): cfg-negotiation of {bax^ | libfoo->{bax/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1 box/1,1}}? - trace: collect_build_postponed (0): force-merge {box | libbox->{box/1,1}} into {bax^ | libfoo->{bax/1,1}} - trace: collect_build_postponed (1): begin {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: postponed_configurations::add: merge {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? into {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax baz^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 baz/1,1} libfoo->{bax/1,1 baz/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax baz^ box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 baz/1,1} libfoo->{bax/1,1 baz/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* - trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} (shadow cluster-based) - trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {box | libbox->{box/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ box | libbox->{box/1,1} libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ box | libbox->{box/1,1} libfoo->{bax/1,1}} trace: collect_build: add baz/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 - trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} (shadow cluster-based) - trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbox->{box/1,1} libbar->{baz/1,1}} + trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ box | libbox->{box/1,1} libfoo->{bax/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ box | libbox->{box/1,1} libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar - trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbox->{box/1,1} libbar->{baz/1,1}} - %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ box | libbox->{box/1,1} libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: begin libbox/0.1.0 trace: collect_build_prerequisites: end libbox/0.1.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 - trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbox->{box/1,1} libbar->{baz/1,1}}? (shadow cluster-based) + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ box | libbox->{box/1,1} libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? (shadow cluster-based) trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated trace: collect_build_prerequisites: dependency libbox/0.1.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping @@ -6540,12 +10646,19 @@ test.options += --no-progress trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.1.0 trace: collect_build_prerequisites: resume box/0.1.0 trace: collect_build_prerequisites: end box/0.1.0 - trace: collect_build_postponed (1): cfg-negotiate end {bax^ baz^ box | libfoo->{bax/1,1 baz/1,1} libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 baz/1,1}}! - trace: collect_build_postponed (1): end {bax^ box | libfoo->{bax/1,1} libbox->{box/1,1}} + trace: collect_build_postponed (1): cfg-negotiate end {bax^ baz^ box | libbox->{bax/2,1 box/1,1} libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1}}! + trace: collect_build_postponed (1): end {box | libbox->{box/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade libbox/0.1.0 (required by bax, box) + config.libbox.extras=true (set by box) + reconfigure bax/1.0.0 (dependent of libbox) + config.bax.libfoo_extras=true (set by bax) + new box/0.1.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -6556,7 +10669,7 @@ test.options += --no-progress !baz configured 1.0.0 libbar configured 1.0.0 libfoo configured 1.0.0 - !box configured !0.1.0 available 1.0.0 + !box configured !0.1.0 available 1.0.0 0.2.0 libbox configured 0.1.0 available 1.0.0 EOO @@ -6575,118 +10688,89 @@ test.options += --no-progress # # baz: depends: {libbar libfoo} (c) # - $* bax baz 2>!; + $* bax baz --verbose 1 2>!; - $* libbox/0.1.0 ?baz 2>>~%EOE%; - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbox/0.1.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of existing dependent bax/1.0.0 - trace: postponed_configurations::add: create {bax^ | libbox->{bax/2,1}} - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {bax^ | libbox->{bax/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libbox->{bax/2,1}} - %.* - trace: collect_build: add bax/1.0.0 - trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - %.* - trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 - trace: collect_build: add libbar/1.0.0 - trace: postponed_configurations::add: add {bax^ 2,1: libbox libbar} to {bax^ | libbox->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluated bax/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar - trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* - trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libbox->{bax/2,1} libbar->{bax/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libbox->{bax/2,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}} - trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* - trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libfoo - trace: collect_build_postponed (1): cannot re-evaluate dependent bax to dependency index 1 since it is already re-evaluated to greater index 2 in {bax^ baz^ | libbox->{bax/2,1} libbar->{bax/2,1 baz/1,1} libfoo->{baz/1,1}}, throwing postpone_position - trace: pkg_build: collection failed due to earlier dependency position, retry from scratch + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* libbox/0.1.0 ?baz 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libbox/0.1.0 - %.* - trace: collect_build_prerequisites: replace dependency at index 2 of existing dependent bax/1.0.0 with dependency libfoo/1.0.0 at index 1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 due to dependency libbox/0.1.0 + trace: collect_build: add bax/1.0.0 trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} - trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? - %.* + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1}}?, throwing retry_configuration trace: collect_build_postponed (0): cfg-negotiation of {bax^ | libfoo->{bax/1,1}} failed due to dependent bax, refining configuration trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval baz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated baz/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} - trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 trace: collect_build_prerequisites: reeval baz/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: postponed_configurations::add: add {baz^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent baz/1.0.0 results in {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} trace: collect_build_prerequisites: re-evaluated baz/1.0.0 - %.* trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (1): skip being built existing dependent baz of dependency libbar trace: collect_build_postponed (1): cfg-negotiate begin {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{baz/1,1}}? + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: begin libbox/0.1.0 @@ -6699,54 +10783,34 @@ test.options += --no-progress trace: collect_build_postponed (1): cfg-negotiate end {bax^ baz^ | libfoo->{bax/1,1 baz/1,1} libbar->{bax/2,1 baz/1,1} libbox->{bax/2,1}}! trace: collect_build_postponed (1): end {bax^ | libfoo->{bax/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* trace: evaluate_dependency: baz/1.0.0: unused - %.* - trace: pkg_build: refine package collection/plan execution - %.* - trace: collect_drop: baz/1.0.0 package version needs to be replaced with drop - trace: pkg_build: collection failed due to package version replacement, retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add libbox/0.1.0 - trace: pkg_build: dep-postpone user-specified libbox - trace: collect_drop: overwrite baz - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libbox - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbox/0.1.0 - %.* - trace: collect_build_prerequisites: replace dependency at index 2 of existing dependent bax/1.0.0 with dependency libfoo/1.0.0 at index 1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 due to dependency libbox/0.1.0 + trace: collect_build: add bax/1.0.0 trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} trace: collect_drop: overwrite baz trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 trace: collect_build_postponed (1): skip being dropped existing dependent baz of dependency libfoo trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} - trace: collect_build: add bax/1.0.0 trace: collect_build_prerequisites: reeval bax/1.0.0 - %.* trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} trace: collect_build_prerequisites: re-evaluated bax/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 trace: collect_build_prerequisites: resume bax/1.0.0 - %.* trace: collect_build: pick libbox/0.1.0 over libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent bax/1.0.0 trace: collect_build: add libbar/1.0.0 @@ -6755,13 +10819,10 @@ test.options += --no-progress trace: collect_build_prerequisites: postpone bax/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {bax^ | libfoo->{bax/1,1}}! trace: collect_build_postponed (2): begin {bax | libbox->{bax/2,1} libbar->{bax/2,1}} - %.* trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbox - %.* trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar trace: collect_build_postponed (2): skip being dropped existing dependent baz of dependency libbar trace: collect_build_postponed (2): cfg-negotiate begin {bax | libbox->{bax/2,1} libbar->{bax/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libbox/0.1.0 trace: collect_build_prerequisites: end libbox/0.1.0 @@ -6774,9 +10835,16 @@ test.options += --no-progress trace: collect_build_postponed (2): end {bax | libbox->{bax/2,1} libbar->{bax/2,1}} trace: collect_build_postponed (1): end {bax^ | libfoo->{bax/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + drop baz/1.0.0 (unused) + downgrade libbox/0.1.0 + config.libbox.extras=true (set by bax) + reconfigure bax/1.0.0 (dependent of libbox, libfoo) + config.bax.libfoo_extras=true (set by bax) + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -6864,6 +10932,7 @@ test.options += --no-progress %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 + %.* trace: postponed_configurations::add: add {box 1,1: libbar libfoo} to {foo | libfoo->{foo/1,1}}! trace: postponed_configurations::add: merge {bar | libbar->{bar/1,1}}! into {box foo | libfoo->{box/1,1 foo/1,1} libbar->{box/1,1}}! %.* @@ -6898,6 +10967,7 @@ test.options += --no-progress %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 + %.* trace: postponed_configurations::add: add {box 1,1: libbar libfoo} to {foo | libfoo->{foo/1,1}}! trace: postponed_configurations::add: merge {bar | libbar->{bar/1,1}}! into {box foo | libfoo->{box/1,1 foo/1,1} libbar->{box/1,1}}! trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent box/1.0.0 is negotiated @@ -7234,6 +11304,280 @@ test.options += --no-progress $pkg_drop fux bex fix buz } + : premature-in-cluster + : + : Test recollecting from scratch if the prematurely collected dependency + : belongs (as a dependency) to a non-negotiated cluster. + : + { + $clone_cfg; + + # Dependencies: + # + # bas: depends: libbar(c) + # depends: bus(c) + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # bix: depends: {libbar bar} (c) + # depends: bux + # + # buz: depends: bux(c) + # + # buc: depends: libfoo(c) + # depends: bux(c) + # + # bus: depends: libbaz(c) + # depends: foo(c) + # + # bux: depends: libbar(c) + # + # bar: depends: libbar(c) + # + # foo: depends: libfoo(c) + # + $* bas bax bix buz buc 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add bas/1.0.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build: add bix/1.0.0 + trace: collect_build: add buz/1.0.0 + trace: collect_build: add buc/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: begin bix/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bix/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent bix/1.0.0 + trace: postponed_configurations::add: add {bix 1,1: libbar bar} to {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: postpone bix/1.0.0 + trace: collect_build_prerequisites: begin buz/1.0.0 + trace: collect_build: add bux/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bux/1.0.0 of dependent buz/1.0.0 + trace: postponed_configurations::add: create {buz | bux->{buz/1,1}} + trace: collect_build_prerequisites: postpone buz/1.0.0 + trace: collect_build_prerequisites: begin buc/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent buc/1.0.0 + trace: postponed_configurations::add: add {buc 1,1: libfoo} to {bax | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: postpone buc/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: begin bar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}}? + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 + trace: collect_build_prerequisites: resume bix/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 since already in cluster {buz | bux->{buz/1,1}} + trace: collect_build_prerequisites: end bix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! + trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {bax buc | libfoo->{bax/1,1 buc/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bar bas bax bix | libbar->{bar/1,1 bas/1,1 bax/2,1 bix/1,1} bar->{bix/1,1} libbox->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (1): begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: begin bar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}}? + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 + trace: collect_build_prerequisites: resume bix/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 since already in cluster {buz | bux->{buz/1,1}} + trace: collect_build_prerequisites: end bix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! + trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {bax buc | libfoo->{bax/1,1 buc/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent buc/1.0.0 + trace: collect_build_prerequisites: resume buc/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bux/1.0.0 of dependent buc/1.0.0 + trace: postponed_configurations::add: add {buc 2,1: bux} to {buz | bux->{buz/1,1}} + trace: collect_build_prerequisites: postpone buc/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax buc | libfoo->{bax/1,1 buc/1,1}}! + trace: collect_build_postponed (3): begin {buc buz | bux->{buc/2,1 buz/1,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {buc buz | bux->{buc/2,1 buz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bux/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bux/1.0.0 + trace: postponed_configurations::add: add {bux 1,1: libbar} to {bar bas bax bix | libbar->{bar/1,1 bas/1,1 bax/2,1 bix/1,1} bar->{bix/1,1} libbox->{bax/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bux/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bux/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bux/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent buc/1.0.0 + trace: collect_build_prerequisites: resume buc/1.0.0 + trace: collect_build_prerequisites: end buc/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent buz/1.0.0 + trace: collect_build_prerequisites: resume buz/1.0.0 + trace: collect_build_prerequisites: end buz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {buc buz | bux->{buc/2,1 buz/1,1}}! + trace: collect_build_postponed (4): begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): cfg-negotiate begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bus/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: create {bus | libbaz->{bus/1,1}} + trace: collect_build_prerequisites: postpone bus/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: end bas/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {bas | bus->{bas/2,1}}! + trace: collect_build_postponed (5): begin {bus | libbaz->{bus/1,1}} + trace: collect_build_postponed (5): cfg-negotiate begin {bus | libbaz->{bus/1,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: create {bus | foo->{bus/2,1}} + trace: collect_build_prerequisites: postpone bus/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {bus | libbaz->{bus/1,1}}! + trace: collect_build_postponed (6): begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (6): cfg-negotiate begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: add {foo 1,1: libfoo} to {bax buc | libfoo->{bax/1,1 buc/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent foo/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent foo/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (6): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build_prerequisites: end bus/1.0.0 + trace: collect_build_postponed (6): cfg-negotiate end {bus | foo->{bus/2,1}}! + trace: collect_build_postponed (6): end {bus | foo->{bus/2,1}} + trace: collect_build_postponed (5): end {bus | libbaz->{bus/1,1}} + trace: collect_build_postponed (4): end {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): end {buc buz | bux->{buc/2,1 buz/1,1}} + trace: collect_build_postponed (2): end {bax buc | libfoo->{bax/1,1 buc/1,1}} + trace: collect_build_postponed (1): end {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new libbaz/1.0.0 (required by bus) + config.libbaz.extras=true (set by bus) + new libbox/1.0.0 (required by bax) + config.libbox.extras=true (set by bax) + new libfoo/1.0.0 (required by bax, buc, foo) + config.libfoo.extras=true (set by bax) + new foo/1.0.0 (required by bus) + config.foo.extras=true (set by bus) + config.foo.libfoo_extras=true (set by foo) + new bus/1.0.0 (required by bas) + config.bus.extras=true (set by bas) + new libbar/1.0.0 (required by bar, bas, bax, bix, bux) + config.libbar.extras=true (set by bas) + new bas/1.0.0 + new bax/1.0.0 + config.bax.libfoo_extras=true (set by bax) + new bar/1.0.0 (required by bix) + config.bar.extras=true (set by bix) + new bux/1.0.0 (required by bix, buc, buz) + config.bux.extras=true (set by buc) + new bix/1.0.0 + new buz/1.0.0 + new buc/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bas configured 1.0.0 + bus configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !bix configured 1.0.0 + bar configured 1.0.0 + libbar configured 1.0.0 + bux configured 1.0.0 + libbar configured 1.0.0 + libbar configured 1.0.0 + !buz configured 1.0.0 + bux configured 1.0.0 + libbar configured 1.0.0 + !buc configured 1.0.0 + bux configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop bas bax bix buz buc + } + : up-negotiate-dependency : { @@ -7388,6 +11732,7 @@ test.options += --no-progress trace: collect_build_prerequisites: resume boo/1.0.0 %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent boo/1.0.0 + %.* trace: postponed_configurations::add: create {boo | libfoo->{boo/1,2}} trace: collect_build_prerequisites: postpone boo/1.0.0 trace: collect_build_postponed (1): begin {boo | libfoo->{boo/1,2}} @@ -7621,6 +11966,7 @@ test.options += --no-progress trace: collect_build_prerequisites: resume boo/1.0.0 %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent boo/1.0.0 + %.* trace: postponed_configurations::add: add {boo 1,2: libfoo} to {foo | libfoo->{foo/1,1}}! %.* trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent boo/1.0.0 is negotiated @@ -7663,6 +12009,7 @@ test.options += --no-progress %.* trace: collect_build: add boo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency boo/1.0.0 of dependent biz/1.0.0 + %.* trace: postponed_configurations::add: create {biz | boo->{biz/1,1}} trace: collect_build_prerequisites: postpone biz/1.0.0 trace: collect_build_postponed (0): begin @@ -7709,6 +12056,7 @@ test.options += --no-progress trace: collect_build_prerequisites: resume boo/1.0.0 %.* trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent boo/1.0.0 + %.* trace: postponed_configurations::add: add {boo 1,2: libfoo} to {foo | libfoo->{foo/1,1}}! trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent boo/1.0.0 is negotiated trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent boo/1.0.0 is already (being) recursively collected, skipping @@ -7732,7 +12080,7 @@ test.options += --no-progress } } - : bogus-postponment + : bogus-postponement : { $clone_cfg; @@ -7997,6 +12345,7 @@ test.options += --no-progress trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping trace: collect_build_prerequisites: end tez/1.0.0 trace: collect_build_postponed (3): cfg-negotiate end {tez | toz->{tez/2,1}}! + %.* trace: collect_build_postponed (3): erase bogus postponement libfoo trace: collect_build_postponed (3): bogus postponements erased, throwing trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch @@ -8092,6 +12441,1220 @@ test.options += --no-progress $pkg_drop tax toz tez } + + : unconstrain-deps + : + { + $clone_cfg; + + # Dependencies: + # + # tvz: depends: toz == 0.2.0 (c) + # + # toz/0.2.0: depends: libfoo(c) + # depends: libbar(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar(c) + # + $* tvz 2>!; + + $pkg_status -r >>EOO; + !tvz configured 1.0.0 + toz configured 0.2.0 available 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* tvz +{ config.tvz.extras=true } tez 2>&1 != 0 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {toz | libfoo->{toz/1,1}}! + trace: collect_build_postponed (4): begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (4): cfg-negotiate begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (4): cfg-negotiate end {tez toz | libbar->{tez/3,1 toz/2,1}}! + trace: collect_build_postponed (4): end {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (3): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version tez/1.0.0 with 0.1.0 by adding constraint 'tez' -> 'tez == 0.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build: add tez/0.1.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_prerequisites: begin tez/0.1.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libbar->{toz/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {toz | libfoo->{toz/1,1}}! + trace: collect_build_postponed (4): begin {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (4): cfg-negotiate begin {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (4): cfg-negotiate end {toz | libbar->{toz/2,1}}! + trace: collect_build_postponed (4): end {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (3): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version tez/0.1.0 is denied since it is specified on command line as 'tez == 0.1.0' + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version tvz/1.0.0 with 0.1.0 by adding constraint 'tvz' -> 'tvz == 0.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build: add tez/0.1.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_prerequisites: begin tez/0.1.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {bax toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent toz of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent toz of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version tez/0.1.0 is denied since it is specified on command line as 'tez == 0.1.0' + trace: try_replace_dependent: try to replace conflicting dependent tvz/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of conflicting dependent version tvz/0.1.0 is denied since it is specified on command line as 'tvz == 0.1.0' + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('tvz' -> 'tvz == 0.1.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build: add tez/0.1.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_prerequisites: begin tez/0.1.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libbar->{toz/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {toz | libfoo->{toz/1,1}}! + trace: collect_build_postponed (4): begin {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (4): cfg-negotiate begin {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (4): cfg-negotiate end {toz | libbar->{toz/2,1}}! + trace: collect_build_postponed (4): end {toz | libbar->{toz/2,1}} + trace: collect_build_postponed (3): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version tez/0.1.0 is denied since it is specified on command line as 'tez == 0.1.0' + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tvz/0.1.0 tried earlier for same command line, skipping + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('tez' -> 'tez == 0.1.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {toz | libfoo->{toz/1,1}}! + trace: collect_build_postponed (4): begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (4): cfg-negotiate begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (4): cfg-negotiate end {tez toz | libbar->{tez/3,1 toz/2,1}}! + trace: collect_build_postponed (4): end {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (3): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tez/0.1.0 tried earlier for same command line, skipping + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version tvz/1.0.0 with 0.1.0 by adding constraint 'tvz' -> 'tvz == 0.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {bax toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {tez | libbar->{tez/3,1}} into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}!, throwing merge_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent toz of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent tez/1.0.0 involves (being) negotiated configurations and results in {tez | libbox->{tez/1,1} libbar->{tez/3,1}}?, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent tez, refining configuration + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent toz of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tez/0.1.0 tried earlier for same command line, skipping + trace: try_replace_dependent: try to replace conflicting dependent tvz/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of conflicting dependent version tvz/0.1.0 is denied since it is specified on command line as 'tvz == 0.1.0' + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('tvz' -> 'tvz == 0.1.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tvz of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {toz | libfoo->{toz/1,1}}! + trace: collect_build_postponed (4): begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (4): cfg-negotiate begin {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (4): cfg-negotiate end {tez toz | libbar->{tez/3,1 toz/2,1}}! + trace: collect_build_postponed (4): end {tez toz | libbar->{tez/3,1 toz/2,1}} + trace: collect_build_postponed (3): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tez/0.1.0 tried earlier for same command line, skipping + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tvz/0.1.0 tried earlier for same command line, skipping + error: unable to satisfy constraints on package toz + info: tvz/1.0.0 depends on (toz == 0.2.0) + info: tez/1.0.0 depends on (toz == 0.1.0) + info: available toz/0.2.0 + info: available toz/0.1.0 + info: while satisfying tez/1.0.0 + info: explicitly specify toz version to manually satisfy both constraints + %.* + EOE + + $pkg_drop tvz + } + + : restore-unsatisfied-depts + : + { + $clone_cfg; + + # Dependencies: + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar(c) + # + # toz/0.1.0: + # + # toz/0.2.0: depends: libfoo(c) + # depends: libbar(c) + # + # tvz: depends: toz == 0.2.0 (c) + # depends: bax + # depends: libfoo(c) + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + $* tez 2>!; + + $pkg_status -r >>EOO; + !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + toz configured 0.1.0 available 1.0.0 0.2.0 + EOO + + $* tvz/0.1.0 tez +{ config.tvz.extras=true } 2>&1 != 0 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tez of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {bax toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {tez | libbar->{tez/3,1}} into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}!, throwing merge_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent tez/1.0.0 involves (being) negotiated configurations and results in {tez | libbox->{tez/1,1} libbar->{tez/3,1}}?, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent tez, refining configuration + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replace unsatisfied dependent version tez/1.0.0 with 0.1.0 by adding constraint 'tez' -> 'tez == 0.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build: add tez/0.1.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_prerequisites: begin tez/0.1.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tez of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {bax toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/0.1.0 + trace: collect_build_prerequisites: resume tez/0.1.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/0.1.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/0.1.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/0.1.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of unsatisfied dependent version tez/0.1.0 is denied since it is specified on command line as 'tez == 0.1.0' + trace: try_replace_dependent: try to replace conflicting dependent tvz/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of conflicting dependent version tvz/0.1.0 is denied since it is specified on command line as 'tvz == 0.1.0' + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('tez' -> 'tez == 0.1.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent tez of dependency toz + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {bax toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {tez | libbar->{tez/3,1}} into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}!, throwing merge_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent tez/1.0.0 involves (being) negotiated configurations and results in {tez | libbox->{tez/1,1} libbar->{tez/3,1}}?, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent tez, refining configuration + trace: collect_build_postponed (2): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {tez | libbox->{tez/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tez of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! + trace: collect_build_postponed (3): begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1} libbar->{tez/3,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): end {bax toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: execute_plan: while configuring dependent tez in simulation mode unconstrain (toz == 0.1.0) + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tez/0.1.0 tried earlier for same command line, skipping + trace: try_replace_dependent: try to replace conflicting dependent tvz/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of conflicting dependent version tvz/0.1.0 is denied since it is specified on command line as 'tvz == 0.1.0' + error: unable to satisfy constraints on package toz + info: tvz/0.1.0 depends on (toz == 0.2.0) + command line requires (tvz == 0.1.0) + info: tez/1.0.0 depends on (toz == 0.1.0) + info: available toz/0.2.0 + info: available toz/0.1.0 + info: while satisfying tez/1.0.0 + info: explicitly specify toz version to manually satisfy both constraints + %.* + EOE + + $pkg_drop tez + } } : cycle @@ -8467,6 +14030,7 @@ test.options += --no-progress trace: collect_build_prerequisites: no cfg-clause for dependency tix/0.1.0 of dependent tux/1.0.0 trace: collect_build_prerequisites: end tux/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {tux | libbox->{tux/1,1}}! + %.* trace: collect_build_postponed (1): erase bogus postponement tex trace: collect_build_postponed (1): bogus postponements erased, throwing trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch @@ -8977,88 +14541,74 @@ test.options += --no-progress # tix: depends: libbar(c) # depends: tex(c) # - $* tex 2>!; + $* tex --verbose 1 2>!; # Build new dependency of an existing dependent. # - $* tix 2>>~%EOE%; + $* tix 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add tix/1.0.0 trace: collect_build_prerequisites: begin tix/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} trace: collect_build_prerequisites: postpone tix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} - %.* trace: collect_build: add tex/1.0.0 trace: collect_build_prerequisites: reeval tex/1.0.0 - %.* trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tix | libbar->{tix/1,1}} trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tix | libbar->{tex/1,1 tix/1,1}} trace: collect_build_prerequisites: re-evaluated tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {tex^ tix | libbar->{tex/1,1 tix/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tex/1.0.0 trace: collect_build_prerequisites: resume tex/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} trace: collect_build_prerequisites: postpone tex/1.0.0 trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 - %.* trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 (collected prematurely), throwing postpone_dependency trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add tix/1.0.0 trace: collect_build_prerequisites: begin tix/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} trace: collect_build_prerequisites: postpone tix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 - %.* - trace: collect_build: add tex/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} trace: collect_build_prerequisites: postpone tix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {tix | libbar->{tix/1,1}}! trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} - %.* trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 trace: postponed_configurations::add: add {tex 1,1: libbar} to {tix | libbar->{tix/1,1}}! trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} @@ -9069,10 +14619,8 @@ test.options += --no-progress trace: collect_build_prerequisites: end tix/1.0.0 trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} - %.* trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} - %.* trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents @@ -9084,9 +14632,12 @@ test.options += --no-progress trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} trace: collect_build_postponed (1): end {tix | libbar->{tix/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + new tix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -9108,68 +14659,21 @@ test.options += --no-progress %.* trace: collect_build: add tex/0.3.0 %.* - trace: collect_build_prerequisites: cfg-postpone dependency tex/0.3.0 of existing dependent tix/1.0.0 - trace: postponed_configurations::add: create {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - %.* - trace: collect_build: add tix/1.0.0 - trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 %.* + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 trace: collect_build: add libbar/1.0.0 - %.* - trace: collect_build: pick tex/0.3.0 over tex/1.0.0 - trace: postponed_configurations::add: add {tix^ 2,1: tex} to {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: re-evaluated tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | tex->{tix/2,1}} - %.* - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin tex/0.3.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/0.3.0 - trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} - trace: collect_build_prerequisites: postpone tex/0.3.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 - trace: collect_build_prerequisites: resume tix/1.0.0 - trace: collect_build_prerequisites: end tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tix^ | tex->{tix/2,1}}! - trace: collect_build_postponed (2): begin {tex | libbar->{tex/1,1}} - %.* - trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libbar - trace: collect_build_postponed (2): re-evaluate existing dependents for {tex | libbar->{tex/1,1}} - trace: collect_build_postponed (2): cannot re-evaluate dependent tix to dependency index 1 due to greater dependency index 2 in {tix^ | tex->{tix/2,1}}!, throwing postpone_position - trace: pkg_build: collection failed due to earlier dependency position, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add tex/0.3.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency tex/0.3.0 of existing dependent tix/1.0.0 - trace: postponed_configurations::add: create {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (1): pos-postpone existing dependent tix re-evaluation to dependency index 2 due to recorded index 1, skipping {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (0): postpone cfg-negotiation of {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (0): non-negotiated clusters left and non-replace postponed positions are present, overriding first encountered non-replace position to replace - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} - %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (1): pos-postpone existing dependent tix re-evaluation to dependency index 2 due to recorded index 1, skipping {tix^ | tex->{tix/2,1}} - trace: collect_build_postponed (0): replace dependency at index 2 of existing dependent tix/1.0.0 with dependency libbar/1.0.0 at index 1 - trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tix/1.0.0 due to dependency tex/0.3.0 + trace: collect_build: add tix/1.0.0 trace: postponed_configurations::add: create {tix^ | libbar->{tix/1,1}} - trace: collect_build_postponed (0): postpone cfg-negotiation of {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {tix^ | libbar->{tix/1,1}} %.* trace: collect_build_postponed (1): skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | libbar->{tix/1,1}} - trace: collect_build: add tix/1.0.0 trace: collect_build_prerequisites: reeval tix/1.0.0 %.* trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tix^ | libbar->{tix/1,1}} @@ -9185,13 +14689,13 @@ test.options += --no-progress %.* trace: collect_build: pick tex/0.3.0 over tex/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency tex/0.3.0 of dependent tix/1.0.0 - trace: postponed_configurations::add: add {tix 2,1: tex} to {tix^ | tex->{tix/2,1}} + trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} trace: collect_build_prerequisites: postpone tix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {tix^ | libbar->{tix/1,1}}! - trace: collect_build_postponed (2): begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} %.* trace: collect_build_postponed (2): skip being built existing dependent tix of dependency tex - trace: collect_build_postponed (2): cfg-negotiate begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/0.3.0 @@ -9209,7 +14713,7 @@ test.options += --no-progress trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 trace: collect_build_prerequisites: end tix/1.0.0 - trace: collect_build_postponed (2): cfg-negotiate end {tix^ | tex->{tix/2,1}}! + trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} %.* trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo @@ -9223,12 +14727,18 @@ test.options += --no-progress trace: collect_build_prerequisites: end tex/0.3.0 trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} - trace: collect_build_postponed (2): end {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} trace: collect_build_postponed (1): end {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade tex/0.3.0 + config.tex.extras=true (set by tix) + reconfigure tix/1.0.0 (dependent of libbar, tex) + trace: execute_plan: simulate: no + %.* EOE $pkg_drop tex tix @@ -9252,7 +14762,7 @@ test.options += --no-progress # tix: depends: libbar(c) # depends: tex(c) # - $* tex tix 2>!; + $* tex tix --verbose 1 2>!; $* tix tex/0.1.0 2>>~%EOE%; %.* @@ -9262,52 +14772,80 @@ test.options += --no-progress trace: collect_build: add tex/0.1.0 trace: collect_build_prerequisites: skip configured tix/1.0.0 %.* - trace: collect_build_prerequisites: cfg-postpone dependency tex/0.1.0 of existing dependent tix/1.0.0 - trace: postponed_configurations::add: create {tix^ | tex->{tix/2,1}} + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tix/1.0.0 due to dependency tex/0.1.0 + trace: postponed_configurations::add: create {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): begin {tix^ | libbar->{tix/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 %.* - trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tix/1.0.0 %.* - trace: collect_build: pick tex/0.1.0 over tex/1.0.0 - trace: postponed_configurations::add: add {tix^ 2,1: tex} to {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | tex->{tix/2,1}} + trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | libbar->{tix/1,1}} trace: collect_build_prerequisites: re-evaluated tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | libbar->{tix/1,1}} %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + %.* + trace: collect_build: pick tex/0.1.0 over tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/0.1.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix^ | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent tix of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/0.1.0 %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/0.1.0 trace: postponed_configurations::add: create {tex | libfoo->{tex/1,1}} trace: collect_build_prerequisites: postpone tex/0.1.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 trace: collect_build_prerequisites: end tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tix^ | tex->{tix/2,1}}! - trace: collect_build_postponed (2): begin {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/1,1}} %.* - trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo - trace: collect_build_postponed (2): cfg-negotiate begin {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/1,1}} %.* - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/0.1.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/0.1.0 trace: collect_build_prerequisites: resume tex/0.1.0 trace: collect_build_prerequisites: end tex/0.1.0 - trace: collect_build_postponed (2): cfg-negotiate end {tex | libfoo->{tex/1,1}}! - trace: collect_build_postponed (2): end {tex | libfoo->{tex/1,1}} - trace: collect_build_postponed (1): end {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/1,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} + trace: collect_build_postponed (1): end {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade tex/0.1.0 + config.tex.extras=true (set by tix) + reconfigure/update tix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_drop tex tix @@ -9328,7 +14866,7 @@ test.options += --no-progress # tix: depends: libbar(c) # depends: tex(c) # - $* tex tix 2>!; + $* tex tix --verbose 1 2>!; $* tix ?tex/0.1.0 2>>~%EOE%; %.* @@ -9342,52 +14880,80 @@ test.options += --no-progress %.* trace: pkg_build: refine package collection/plan execution %.* - trace: collect_build_prerequisites: cfg-postpone dependency tex/0.1.0 of existing dependent tix/1.0.0 - trace: postponed_configurations::add: create {tix^ | tex->{tix/2,1}} + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tix/1.0.0 due to dependency tex/0.1.0 + trace: postponed_configurations::add: create {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): begin {tix^ | libbar->{tix/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 %.* - trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tix/1.0.0 %.* - trace: collect_build: pick tex/0.1.0 over tex/1.0.0 - trace: postponed_configurations::add: add {tix^ 2,1: tex} to {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | tex->{tix/2,1}} + trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | libbar->{tix/1,1}} trace: collect_build_prerequisites: re-evaluated tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | libbar->{tix/1,1}} %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + %.* + trace: collect_build: pick tex/0.1.0 over tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/0.1.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix^ | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent tix of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/0.1.0 %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/0.1.0 trace: postponed_configurations::add: create {tex | libfoo->{tex/1,1}} trace: collect_build_prerequisites: postpone tex/0.1.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 trace: collect_build_prerequisites: end tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tix^ | tex->{tix/2,1}}! - trace: collect_build_postponed (2): begin {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/1,1}} %.* - trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo - trace: collect_build_postponed (2): cfg-negotiate begin {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/1,1}} %.* - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/0.1.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/0.1.0 trace: collect_build_prerequisites: resume tex/0.1.0 trace: collect_build_prerequisites: end tex/0.1.0 - trace: collect_build_postponed (2): cfg-negotiate end {tex | libfoo->{tex/1,1}}! - trace: collect_build_postponed (2): end {tex | libfoo->{tex/1,1}} - trace: collect_build_postponed (1): end {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/1,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/1,1}} + trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} + trace: collect_build_postponed (1): end {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade/unhold tex/0.1.0 + config.tex.extras=true (set by tix) + reconfigure/update tix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_drop tix @@ -9395,7 +14961,7 @@ test.options += --no-progress : dependency-downgrade-unhold-premature : - : As above but the dependency (tex) depends on libbar without + : As above but the dependency (tex/0.2.0) depends on libbar without : configuration clause. : { @@ -9409,7 +14975,7 @@ test.options += --no-progress # tix: depends: libbar(c) # depends: tex(c) # - $* tex tix 2>!; + $* tex tix --verbose 1 2>!; $* tix ?tex/0.2.0 2>>~%EOE%; %.* @@ -9423,54 +14989,82 @@ test.options += --no-progress %.* trace: pkg_build: refine package collection/plan execution %.* - trace: collect_build_prerequisites: cfg-postpone dependency tex/0.2.0 of existing dependent tix/1.0.0 - trace: postponed_configurations::add: create {tix^ | tex->{tix/2,1}} + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tix/1.0.0 due to dependency tex/0.2.0 + trace: postponed_configurations::add: create {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): begin {tix^ | libbar->{tix/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 %.* - trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tix/1.0.0 %.* - trace: collect_build: pick tex/0.2.0 over tex/1.0.0 - trace: postponed_configurations::add: add {tix^ 2,1: tex} to {tix^ | tex->{tix/2,1}} - trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | tex->{tix/2,1}} + trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tix^ | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tix^ | libbar->{tix/1,1}} trace: collect_build_prerequisites: re-evaluated tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tix^ | libbar->{tix/1,1}} %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + %.* + trace: collect_build: pick tex/0.2.0 over tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/0.2.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix^ | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent tix of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/0.2.0 %.* - trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent tex/0.2.0 + trace: collect_build_prerequisites: dep-postpone dependency libbar/1.0.0 of dependent tex/0.2.0 since already in cluster {tix^ | libbar->{tix/1,1}}! %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/0.2.0 trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} trace: collect_build_prerequisites: postpone tex/0.2.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 trace: collect_build_prerequisites: resume tix/1.0.0 trace: collect_build_prerequisites: end tix/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tix^ | tex->{tix/2,1}}! - trace: collect_build_postponed (2): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} %.* - trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo - trace: collect_build_postponed (2): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} %.* - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/0.2.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/0.2.0 trace: collect_build_prerequisites: resume tex/0.2.0 trace: collect_build_prerequisites: end tex/0.2.0 - trace: collect_build_postponed (2): cfg-negotiate end {tex | libfoo->{tex/2,1}}! - trace: collect_build_postponed (2): end {tex | libfoo->{tex/2,1}} - trace: collect_build_postponed (1): end {tix^ | tex->{tix/2,1}} + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} + trace: collect_build_postponed (1): end {tix^ | libbar->{tix/1,1}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes %.* + build plan: + downgrade/unhold tex/0.2.0 + config.tex.extras=true (set by tix) + reconfigure/update tix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_drop tix @@ -9501,7 +15095,7 @@ test.options += --no-progress # dox: dex(c) # # dix: depends: libbar(c) - # depends: libbox(c) # causes postponment and initial cluster finished negotiating + # depends: libbox(c) # causes postponement and initial cluster finished negotiating # depends: dox(c) # $* tax dex dix 2>>~%EOE%; @@ -9843,7 +15437,7 @@ test.options += --no-progress # dox: dex(c) # # dix: depends: libbar(c) - # depends: libbox(c) # causes postponment and initial cluster finished negotiating + # depends: libbox(c) # causes postponement and initial cluster finished negotiating # depends: dox(c) # $* dix 2>>~%EOE%; @@ -10453,11 +16047,11 @@ test.options += --no-progress # dex: depends: bar(c) # depends: libfoo(c) # - # bux: depends: libbar(c) - # # buc: depends: libfoo(c) # depends: bux(c) # + # bux: depends: libbar(c) + # $* bar dex buc bux 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -10540,23 +16134,6 @@ test.options += --no-progress trace: collect_build: add dex/1.0.0 trace: collect_build: add buc/1.0.0 trace: collect_build: add bux/1.0.0 - trace: collect_build_prerequisites: begin bar/1.0.0 - %.* - trace: collect_build: add libbar/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 - trace: postponed_configurations::add: create {bar | libbar->{bar/1,1}} - trace: collect_build_prerequisites: postpone bar/1.0.0 - trace: collect_build_prerequisites: begin dex/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add bar/1.0.0 - trace: collect_build: add dex/1.0.0 - trace: collect_build: add buc/1.0.0 - trace: collect_build: add bux/1.0.0 trace: pkg_build: dep-postpone user-specified bar trace: collect_build_prerequisites: begin dex/1.0.0 %.* @@ -10574,7 +16151,6 @@ test.options += --no-progress trace: collect_build_postponed (1): begin {dex | bar->{dex/1,1}} %.* trace: collect_build_postponed (1): cfg-negotiate begin {dex | bar->{dex/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin bar/1.0.0 %.* @@ -10593,7 +16169,6 @@ test.options += --no-progress trace: collect_build_postponed (2): begin {buc dex | libfoo->{buc/1,1 dex/2,1}} %.* trace: collect_build_postponed (2): cfg-negotiate begin {buc dex | libfoo->{buc/1,1 dex/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -10644,6 +16219,19 @@ test.options += --no-progress trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* + build plan: + new libfoo/1.0.0 (required by buc, dex) + config.libfoo.extras=true (set by buc) + new libbar/1.0.0 (required by bar, bux) + config.libbar.extras=true (set by bar) + new bar/1.0.0 + config.bar.extras=true (set by dex) + new dex/1.0.0 + new bux/1.0.0 + config.bux.extras=true (set by buc) + new buc/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -10971,35 +16559,31 @@ test.options += --no-progress # dox: dex(c) # # dix: depends: libbar(c) - # depends: libbox(c) # causes postponment and initial cluster finished negotiating + # depends: libbox(c) # causes postponement and initial cluster finished negotiating # depends: dox(c) # - $* dex 2>!; + $* dex --verbose 1 2>!; - $* dix 2>>~%EOE%; + $* dix 2>&1 | $filter 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add dix/1.0.0 trace: collect_build_prerequisites: begin dix/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | libbar->{dix/1,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {dix | libbar->{dix/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 trace: collect_build_postponed (1): re-evaluate existing dependents for {dix | libbar->{dix/1,1}} - %.* trace: collect_build: add bar/1.0.0 trace: collect_build_prerequisites: reeval bar/1.0.0 - %.* trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {dix | libbar->{dix/1,1}} trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ dix | libbar->{bar/1,1 dix/1,1}} trace: collect_build_prerequisites: re-evaluated bar/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {bar^ dix | libbar->{bar/1,1 dix/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents @@ -11008,35 +16592,28 @@ test.options += --no-progress trace: collect_build_prerequisites: end bar/1.0.0 trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent dix/1.0.0 trace: collect_build_prerequisites: resume dix/1.0.0 - %.* trace: collect_build: add libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | libbox->{dix/2,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {bar^ dix | libbar->{bar/1,1 dix/1,1}}! trace: collect_build_postponed (2): begin {dix | libbox->{dix/2,1}} - %.* trace: collect_build_postponed (2): cfg-negotiate begin {dix | libbox->{dix/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libbox/1.0.0 trace: collect_build_prerequisites: end libbox/1.0.0 trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dix/1.0.0 trace: collect_build_prerequisites: resume dix/1.0.0 - %.* trace: collect_build: add dox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | dox->{dix/3,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (2): cfg-negotiate end {dix | libbox->{dix/2,1}}! trace: collect_build_postponed (3): begin {dix | dox->{dix/3,1}} - %.* trace: collect_build_postponed (3): cfg-negotiate begin {dix | dox->{dix/3,1}} - %.* trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin dox/1.0.0 - %.* trace: collect_build: add dex/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} @@ -11047,64 +16624,52 @@ test.options += --no-progress trace: collect_build_prerequisites: end dix/1.0.0 trace: collect_build_postponed (3): cfg-negotiate end {dix | dox->{dix/3,1}}! trace: collect_build_postponed (4): begin {dox | dex->{dox/1,1}} - %.* trace: collect_build_postponed (4): cfg-negotiate begin {dox | dex->{dox/1,1}} - %.* trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin dex/1.0.0 - %.* trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch - %.* trace: pkg_build: refine package collection/plan execution from scratch - %.* trace: collect_build: add dix/1.0.0 trace: collect_build_prerequisites: begin dix/1.0.0 - %.* trace: collect_build: add libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | libbar->{dix/1,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {dix | libbar->{dix/1,1}} - %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build: add bar/1.0.0 trace: collect_build_postponed (1): cfg-negotiate begin {dix | libbar->{dix/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libbar/1.0.0 trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent dix/1.0.0 trace: collect_build_prerequisites: resume dix/1.0.0 - %.* trace: collect_build: add libbox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | libbox->{dix/2,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {dix | libbar->{dix/1,1}}! trace: collect_build_postponed (2): begin {dix | libbox->{dix/2,1}} - %.* trace: collect_build_postponed (2): cfg-negotiate begin {dix | libbox->{dix/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libbox/1.0.0 trace: collect_build_prerequisites: end libbox/1.0.0 trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dix/1.0.0 trace: collect_build_prerequisites: resume dix/1.0.0 - %.* trace: collect_build: add dox/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent dix/1.0.0 trace: postponed_configurations::add: create {dix | dox->{dix/3,1}} trace: collect_build_prerequisites: postpone dix/1.0.0 trace: collect_build_postponed (2): cfg-negotiate end {dix | libbox->{dix/2,1}}! trace: collect_build_postponed (3): begin {dix | dox->{dix/3,1}} - %.* trace: collect_build_postponed (3): cfg-negotiate begin {dix | dox->{dix/3,1}} - %.* trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin dox/1.0.0 - %.* trace: collect_build: add dex/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} @@ -11115,13 +16680,9 @@ test.options += --no-progress trace: collect_build_prerequisites: end dix/1.0.0 trace: collect_build_postponed (3): cfg-negotiate end {dix | dox->{dix/3,1}}! trace: collect_build_postponed (4): begin {dox | dex->{dox/1,1}} - %.* trace: collect_build_postponed (4): cfg-negotiate begin {dox | dex->{dox/1,1}} - %.* trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin dex/1.0.0 - %.* - trace: collect_build: add bar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} trace: collect_build_prerequisites: postpone dex/1.0.0 @@ -11131,13 +16692,10 @@ test.options += --no-progress trace: collect_build_prerequisites: end dox/1.0.0 trace: collect_build_postponed (4): cfg-negotiate end {dox | dex->{dox/1,1}}! trace: collect_build_postponed (5): begin {dex | bar->{dex/1,1}} - %.* trace: collect_build_postponed (5): skip being built existing dependent dex of dependency bar trace: collect_build_postponed (5): cfg-negotiate begin {dex | bar->{dex/1,1}} - %.* trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin bar/1.0.0 - %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 trace: postponed_configurations::add: add {bar 1,1: libbar} to {dix | libbar->{dix/1,1}}! trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated @@ -11146,17 +16704,14 @@ test.options += --no-progress trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent dex/1.0.0 trace: collect_build_prerequisites: resume dex/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 trace: postponed_configurations::add: create {dex | libfoo->{dex/2,1}} trace: collect_build_prerequisites: postpone dex/1.0.0 trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,1}}! trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} - %.* trace: collect_build_postponed (6): skip being built existing dependent dex of dependency libfoo trace: collect_build_postponed (6): cfg-negotiate begin {dex | libfoo->{dex/2,1}} - %.* trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: skip configured libfoo/1.0.0 trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents @@ -11171,9 +16726,16 @@ test.options += --no-progress trace: collect_build_postponed (2): end {dix | libbox->{dix/2,1}} trace: collect_build_postponed (1): end {dix | libbar->{dix/1,1}} trace: collect_build_postponed (0): end - %.* trace: execute_plan: simulate: yes %.* + build plan: + new libbox/1.0.0 (required by dix) + config.libbox.extras=true (set by dix) + new dox/1.0.0 (required by dix) + config.dox.extras=true (set by dix) + new dix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -11207,136 +16769,7652 @@ test.options += --no-progress } } - : all-repo-packages + : unaccept-alternative : - : Don't match the tracing but just make sure that pkg-build doesn't crash - : or hang and ends up with an expected packages setup. + { + +$clone_cfg + + : unacceptable + : + { + $clone_cfg; + + $* foo fox/0.1.0 ?libbar 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build: add fox/0.1.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_prerequisites: begin fox/0.1.0 + trace: collect_build_prerequisites: alt-postpone dependent fox/0.1.0 since max index is reached: 0 + info: dependency alternative: libfoo + { + prefer + { + config.libfoo.extras = true + } + accept (false) + } + trace: collect_build_prerequisites: postpone fox/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): index 1 collect alt-postponed fox/0.1.0 + trace: collect_build_prerequisites: resume fox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/0.1.0 + trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}}! + trace: collect_build_prerequisites: unable to cfg-negotiate dependency alternative 1,1 for dependent fox/0.1.0, throwing unaccept_alternative + trace: pkg_build: collection failed due to unacceptable alternative, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build: add fox/0.1.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_prerequisites: begin fox/0.1.0 + trace: collect_build_prerequisites: dependency alternative 1,1 for dependent fox/0.1.0 is unacceptable, skipping + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent fox/0.1.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end fox/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbar/1.0.0: unchanged + %.* + trace: evaluate_dependency: libbar/1.0.0: unchanged + %.* + build plan: + new libfoo/1.0.0 (required by foo) + config.libfoo.extras=true (set by foo) + new foo/1.0.0 + config.foo.libfoo_extras=true (set by foo) + new libbar/1.0.0 (required by fox) + new fox/0.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fox configured !0.1.0 available 1.0.0 0.2.0 + libbar configured 1.0.0 + EOO + + $pkg_drop foo fox + } + + : negotiation-cycle1 + : + { + $clone_cfg; + + $* foo fox/0.2.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build: add fox/0.2.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_prerequisites: begin fox/0.2.0 + trace: collect_build_prerequisites: alt-postpone dependent fox/0.2.0 since max index is reached: 0 + info: dependency alternative: libfoo + { + prefer + { + config.libfoo.extras = false + } + accept (!$config.libfoo.extras) + } + trace: collect_build_prerequisites: postpone fox/0.2.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): index 1 collect alt-postponed fox/0.2.0 + trace: collect_build_prerequisites: resume fox/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/0.2.0 + trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent fox/0.2.0 involves (being) negotiated configurations and results in {foo fox | libfoo->{foo/1,1 fox/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {foo | libfoo->{foo/1,1}} failed due to dependent fox, refining configuration + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): index 1 collect alt-postponed fox/0.2.0 + trace: collect_build_prerequisites: resume fox/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/0.2.0 + trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent fox/0.2.0 involves (being) negotiated configurations and results in {foo fox | libfoo->{foo/1,1 fox/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {foo | libfoo->{foo/1,1}} failed due to dependent fox, refining configuration + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): index 1 collect alt-postponed fox/0.2.0 + trace: collect_build_prerequisites: resume fox/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/0.2.0 + trace: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}}! + trace: collect_build_prerequisites: unable to cfg-negotiate dependency alternative 1,1 for dependent fox/0.2.0, throwing unaccept_alternative + trace: pkg_build: collection failed due to unacceptable alternative, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add foo/1.0.0 + trace: collect_build: add fox/0.2.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_prerequisites: begin fox/0.2.0 + trace: collect_build_prerequisites: dependency alternative 1,1 for dependent fox/0.2.0 is unacceptable, skipping + trace: collect_build_prerequisites: alt-postpone dependent fox/0.2.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + prefer + { + config.libfoo.extras = true + } + accept (true) + } + trace: collect_build_prerequisites: postpone fox/0.2.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (1): index 1 collect alt-postponed fox/0.2.0 + trace: collect_build_prerequisites: resume fox/0.2.0 + trace: collect_build_prerequisites: dependency alternative 1,1 for dependent fox/0.2.0 is unacceptable, skipping + trace: collect_build_prerequisites: alt-postpone dependent fox/0.2.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + prefer + { + config.libfoo.extras = true + } + accept (true) + } + trace: collect_build_prerequisites: postpone fox/0.2.0 + trace: collect_build_postponed (1): index 2 collect alt-postponed fox/0.2.0 + trace: collect_build_prerequisites: resume fox/0.2.0 + trace: collect_build_prerequisites: dependency alternative 1,1 for dependent fox/0.2.0 is unacceptable, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent fox/0.2.0 + trace: postponed_configurations::add: add {fox 1,2: libfoo} to {foo | libfoo->{foo/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent fox/0.2.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent fox/0.2.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end fox/0.2.0 + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new libfoo/1.0.0 (required by foo, fox) + config.libfoo.extras=true (set by foo) + new foo/1.0.0 + config.foo.libfoo_extras=true (set by foo) + new fox/0.2.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fox configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop foo fox + } + + : negotiation-cycle2 + : + : Similar to the above but peforms one more negotiation half-cycle (see + : negotiate_configuration() for details). + : + { + $clone_cfg; + + # Note that this 'one more half-cycle' case doesn't reproduce always + # and depends on the negotiate_configuration() calls order for the fox + # and foo dependents. This order is not actually deterministic since + # depends on the order of these packages in the postponed_packages set + # (of the set<build_package*> type). Thus, the 'one more half-cycle' + # case only takes place if the order of the packages as they appear on + # the command line is preserved. + # + $* fox/0.2.0 foo/0.2.0 ?libfoo 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fox/0.2.0 + trace: collect_build: add foo/0.2.0 + trace: collect_build_prerequisites: begin fox/0.2.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent fox/0.2.0 since max index is reached: 0 + info: dependency alternative: libfoo + { + prefer + { + config.libfoo.extras = false + } + + accept (!$config.libfoo.extras) + } + trace: collect_build_prerequisites: postpone fox/0.2.0 + trace: collect_build_prerequisites: begin foo/0.2.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent foo/0.2.0 since max index is reached: 0 + info: dependency alternative: libfoo + { + require + { + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone foo/0.2.0 + %.* + %.+: unable to cfg-negotiate dependency alternative 1,1 for dependent fox/0.2.0, throwing unaccept_alternative% + trace: pkg_build: collection failed due to unacceptable alternative, retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build_prerequisites: dependency alternative 1,1 for dependent fox/0.2.0 is unacceptable, skipping + %.* + build plan: + new libfoo/1.0.0 (required by foo, fox) + config.libfoo.extras=true (set by foo) + new fox/0.2.0 + new foo/0.2.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !fox configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + !foo configured !0.2.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop foo fox + } + } + + : skip-existing-dependent : { $clone_cfg; - $* libfoo libbar ?libbaz/0.1.0 ?libbox/0.1.0 \ - foo fox fux fix fex bar baz bac bat bas bus \ - box bax bux bix bex boo biz buz buc tax tex \ - tix tiz toz tez tux dex dix diz dox 2>!; + # Dependencies: + # + # tix: depends: libbar(c) + # depends: tex(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + $* tix ?libfoo/0.1.0 --verbose 1 2>!; $pkg_status -r >>EOO; - !libfoo configured 1.0.0 - !libbar configured 1.0.0 - !bat configured 1.0.0 - libbaz configured !0.1.0 available 1.0.0 - !tix configured 0.1.0 available 1.0.0 - !toz configured 0.1.0 available 1.0.0 0.2.0 - !tux configured 1.0.0 + !tix configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: skip configured tix/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libfoo/0.1.0: update to libfoo/1.0.0 + %.* + trace: pkg_build: refine package collection/plan execution + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tex^ tix^ | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_prerequisites: re-evaluated tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ tix^ | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: skip configured tix/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tix/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tix/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tix/1.0.0 + trace: postponed_configurations::add: add {tix^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tix/1.0.0 results in {tex^ tix^ | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_prerequisites: re-evaluated tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ tix^ | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | tex->{tix/2,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tex^ tix^ | libbar->{tex/1,1 tix/1,1}}! + trace: collect_build_postponed (2): begin {tix | tex->{tix/2,1}} + trace: collect_build_postponed (2): skip being built existing dependent tix of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix | tex->{tix/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ tix^ | libbar->{tex/1,1 tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: end tix/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tix | tex->{tix/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tix | tex->{tix/2,1}} + trace: collect_build_postponed (1): end {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (set by tex) + reconfigure/update tex/1.0.0 (required by tix) + config.tex.extras=true (set by tix) + config.tex.libfoo_extras=true (set by tex) + reconfigure/update tix/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tix configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop tix + } + + : skip-existing-dependent-last + : + : Similar to the above but the skipped existing dependent is the last/only + : dependent in the cluster. + : + { + $clone_cfg; + + # Dependencies: + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + $* tiz ?libfoo/0.1.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: skip configured tiz/1.0.0 + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libfoo/0.1.0: update to libfoo/1.0.0 + %.* + trace: pkg_build: refine package collection/plan execution + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: skip configured tiz/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libfoo/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 involves (being) negotiated configurations and results in {tex^ | libbar->{tex/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tex^ | libbar->{tex/1,1}} failed due to dependent tex, refining configuration + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (1): end {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (set by tex) + reconfigure/update tex/1.0.0 (required by tiz) + config.tex.extras=true (set by tiz) + config.tex.libfoo_extras=true (set by tex) + reconfigure/update tiz/1.0.0 + config.tiz.tex_extras=true (set by tiz) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop tiz + } + + : skip-existing-dependent-cluster + : + : Similar to skip-existing-dependent but skip the existing dependent + : because it is already in a cluster as a dependency. + : + { + $clone_cfg; + + # Dependencies: + # + # bac: depends: libbar(c) + # depends: libbaz(c) + # depends: libfoo(c) + # + # bas: depends: libbar(c) + # depends: bus(c) + # + # bus: depends: libbaz(c) + # depends: foo(c) + # + # foo: depends: libfoo(c) + # + # box: depends: {libbar libfoo} (c) | libbox + # + $* bac bas 2>!; + + $pkg_status -r >>EOO; + !bac configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + !bas configured 1.0.0 + bus configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + EOO + + $* box 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: begin box/1.0.0 + trace: collect_build_prerequisites: alt-postpone dependent box/1.0.0 since max index is reached: 0 + info: dependency alternative: {libbar libfoo} + { + require + { + config.libbar.extras = true + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone box/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): index 1 collect alt-postponed box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 + trace: postponed_configurations::add: create {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: postpone box/1.0.0 + trace: collect_build_postponed (1): begin {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bac/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bac/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bas/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bas/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bac/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bac/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build: add bac/1.0.0 + trace: collect_build_prerequisites: reeval bac/1.0.0 + trace: postponed_configurations::add: add {bac^ 1,1: libbar} to {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bac/1.0.0 results in {bac^ box | libbar->{bac/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated bac/1.0.0 + trace: collect_build: add bas/1.0.0 + trace: collect_build_prerequisites: reeval bas/1.0.0 + trace: postponed_configurations::add: add {bas^ 1,1: libbar} to {bac^ box | libbar->{bac/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bas/1.0.0 results in {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated bas/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: reeval foo/1.0.0 + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} to {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent foo/1.0.0 results in {bac^ bas^ box foo^ | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1 foo/1,1}} + trace: collect_build_prerequisites: re-evaluated foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bac^ bas^ box foo^ | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1 foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bac/1.0.0 + trace: collect_build_prerequisites: resume bac/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: create {bac | libbaz->{bac/2,1}} + trace: collect_build_prerequisites: postpone bac/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bac^ bas^ box foo^ | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1 foo/1,1}}! + trace: collect_build_postponed (2): begin {bac | libbaz->{bac/2,1}} + trace: collect_build_prerequisites: pre-reeval bus/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bus/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bac of dependency libbaz + trace: collect_build_postponed (2): skip existing dependent bus of dependency libbaz since dependent already in cluster {bas | bus->{bas/2,1}} (as a dependency) + trace: collect_build_postponed (2): cfg-negotiate begin {bac | libbaz->{bac/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbaz/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bac/1.0.0 + trace: collect_build_prerequisites: resume bac/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: add {bac 3,1: libfoo} to {bac^ bas^ box foo^ | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1 foo/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bac/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent bac/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bac/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bac | libbaz->{bac/2,1}}! + trace: collect_build_postponed (3): begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent bas of dependency bus + trace: collect_build_postponed (3): cfg-negotiate begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: add {bus 1,1: libbaz} to {bac | libbaz->{bac/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bus/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbaz/1.0.0 of dependent bus/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cannot cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (foo), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: begin box/1.0.0 + trace: collect_build_prerequisites: alt-postpone dependent box/1.0.0 since max index is reached: 0 + info: dependency alternative: {libbar libfoo} + { + require + { + config.libbar.extras = true + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone box/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): index 1 collect alt-postponed box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 + trace: postponed_configurations::add: create {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: postpone box/1.0.0 + trace: collect_build_postponed (1): begin {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bac/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bac/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bas/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bas/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bac/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bac/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent foo of dependency libfoo + trace: collect_build: add foo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build: add bac/1.0.0 + trace: collect_build_prerequisites: reeval bac/1.0.0 + trace: postponed_configurations::add: add {bac^ 1,1: libbar} to {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bac/1.0.0 results in {bac^ box | libbar->{bac/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated bac/1.0.0 + trace: collect_build: add bas/1.0.0 + trace: collect_build_prerequisites: reeval bas/1.0.0 + trace: postponed_configurations::add: add {bas^ 1,1: libbar} to {bac^ box | libbar->{bac/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bas/1.0.0 results in {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated bas/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bac/1.0.0 + trace: collect_build_prerequisites: resume bac/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: create {bac | libbaz->{bac/2,1}} + trace: collect_build_prerequisites: postpone bac/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}}! + trace: collect_build_postponed (2): begin {bac | libbaz->{bac/2,1}} + trace: collect_build_prerequisites: pre-reeval bus/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bus/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bac of dependency libbaz + trace: collect_build_postponed (2): skip existing dependent bus of dependency libbaz since dependent already in cluster {bas | bus->{bas/2,1}} (as a dependency) + trace: collect_build_postponed (2): cfg-negotiate begin {bac | libbaz->{bac/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbaz/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bac/1.0.0 + trace: collect_build_prerequisites: resume bac/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: add {bac 3,1: libfoo} to {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{box/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bac/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent bac/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bac/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bac | libbaz->{bac/2,1}}! + trace: collect_build_postponed (3): begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent bas of dependency bus + trace: collect_build_postponed (3): cfg-negotiate begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: add {bus 1,1: libbaz} to {bac | libbaz->{bac/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bus/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbaz/1.0.0 of dependent bus/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: create {bus | foo->{bus/2,1}} + trace: collect_build_prerequisites: postpone bus/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: end bas/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {bas | bus->{bas/2,1}}! + trace: collect_build_postponed (4): begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent bus of dependency foo + trace: collect_build_postponed (4): cfg-negotiate begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: add {foo 1,1: libfoo} to {bac^ bas^ box | libbar->{bac/1,1 bas/1,1 box/1,1} libfoo->{bac/3,1 box/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent foo/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent foo/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build_prerequisites: end bus/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {bus | foo->{bus/2,1}}! + trace: collect_build_postponed (4): end {bus | foo->{bus/2,1}} + trace: collect_build_postponed (3): end {bas | bus->{bas/2,1}} + trace: collect_build_postponed (2): end {bac | libbaz->{bac/2,1}} + trace: collect_build_postponed (1): end {box | libbar->{box/1,1} libfoo->{box/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new box/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_drop bac bas box + } + + : replace-configured-dependency + : + { + $clone_cfg; + + # Dependencies: + # + # diz: depends: dox(c) + # depends: libbox(c) + # depends: libbar(c) + # + # dox: depends: dex(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # bar: depends: libbar(c) + # + $* diz libbar/0.1.0 ?libbox/0.1.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 libbox configured !0.1.0 available 1.0.0 - !tix configured 0.1.0 available 1.0.0 - !bar configured 1.0.0 - !libbar configured 1.0.0 - !bux configured 1.0.0 + EOO + + cat cfg/libbox-0.1.0/build/config.build >>~%EOO%; + %.* + config.libbox.extras = true + EOO + + $* --upgrade --recursive 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/0.1.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent diz/1.0.0 involves (being) negotiated configurations and results in {bar^ diz | libbar->{bar/1,1 diz/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bar^ | libbar->{bar/1,1}} failed due to dependent diz, refining configuration + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/0.1.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/0.1.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent diz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent diz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end diz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {diz | libbox->{diz/2,1}}! + trace: collect_build_postponed (5): begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): skip being built existing dependent dex of dependency bar + trace: collect_build_postponed (5): cfg-negotiate begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bar^ diz | libbar->{bar/1,1 diz/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | libfoo->{dex/2,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): skip being built existing dependent dex of dependency libfoo + trace: collect_build_postponed (6): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (6): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build_prerequisites: end dex/1.0.0 + trace: collect_build_postponed (6): cfg-negotiate end {dex | libfoo->{dex/2,1}}! + trace: collect_build_postponed (6): end {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (5): end {dex | bar->{dex/1,1}} + trace: collect_build_postponed (4): end {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (3): end {dox | dex->{dox/1,1}} + trace: collect_build_postponed (2): end {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (1): end {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbox/0.1.0: update to libbox/1.0.0 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbox/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbox/1.0.0 over libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbox/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbox/1.0.0 over libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent diz/1.0.0 involves (being) negotiated configurations and results in {bar^ diz | libbar->{bar/1,1 diz/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bar^ | libbar->{bar/1,1}} failed due to dependent diz, refining configuration + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbox/1.0.0 over libbox/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent diz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent diz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end diz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {diz | libbox->{diz/2,1}}! + trace: collect_build_postponed (5): begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): skip being built existing dependent dex of dependency bar + trace: collect_build_postponed (5): cfg-negotiate begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bar^ diz | libbar->{bar/1,1 diz/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | libfoo->{dex/2,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): skip being built existing dependent dex of dependency libfoo + trace: collect_build_postponed (6): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (6): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build_prerequisites: end dex/1.0.0 + trace: collect_build_postponed (6): cfg-negotiate end {dex | libfoo->{dex/2,1}}! + trace: collect_build_postponed (6): end {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (5): end {dex | bar->{dex/1,1}} + trace: collect_build_postponed (4): end {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (3): end {dox | dex->{dox/1,1}} + trace: collect_build_postponed (2): end {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (1): end {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by diz) + reconfigure/update bar/1.0.0 (required by dex) + config.bar.extras=true (set by dex) + reconfigure/update dex/1.0.0 (required by dox) + config.dex.extras=true (set by dox) + reconfigure/update dox/1.0.0 (required by diz) + config.dox.extras=true (set by diz) + upgrade libbox/1.0.0 + config.libbox.extras=true (set by diz) + reconfigure/update diz/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + cat cfg/libbox-1.0.0/build2/config.build2 >>~%EOO%; + %.* + config.libbox.extras = true + EOO + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 !libbar configured 1.0.0 - !bex configured 1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop diz libbar --drop-dependent + } + + : multiple-dependency-postpones + : + { + $clone_cfg; + + # Dependencies: + # + # diz: depends: dox(c) + # depends: libbox(c) + # depends: libbar(c) + # + # dox: depends: dex(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # bar: depends: libbar(c) + # + $* diz dex libbar/0.1.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured dex/1.0.0 + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (dex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent diz/1.0.0 involves (being) negotiated configurations and results in {bar^ diz | libbar->{bar/1,1 diz/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bar^ | libbar->{bar/1,1}} failed due to dependent diz, refining configuration + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent diz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent diz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end diz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {diz | libbox->{diz/2,1}}! + trace: collect_build_postponed (5): begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): skip being built existing dependent dex of dependency bar + trace: collect_build_postponed (5): cfg-negotiate begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bar/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bar^ diz | libbar->{bar/1,1 diz/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | libfoo->{dex/2,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): skip being built existing dependent dex of dependency libfoo + trace: collect_build_postponed (6): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (6): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build_prerequisites: end dex/1.0.0 + trace: collect_build_postponed (6): cfg-negotiate end {dex | libfoo->{dex/2,1}}! + trace: collect_build_postponed (6): end {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (5): end {dex | bar->{dex/1,1}} + trace: collect_build_postponed (4): end {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (3): end {dox | dex->{dox/1,1}} + trace: collect_build_postponed (2): end {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (1): end {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by diz) + reconfigure/update bar/1.0.0 (required by dex) + config.bar.extras=true (set by dex) + reconfigure/update dex/1.0.0 + config.dex.extras=true (set by dox) + reconfigure/update dox/1.0.0 (required by diz) + config.dox.extras=true (set by diz) + reconfigure/update diz/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 !libbar configured 1.0.0 - !boo configured 1.0.0 + libbox configured 1.0.0 + EOO + + $pkg_drop diz dex libbar --drop-dependent + } + + : collected-dependency-non-negotiated-cluster + : + { + $clone_cfg; + + # Dependencies: + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + $* tiz libbar/0.1.0 --verbose 1 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libbar/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of existing dependent tiz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: skip configured tiz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip existing dependent tex of dependency libbar since dependent already in cluster {tiz^ | tex->{tiz/1,1}} (as a dependency) + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: add {tiz^ 1,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 involves (being) negotiated configurations and results in {tex^ | libbar->{tex/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tex^ | libbar->{tex/1,1}} failed due to dependent tex, refining configuration + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip existing dependent tex of dependency libbar since dependent already in cluster {tiz^ | tex->{tiz/1,1}} (as a dependency) + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: add {tiz^ 1,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (1): end {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by tex) + reconfigure/update tex/1.0.0 (required by tiz) + config.tex.extras=true (set by tiz) + config.tex.libfoo_extras=true (set by tex) + reconfigure/update tiz/1.0.0 + config.tiz.tex_extras=true (set by tiz) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !tiz configured 1.0.0 !libbar configured 1.0.0 - !biz configured 1.0.0 - !boo configured 1.0.0 - !libbar configured 1.0.0 - !buz configured 1.0.0 - !bux configured 1.0.0 + tex configured 1.0.0 !libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tiz libbar --drop-dependent + } + + : from-scratch-refinement-drop + : + { + $clone_cfg; + + # Dependencies: + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # toz: depends: libbaz(c) + # depends: libfoo(c) + # depends: libbar(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar (c) + # + # toz/0.1.0: + # + $* tiz toz --verbose 1 2>!; + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !toz configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* tez 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): begin {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (3): re-evaluate existing dependents for {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tez | libbar->{tex/1,1 tez/3,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): begin {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (3): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (3): re-evaluate existing dependents for {tez | libbar->{tez/3,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {tez | libbar->{tez/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tez | libbar->{tez/3,1}}! + trace: collect_build_postponed (4): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tez | libbar->{tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex tez | libbar->{tex/1,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (5): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (5): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (5): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (5): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (5): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (4): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {tez | libbar->{tez/3,1}} + trace: collect_build_postponed (2): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (1): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbaz/1.0.0: unused + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_drop: add libbaz + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): begin {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (3): re-evaluate existing dependents for {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tez | libbar->{tex/1,1 tez/3,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_drop: add libbaz + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbox/1.0.0 + trace: collect_build_prerequisites: end libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): begin {tez | libbar->{tez/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (3): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (3): re-evaluate existing dependents for {tez | libbar->{tez/3,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {tez | libbar->{tez/3,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tez | libbar->{tez/3,1}}! + trace: collect_build_postponed (4): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tez | libbar->{tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex tez | libbar->{tex/1,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (5): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (5): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (5): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (5): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (5): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (4): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {tez | libbar->{tez/3,1}} + trace: collect_build_postponed (2): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (1): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new libbox/1.0.0 (required by tez) + config.libbox.extras=true (set by tez) + drop libbaz/1.0.0 (unused) + downgrade toz/0.1.0 (required by tez) + config.toz.extras=true (set by tez) + new tez/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + EOO + + $pkg_drop tiz toz tez + } + + : from-scratch-refinement-upgrade + : + { + $clone_cfg; + + # Dependencies: + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # + # toz/0.1.0: + # + # tuz: depends: toz (c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + # toz/1.0.0: depends: libbaz(c) + # depends: libfoo(c) + # depends: libbar(c) + # + $* tiz tez/0.1.0 tuz --verbose 1 2>!; + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tez configured !0.1.0 available 1.0.0 + libbox configured 1.0.0 + toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + toz configured 0.1.0 available 1.0.0 0.2.0 + EOO + + $* tix ?tez ?toz 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tix | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: add {tix 2,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tix | libbar->{tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: end tix/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex tix | libbar->{tex/1,1 tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tix tiz^ | tex->{tix/2,1 tiz/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (1): end {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: tez/0.1.0: unused + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_drop: overwrite tez + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tix | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_drop: overwrite tez + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: add {tix 2,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tix | libbar->{tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: end tix/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex tix | libbar->{tex/1,1 tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tix tiz^ | tex->{tix/2,1 tiz/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (1): end {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbox/1.0.0: unused + %.* + trace: evaluate_dependency: toz/0.1.0: update to toz/1.0.0 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_drop: overwrite tez + trace: collect_drop: add libbox + trace: collect_build_prerequisites: skip being dropped existing dependent tez of dependency toz + trace: collect_build_prerequisites: pre-reeval tuz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tuz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency toz/1.0.0 of existing dependent tuz/1.0.0 due to dependency toz/1.0.0 + trace: collect_build: add tuz/1.0.0 + trace: postponed_configurations::add: create {tuz^ | toz->{tuz/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ tix | libbar->{tex/1,1 tix/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tix/1.0.0 + trace: collect_build_prerequisites: begin tix/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_drop: overwrite tez + trace: collect_drop: add libbox + trace: collect_build_prerequisites: skip being dropped existing dependent tez of dependency toz + trace: collect_build_prerequisites: pre-reeval tuz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tuz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency toz/1.0.0 of existing dependent tuz/1.0.0 due to dependency toz/1.0.0 + trace: collect_build: add tuz/1.0.0 + trace: postponed_configurations::add: create {tuz^ | toz->{tuz/1,1}} + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/1,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: add {tix 2,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tix | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tuz^ | toz->{tuz/1,1}} + trace: collect_build_postponed (2): skip being dropped existing dependent tez of dependency toz + trace: collect_build_prerequisites: pre-reeval tuz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tuz/1.0.0: 1,1 + trace: collect_build_postponed (2): re-evaluate existing dependents for {tuz^ | toz->{tuz/1,1}} + trace: collect_build_prerequisites: reeval tuz/1.0.0 + trace: collect_build: pick toz/1.0.0 over toz/0.1.0 + trace: postponed_configurations::add: add {tuz^ 1,1: toz} to {tuz^ | toz->{tuz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tuz/1.0.0 results in {tuz^ | toz->{tuz/1,1}} + trace: collect_build_prerequisites: re-evaluated tuz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {tuz^ | toz->{tuz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent toz/1.0.0 + trace: postponed_configurations::add: create {toz | libbaz->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tuz/1.0.0 + trace: collect_build_prerequisites: resume tuz/1.0.0 + trace: collect_build_prerequisites: end tuz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tuz^ | toz->{tuz/1,1}}! + trace: collect_build_postponed (3): begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (3): cfg-negotiate begin {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tix | libbar->{tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tix/1.0.0 + trace: collect_build_prerequisites: resume tix/1.0.0 + trace: collect_build_prerequisites: end tix/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex tix | libbar->{tex/1,1 tix/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tix tiz^ | tex->{tix/2,1 tiz/1,1}}! + trace: collect_build_postponed (4): begin {toz | libbaz->{toz/1,1}} + trace: collect_build_postponed (4): cfg-negotiate begin {toz | libbaz->{toz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent toz/1.0.0 + trace: collect_build_prerequisites: resume toz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/1.0.0 + trace: postponed_configurations::add: add {toz 2,1: libfoo} to {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone toz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {toz | libbaz->{toz/1,1}}! + trace: collect_build_postponed (5): begin {tex toz | libfoo->{tex/2,1 toz/2,1}} + trace: collect_build_postponed (5): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (5): cfg-negotiate begin {tex toz | libfoo->{tex/2,1 toz/2,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent toz/1.0.0 + trace: collect_build_prerequisites: resume toz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/1.0.0 + trace: postponed_configurations::add: add {toz 3,1: libbar} to {tex tix tiz | libbar->{tex/1,1 tix/1,1 tiz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent toz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent toz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end toz/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {tex toz | libfoo->{tex/2,1 toz/2,1}}! + trace: collect_build_postponed (5): end {tex toz | libfoo->{tex/2,1 toz/2,1}} + trace: collect_build_postponed (4): end {toz | libbaz->{toz/1,1}} + trace: collect_build_postponed (3): end {tix tiz^ | tex->{tix/2,1 tiz/1,1}} + trace: collect_build_postponed (2): end {tuz^ | toz->{tuz/1,1}} + trace: collect_build_postponed (1): end {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + drop libbox/1.0.0 (unused) + new libbaz/1.0.0 (required by toz) + config.libbaz.extras=true (set by toz) + new tix/1.0.0 + upgrade toz/1.0.0 + config.toz.extras=true (set by tuz) + drop tez/0.1.0 (unused) + reconfigure tuz/1.0.0 (dependent of toz) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tuz configured 1.0.0 + toz configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + !tix configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tiz tuz tix + } + + : reeval-cycle-resolution + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # box/0.1.0: depends: libbox(c) + # + $* bax tex --verbose 1 2>!; + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* box/0.2.0 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add box/0.2.0 + trace: collect_build_prerequisites: begin box/0.2.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent box/0.2.0 + trace: postponed_configurations::add: create {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: postpone box/0.2.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + %.* + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: postponed_configurations::add: merge {tex^ | libbar->{tex/1,1}} into {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box tex^ | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box tex^ | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + %.* + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 involves negotiated configurations and results in {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + %.* + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: merge configuration cycle detected for being re-evaluated dependent tex/1.0.0 since {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}! is a shadow of itself, throwing merge_configuration_cycle + trace: collect_build_postponed (2): re-evaluation of existing dependent tex/1.0.0 failed due to merge configuration cycle for {bax^ | libfoo->{bax/1,1}}, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tex/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: postponed_configurations::add: merge {tex | libbar->{tex/1,1}} into {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box tex | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box tex | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + %.* + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + %.* + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 involves (being) negotiated configurations and results in {box tex | libbox->{box/1,1} libbar->{tex/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to dependent tex, refining configuration + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + %.* + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + %.* + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): begin {bax^ tex | libfoo->{bax/1,1 tex/2,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ tex | libfoo->{bax/1,1 tex/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box tex | libbox->{box/1,1} libbar->{tex/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ tex | libfoo->{bax/1,1 tex/2,1}}! + trace: collect_build_postponed (2): end {bax^ tex | libfoo->{bax/1,1 tex/2,1}} + trace: collect_build_postponed (1): end {box | libbox->{box/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new box/0.2.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !box configured !0.2.0 available 1.0.0 + libbox configured 1.0.0 + EOO + + $pkg_drop bax tex box + } + + : up-negotiate-not-collected-existing-dependents + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # box/0.1.0: depends: libbox(c) + # + $* bax tiz --verbose 1 2>!; + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* box/0.2.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add box/0.2.0 + trace: collect_build_prerequisites: begin box/0.2.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent box/0.2.0 + trace: postponed_configurations::add: create {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: postpone box/0.2.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: postponed_configurations::add: merge {tex^ | libbar->{tex/1,1}} into {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box tex^ | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box tex^ | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 involves negotiated configurations and results in {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: merge configuration cycle detected for being re-evaluated dependent tex/1.0.0 since {box tex^ | libbox->{box/1,1} libbar->{tex/1,1}}! is a shadow of itself, throwing merge_configuration_cycle + trace: collect_build_postponed (2): re-evaluation of existing dependent tex/1.0.0 failed due to merge configuration cycle for {bax^ | libfoo->{bax/1,1}}, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tex/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: postponed_configurations::add: merge {tex | libbar->{tex/1,1}} into {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box tex | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box tex | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {box | libbox->{box/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 adds not (being) collected dependencies libbar/1.0.0 with not (being) collected existing dependents to (being) negotiated cluster and results in {box tex | libbox->{box/1,1} libbar->{tex/1,1}}!, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tiz/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add box/0.2.0 + trace: collect_build_prerequisites: begin box/0.2.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent box/0.2.0 + trace: postponed_configurations::add: create {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: postpone box/0.2.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip dep-postponed existing dependent tex of dependency libfoo + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 adds not (being) collected dependencies libbar/1.0.0 with not (being) collected existing dependents to (being) negotiated cluster and results in {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}!, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tex/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (0): schedule re-collection of existing dependent tiz/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: create {tiz | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tiz/1.0.0 + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tiz of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {box | libbox->{box/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (1): begin {box | libbox->{box/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {box | libbox->{box/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {box | libbox->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/0.2.0 + trace: collect_build_prerequisites: resume box/0.2.0 + trace: collect_build_prerequisites: end box/0.2.0 + trace: collect_build_postponed (1): cfg-negotiate end {box | libbox->{box/1,1}}! + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: create {tiz | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tiz/1.0.0 + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {box | libbox->{box/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tiz of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_postponed (2): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (3): begin {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (3): cfg-negotiate begin {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {bax box | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {bax box tex | libbox->{bax/2,1 box/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tiz | tex->{tiz/1,1}}! + trace: collect_build_postponed (3): end {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (2): end {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (1): end {box | libbox->{box/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new box/0.2.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !box configured !0.2.0 available 1.0.0 + libbox configured 1.0.0 + EOO + + $pkg_drop bax tiz box + } + + : up-negotiate-not-collected-existing-dependents2 + : + : Similar to the above but more complicated. + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar(c) + # + # tvz: depends: toz == 0.2.0 (c) + # + # toz/0.1.0: + # + $* bax tiz --verbose 1 2>!; + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* tez 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {tex^ | libbar->{tex/1,1}} into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax tex^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax tex^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tez | libbox->{tez/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 involves negotiated configurations and results in {tex^ tez | libbox->{tez/1,1} libbar->{tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {tex^ tez | libbox->{tez/1,1} libbar->{tex/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tez | libbox->{tez/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: merge configuration cycle detected for being re-evaluated dependent tex/1.0.0 since {tex^ tez | libbox->{tez/1,1} libbar->{tex/1,1}}! is a shadow of itself, throwing merge_configuration_cycle + trace: collect_build_postponed (2): re-evaluation of existing dependent tex/1.0.0 failed due to merge configuration cycle for {bax^ | libfoo->{bax/1,1}}, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tex/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {tex | libbar->{tex/1,1}} into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax tex tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax tex tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tez | libbox->{tez/1,1}}! (shadow cluster-based) + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 adds not (being) collected dependencies libbar/1.0.0 with not (being) collected existing dependents to (being) negotiated cluster and results in {tex tez | libbox->{tez/1,1} libbar->{tex/1,1}}!, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tiz/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip dep-postponed existing dependent tex of dependency libfoo + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 adds not (being) collected dependencies libbar/1.0.0 with not (being) collected existing dependents to (being) negotiated cluster and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}!, throwing recollect_existing_dependents + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to some existing dependents related problem, scheduling their re-collection + trace: collect_build_postponed (0): schedule re-collection of existing dependent tex/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (0): schedule re-collection of existing dependent tiz/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: create {tiz | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tiz/1.0.0 + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tiz of dependency libbar + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_prerequisites: begin tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: create {tiz | tex->{tiz/1,1}} + trace: collect_build_prerequisites: postpone tiz/1.0.0 + trace: collect_build_postponed (1): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent tex of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: skip being built existing dependent tiz of dependency libbar + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_postponed (2): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (3): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (3): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): skip re-collection of dep-postponed package tex + trace: collect_build_postponed (4): begin {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {bax tex tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1 tez/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz | tex->{tiz/1,1}}! + trace: collect_build_postponed (4): end {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): end {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (1): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new toz/0.1.0 (required by tez) + config.toz.extras=true (set by tez) + new tez/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + toz configured 0.1.0 available 1.0.0 0.2.0 + EOO + + # While at it make sure that we won't be able to build tvz since it + # requires toz of the 0.2.0 version, which initially can't be + # satisfied. But this get automatically resolved by the unsatisfied + # constraints resolution machinery. + # + $* tvz 2>&1 != 0 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz | libfoo->{toz/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tex^ | libbar->{bax/2,1 tex/1,1} libbox->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_postponed (3): begin {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libbar + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip dep-postponed existing dependent tex of dependency libfoo + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz | libfoo->{toz/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_postponed (3): begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbar + trace: collect_build_postponed (3): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 1,1: libbox} to {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {bax tex tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (4): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (2): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replace conflicting dependent version tvz/1.0.0 with 0.1.0 by adding constraint 'tvz' -> 'tvz == 0.1.0' on command line + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: skip configured bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tex^ | libbar->{bax/2,1 tex/1,1} libbox->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): begin {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libbar + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/0.1.0 + trace: collect_build_prerequisites: begin tvz/0.1.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bax/1.0.0 of dependent tvz/0.1.0 + trace: collect_build_prerequisites: skip configured bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tvz/0.1.0 + trace: postponed_configurations::add: add {tvz 3,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone tvz/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip dep-postponed existing dependent tex of dependency libfoo + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tvz/0.1.0 + trace: collect_build_prerequisites: resume tvz/0.1.0 + trace: collect_build_prerequisites: end tvz/0.1.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_postponed (3): begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbar + trace: collect_build_postponed (3): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 1,1: libbox} to {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ toz tvz | libfoo->{bax/1,1 toz/1,1 tvz/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {bax tex tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (4): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (2): end {toz tvz | libfoo->{toz/1,1 tvz/3,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent tvz/0.1.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement of conflicting dependent version tvz/0.1.0 is denied since it is specified on command line as 'tvz == 0.1.0' + trace: pkg_build: cannot replace any package, rolling back latest command line adjustment ('tvz' -> 'tvz == 0.1.0') + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz | libfoo->{toz/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: reeval tex/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax tex^ | libbar->{bax/2,1 tex/1,1} libbox->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_postponed (3): begin {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libbar + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbox + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax tex^ toz | libbar->{bax/2,1 tex/1,1 toz/2,1} libbox->{bax/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tvz/1.0.0 + trace: collect_build_prerequisites: begin tvz/1.0.0 + trace: collect_build: add toz/0.2.0 + info: package tvz dependency on (toz == 0.2.0) is forcing upgrade of toz/0.1.0 to 0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tvz/1.0.0 + trace: postponed_configurations::add: create {tvz | toz->{tvz/1,1}} + trace: collect_build_prerequisites: postpone tvz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): skip unsatisfied existing dependent tez of dependency toz/0.2.0 due to constraint (toz == 0.1.0) + trace: collect_build_postponed (1): cfg-negotiate begin {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.2.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: create {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tvz/1.0.0 + trace: collect_build_prerequisites: resume tvz/1.0.0 + trace: collect_build_prerequisites: end tvz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tvz | toz->{tvz/1,1}}! + trace: collect_build_postponed (2): begin {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip dep-postponed existing dependent tex of dependency libfoo + trace: collect_build: add tex/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {toz | libfoo->{toz/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {toz | libfoo->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ toz | libfoo->{bax/1,1 toz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent toz/0.2.0 + trace: postponed_configurations::add: add {toz 2,1: libbar} to {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone toz/0.2.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_postponed (3): begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: pre-reeval tez/1.0.0 + trace: collect_build_prerequisites: re-evaluation of dependent tez/1.0.0 deviated for depends clause 2: now cannot select alternative, previously 1 was selected + trace: collect_build_postponed (3): schedule re-collection of deviated existing dependent tez/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent tez of dependency libbar + trace: collect_build_postponed (3): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent toz/0.2.0 + trace: collect_build_prerequisites: resume toz/0.2.0 + trace: collect_build_prerequisites: end toz/0.2.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 1,1: libbox} to {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build: postpone failure for dependent tez unsatisfied with dependency toz/0.2.0 (== 0.1.0) + trace: collect_build: pick toz/0.2.0 over toz/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.2.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 2,1: toz} to {tvz | toz->{tvz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency toz/0.2.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (4): begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (4): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {bax tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 2,1: libfoo} to {bax^ toz | libfoo->{bax/1,1 toz/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {bax tex tez toz | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 tex/1,1 tez/3,1 toz/2,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (4): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (3): end {bax toz | libbox->{bax/2,1} libbar->{bax/2,1 toz/2,1}} + trace: collect_build_postponed (2): end {toz | libfoo->{toz/1,1}} + trace: collect_build_postponed (1): end {tvz | toz->{tvz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: pkg_build: try to replace unsatisfactory dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace unsatisfied dependent tez/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependent: try to replace conflicting dependent tvz/1.0.0 of dependency toz/0.2.0 with some other version + trace: try_replace_dependency: replacement tvz/0.1.0 tried earlier for same command line, skipping + error: unable to satisfy constraints on package toz + info: tvz/1.0.0 depends on (toz == 0.2.0) + info: tez/1.0.0 depends on (toz == 0.1.0) + info: available toz/0.2.0 + info: available toz/0.1.0 + info: while satisfying tez/1.0.0 + info: explicitly specify toz version to manually satisfy both constraints + %.* + EOE + + $pkg_drop bax tiz tez + } + + : merge-config-version-replacement + : + { + $clone_cfg; + + # Dependencies: + # + # box: depends: {libbar libfoo} (c) | libbox + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # toz: depends: libbaz(c) + # depends: libfoo(c) + # depends: libbar(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar(c) + # + # toz/0.1.0: + # + $* box bax toz --verbose 1 2>!; + + $pkg_status -r >>EOO; + !box configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !toz configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* tez 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (2): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {tez | libbox->{tez/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval toz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated toz/1.0.0: 1,1 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build: add toz/1.0.0 + trace: collect_build_prerequisites: reeval toz/1.0.0 + trace: postponed_configurations::add: create {toz^ | libbaz->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent toz/1.0.0 results in {toz^ | libbaz->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluated toz/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: pick toz/0.1.0 over toz/1.0.0 + trace: collect_build: toz/1.0.0 package version needs to be replaced with toz/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: apply version replacement for toz/0.1.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (2): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {tez | libbox->{tez/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (1): skip expected to be built existing dependent toz of dependency libfoo + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (1): skip expected to be built existing dependent toz of dependency libbar + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: apply version replacement for toz/0.1.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bax^ box^ tez | libbox->{bax/2,1 tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{bax/2,1 box/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax^ box^ tez | libbox->{bax/2,1 tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{bax/2,1 box/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (2): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (1): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbaz/1.0.0: unused + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_drop: add libbaz + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (2): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {tez | libbox->{tez/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_prerequisites: pre-reeval toz/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated toz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build: add toz/1.0.0 + trace: collect_build_prerequisites: reeval toz/1.0.0 + trace: postponed_configurations::add: create {toz^ | libbaz->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent toz/1.0.0 results in {toz^ | libbaz->{toz/1,1}} + trace: collect_build_prerequisites: re-evaluated toz/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: pick toz/0.1.0 over toz/1.0.0 + trace: collect_build: toz/1.0.0 package version needs to be replaced with toz/0.1.0 + trace: pkg_build: collection failed due to package version replacement, retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tez/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_drop: add libbaz + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: apply version replacement for toz/0.1.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1,1}}! + trace: collect_build_postponed (2): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libfoo + trace: collect_build_postponed (2): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (2): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): skip being built existing dependent toz of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {tez | libbox->{tez/1,1}}! + trace: postponed_configurations::add: merge {bax^ box^ | libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? into {bax tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 merges non-negotiated and/or being negotiated configurations in and results in {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}!, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tez | libbox->{tez/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bax box^ tez | libbox->{bax/2,1 tez/1,1} libbar->{bax/2,1 box/1,1} libfoo->{bax/1,1 box/1,1}}! + trace: collect_build_postponed (1): begin {tez | libbox->{tez/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tez | libbox->{tez/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {tez | libbox->{tez/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_prerequisites: pre-reeval box/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated box/1.0.0: 1,1 + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (1): skip expected to be built existing dependent toz of dependency libfoo + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} + trace: collect_build: add box/1.0.0 + trace: collect_build_prerequisites: reeval box/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: postponed_configurations::add: add {box^ 1,1: libbar libfoo} to {bax^ tez | libbox->{tez/1,1} libfoo->{bax/1,1}} (shadow cluster-based) + trace: collect_build_prerequisites: re-evaluating dependent box/1.0.0 results in {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_prerequisites: re-evaluated box/1.0.0 + trace: collect_build_postponed (1): skip being built existing dependent box of dependency libbar + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (1): skip expected to be built existing dependent toz of dependency libbar + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bax^ box^ tez | libbox->{tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{box/1,1}}? (shadow cluster-based) + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is shadow-negotiated + trace: collect_build_prerequisites: dependency libbox/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build: apply version replacement for toz/0.1.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + warning: package tez dependency on (toz == 0.1.0) is forcing downgrade of toz/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: create {tez | toz->{tez/2,1}} + trace: collect_build_prerequisites: postpone tez/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bax^ box^ tez | libbox->{bax/2,1 tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{bax/2,1 box/1,1}}! + trace: collect_build_postponed (2): begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/0.1.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tez/1.0.0 + trace: collect_build_prerequisites: resume tez/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez 3,1: libbar} to {bax^ box^ tez | libbox->{bax/2,1 tez/1,1} libfoo->{bax/1,1 box/1,1} libbar->{bax/2,1 box/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tez/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tez/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tez/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (2): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (1): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + drop libbaz/1.0.0 (unused) + downgrade toz/0.1.0 (required by tez) + config.toz.extras=true (set by tez) + new tez/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !box configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + EOO + + $pkg_drop box bax toz tez + } + + : recollect-dependent-bogus-dependency-postponement + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # bas: depends: libbar(c) + # depends: bus(c) + # + # bus: depends: libbaz(c) + # depends: foo(c) + # + # foo: depends: libfoo(c) + # + # bat: depends: libbaz(c) + # + $* bax bas --verbose 1 2>!; + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !bas configured 1.0.0 + bus configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + EOO + + $* bat 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin bat/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bat/1.0.0 + trace: postponed_configurations::add: create {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: postpone bat/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: pre-reeval bus/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bus/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bat | libbaz->{bat/1,1}} + trace: collect_build: add bus/1.0.0 + trace: collect_build_prerequisites: reeval bus/1.0.0 + trace: postponed_configurations::add: add {bus^ 1,1: libbaz} to {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bus/1.0.0 results in {bat bus^ | libbaz->{bat/1,1 bus/1,1}} + trace: collect_build_prerequisites: re-evaluated bus/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bat bus^ | libbaz->{bat/1,1 bus/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbaz/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bat/1.0.0 + trace: collect_build_prerequisites: resume bat/1.0.0 + trace: collect_build_prerequisites: end bat/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: create {bus | foo->{bus/2,1}} + trace: collect_build_prerequisites: postpone bus/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bat bus^ | libbaz->{bat/1,1 bus/1,1}}! + trace: collect_build_postponed (2): begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (2): skip being built existing dependent bus of dependency foo + trace: collect_build_postponed (2): cfg-negotiate begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build_prerequisites: end bus/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bus | foo->{bus/2,1}}! + trace: collect_build_postponed (3): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (3): skip being built existing dependent foo of dependency libfoo + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (3): re-evaluate existing dependents for {foo | libfoo->{foo/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ foo | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax^ foo | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax^ foo | libfoo->{bax/1,1 foo/1,1}}! + trace: collect_build_postponed (4): begin {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent bax of dependency libbox + trace: collect_build_postponed (4): skip being built existing dependent bax of dependency libbar + trace: collect_build_prerequisites: pre-reeval bas/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bas/1.0.0: 1,1 + trace: collect_build_postponed (4): re-evaluate existing dependents for {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build: add bas/1.0.0 + trace: collect_build_prerequisites: reeval bas/1.0.0 + trace: postponed_configurations::add: add {bas^ 1,1: libbar} to {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: re-evaluating dependent bas/1.0.0 results in {bas^ bax | libbox->{bax/2,1} libbar->{bas/1,1 bax/2,1}} + trace: collect_build_prerequisites: re-evaluated bas/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate begin {bas^ bax | libbox->{bax/2,1} libbar->{bas/1,1 bax/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bus), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin bat/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bat/1.0.0 + trace: postponed_configurations::add: create {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: postpone bat/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: pre-reeval bus/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bus/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bus of dependency libbaz + trace: collect_build: add bus/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bat | libbaz->{bat/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbaz/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bat/1.0.0 + trace: collect_build_prerequisites: resume bat/1.0.0 + trace: collect_build_prerequisites: end bat/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bat | libbaz->{bat/1,1}}! + trace: collect_build_prerequisites: pre-reeval bas/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bas/1.0.0: 1,1 + trace: collect_build_postponed (1): schedule re-collection of existing dependent bas/1.0.0 due to bogus postponement of dependency bus + trace: collect_build: add bas/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): begin {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bas of dependency libbar + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bas | libbar->{bas/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bas | libbar->{bas/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bas | libbar->{bas/1,1}}! + trace: collect_build_postponed (3): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: reeval foo/1.0.0 + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent foo/1.0.0 results in {bax^ foo^ | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_prerequisites: re-evaluated foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax^ foo^ | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bas | libbar->{bas/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bas bax | libbar->{bas/1,1 bax/2,1} libbox->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {bas | libbar->{bas/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (2): begin {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bas of dependency libbar + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bas | libbar->{bas/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bas | libbar->{bas/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bas | libbar->{bas/1,1}}! + trace: collect_build_postponed (3): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (3): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: reeval foo/1.0.0 + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent foo/1.0.0 results in {bax^ foo^ | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_prerequisites: re-evaluated foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax^ foo^ | libfoo->{bax/1,1 foo/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bas | libbar->{bas/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent foo/1.0.0 + trace: collect_build_prerequisites: resume foo/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax^ foo^ | libfoo->{bax/1,1 foo/1,1}}! + trace: collect_build_postponed (4): begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent bas of dependency bus + trace: collect_build_postponed (4): cfg-negotiate begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: add {bus 1,1: libbaz} to {bat | libbaz->{bat/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bus/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbaz/1.0.0 of dependent bus/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cannot cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (foo), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin bat/1.0.0 + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bat/1.0.0 + trace: postponed_configurations::add: create {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: postpone bat/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: pre-reeval bus/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bus/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bus of dependency libbaz + trace: collect_build: add bus/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bat | libbaz->{bat/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbaz/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bat/1.0.0 + trace: collect_build_prerequisites: resume bat/1.0.0 + trace: collect_build_prerequisites: end bat/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bat | libbaz->{bat/1,1}}! + trace: collect_build_prerequisites: pre-reeval bas/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bas/1.0.0: 1,1 + trace: collect_build_postponed (1): schedule re-collection of existing dependent bas/1.0.0 due to bogus postponement of dependency bus + trace: collect_build: add bas/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): begin {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bas of dependency libbar + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bas | libbar->{bas/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bas | libbar->{bas/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bas | libbar->{bas/1,1}}! + trace: collect_build_postponed (3): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (3): skip dep-postponed existing dependent foo of dependency libfoo + trace: collect_build: add foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bas | libbar->{bas/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bas bax | libbar->{bas/1,1 bax/2,1} libbox->{bax/2,1}}!, throwing retry_configuration + trace: collect_build_postponed (1): cfg-negotiation of {bas | libbar->{bas/1,1}} failed due to dependent bax, refining configuration + trace: collect_build_postponed (2): begin {bas | libbar->{bas/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (2): skip being built existing dependent bas of dependency libbar + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_postponed (2): re-evaluate existing dependents for {bas | libbar->{bas/1,1}} + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate begin {bas | libbar->{bas/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bas | libbar->{bas/1,1}}! + trace: collect_build_postponed (3): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval foo/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated foo/1.0.0: 1,1 + trace: collect_build_postponed (3): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (3): skip dep-postponed existing dependent foo of dependency libfoo + trace: collect_build: add foo/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bas | libbar->{bas/1,1}}! + trace: collect_build_prerequisites: skip being built existing dependent bax of dependency libbox + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_postponed (4): begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): skip being built existing dependent bas of dependency bus + trace: collect_build_postponed (4): cfg-negotiate begin {bas | bus->{bas/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bus/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: add {bus 1,1: libbaz} to {bat | libbaz->{bat/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bus/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbaz/1.0.0 of dependent bus/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent bus/1.0.0 + trace: postponed_configurations::add: create {bus | foo->{bus/2,1}} + trace: collect_build_prerequisites: postpone bus/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent bas/1.0.0 + trace: collect_build_prerequisites: resume bas/1.0.0 + trace: collect_build_prerequisites: end bas/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {bas | bus->{bas/2,1}}! + trace: collect_build_postponed (5): begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (5): skip being built existing dependent bus of dependency foo + trace: collect_build_postponed (5): cfg-negotiate begin {bus | foo->{bus/2,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin foo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 + trace: postponed_configurations::add: add {foo 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent foo/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent foo/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent bus/1.0.0 + trace: collect_build_prerequisites: resume bus/1.0.0 + trace: collect_build_prerequisites: end bus/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {bus | foo->{bus/2,1}}! + trace: collect_build_postponed (5): end {bus | foo->{bus/2,1}} + trace: collect_build_postponed (4): end {bas | bus->{bas/2,1}} + trace: collect_build_postponed (3): end {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (2): end {bas | libbar->{bas/1,1}} + trace: collect_build_postponed (1): end {bat | libbaz->{bat/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + new bat/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !bas configured 1.0.0 + bus configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop bax bas bat + } + + : recollect-pruned-collection + : + { + $clone_cfg; + + $* libbar/0.1.0 libbiz/0.1.0 bax 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !libbiz configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $* --upgrade --immediate 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add libbiz/1.0.0 + trace: collect_build: add bax/1.0.0 + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent bax/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: begin libbiz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent libbiz/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_prerequisites: end libbiz/1.0.0 + trace: collect_build_prerequisites: skip configured bax/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: reeval bax/1.0.0 + trace: postponed_configurations::add: add {bax^ 1,1: libfoo} to {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bax/1.0.0 results in {bax^ | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: re-evaluated bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bax^ | libfoo->{bax/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (libbar), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add libbiz/1.0.0 + trace: collect_build: add bax/1.0.0 + trace: pkg_build: dep-postpone user-specified libbar + trace: collect_build_prerequisites: begin libbiz/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: dep-postpone dependency libbar/1.0.0 of dependent libbiz/1.0.0 + trace: collect_build_prerequisites: end libbiz/1.0.0 + trace: collect_build_prerequisites: skip configured bax/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_prerequisites: pre-reeval bax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated bax/1.0.0: 1,1 + trace: collect_build_postponed (0): schedule re-collection of existing dependent bax/1.0.0 due to bogus postponement of dependency libbar + trace: collect_build_prerequisites: begin bax/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libfoo->{bax/1,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (1): begin {bax | libfoo->{bax/1,1}} + trace: collect_build_postponed (1): skip being built existing dependent bax of dependency libfoo + trace: collect_build_postponed (1): cfg-negotiate begin {bax | libfoo->{bax/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 + trace: postponed_configurations::add: create {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_prerequisites: postpone bax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bax | libfoo->{bax/1,1}}! + trace: collect_build_postponed (2): begin {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbox + trace: collect_build_postponed (2): skip being built existing dependent bax of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 + trace: collect_build_prerequisites: resume bax/1.0.0 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {bax | libbox->{bax/2,1} libbar->{bax/2,1}}! + trace: collect_build_postponed (2): end {bax | libbox->{bax/2,1} libbar->{bax/2,1}} + trace: collect_build_postponed (1): end {bax | libfoo->{bax/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by bax) + upgrade libbiz/1.0.0 + reconfigure/update bax/1.0.0 + config.bax.libfoo_extras=true (set by bax) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !libbiz configured 1.0.0 !libbar configured 1.0.0 - libbox configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop libbar libbiz bax + } + + : optimization + : + { + +$clone_cfg + + : dependency-after-config-clause + : + { + $clone_cfg; + + $* tax ?libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + $* ?libfoo 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libfoo/0.1.0: update to libfoo/1.0.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval tax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tax/1.0.0: 1,1 re-evaluation is optional + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + reconfigure tax (dependent of libfoo) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tax + } + + : dependency-before-config-clause + : + { + $clone_cfg; + + $* tex/0.2.0 ?libbar/0.1.0 2>!; + + $pkg_status -r >>EOO; + !tex configured !0.2.0 available 1.0.0 0.3.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + $* ?libbar 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: execute_plan: simulate: yes + trace: evaluate_dependency: libbar/0.1.0: update to libbar/1.0.0 + trace: pkg_build: refine package collection/plan execution + trace: collect_build_prerequisites: pre-reeval tex/0.2.0 + trace: collect_build_prerequisites: pre-reevaluated tex/0.2.0: 2,1 re-evaluation is optional + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + reconfigure tex (dependent of libbar) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !tex configured !0.2.0 available 1.0.0 0.3.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tex + } + + : other-config-clause + : + { + $clone_cfg; + + $* tax ?libfoo/0.1.0 2>!; + + $pkg_status -r >>EOO; + !tax configured 1.0.0 + libbar configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + EOO + + $* libfoo foo/0.1.0 2>&1 | $filter 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/1.0.0 + trace: collect_build: add foo/0.1.0 + trace: collect_build_prerequisites: pre-reeval tax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tax/1.0.0: 1,1 re-evaluation is optional + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_prerequisites: begin foo/0.1.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent foo/0.1.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (libfoo), retry from scratch + trace: pkg_build: refine package collection/plan execution from scratch + trace: collect_build: add libfoo/1.0.0 + trace: collect_build: add foo/0.1.0 + trace: pkg_build: dep-postpone user-specified libfoo + trace: collect_build_prerequisites: begin foo/0.1.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/0.1.0 + trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone foo/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: pre-reeval tax/1.0.0 + trace: collect_build_prerequisites: pre-reevaluated tax/1.0.0: 1,1 re-evaluation is optional + trace: collect_build: add libbar/1.0.0 + trace: collect_build_postponed (1): re-evaluate existing dependents for {foo | libfoo->{foo/1,1}} + trace: collect_build: add tax/1.0.0 + trace: collect_build_prerequisites: reeval tax/1.0.0 + trace: postponed_configurations::add: create {tax^ | libbar->{tax/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tax/1.0.0 results in {tax^ | libbar->{tax/1,1}} + trace: collect_build_prerequisites: re-evaluated tax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent foo/0.1.0 + trace: collect_build_prerequisites: resume foo/0.1.0 + trace: collect_build_prerequisites: end foo/0.1.0 + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (2): begin {tax^ | libbar->{tax/1,1}} + trace: collect_build_postponed (2): skip being built existing dependent tax of dependency libbar + trace: collect_build_postponed (2): cfg-negotiate begin {tax^ | libbar->{tax/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbar/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 + trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent tax/1.0.0 + trace: collect_build_prerequisites: end tax/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tax^ | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): end {tax^ | libbar->{tax/1,1}} + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (set by foo) + reconfigure tax/1.0.0 (dependent of libfoo) + new foo/0.1.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !tax configured 1.0.0 + libbar configured 1.0.0 + !libfoo configured 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + !libfoo configured 1.0.0 + EOO + + $pkg_drop tax foo libfoo + } + } + + : repo-packages + : + : Don't match the tracing but just make sure that pkg-build doesn't crash + : or hang and ends up with an expected packages setup. + : + { + +$clone_cfg + + # Note that we don't mach the configuration negotiation flows in the + # tests of this scope. + # + test.arguments += --verbose 1 + + # Convert specific warnings to infos since we expect them to + # appear. This, in particular, prevents bbot workers to set task result + # status to warning. + # + warn_to_info = [cmdline] sed -e 's/warning: (package .* is forcing .*)/info: \1/' >&2 + + : new-all + : + { + $clone_cfg; + + $* libfoo libbar ?libbaz/0.1.0 ?libbox/0.1.0 libbiz \ + foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex \ + tix tiz toz tez tuz tux dex dix diz dox 2>!; + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 !toz configured 0.1.0 available 1.0.0 0.2.0 - !bix configured 1.0.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 !bar configured 1.0.0 !libbar configured 1.0.0 !bux configured 1.0.0 !libbar configured 1.0.0 - !libbar configured 1.0.0 - !foo configured 1.0.0 - !libfoo configured 1.0.0 - !fox configured 1.0.0 - !libfoo configured 1.0.0 - !fux configured 1.0.0 - !libfoo configured 1.0.0 - !baz configured 1.0.0 - !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !bac configured 1.0.0 - !libbar configured 1.0.0 - libbaz configured !0.1.0 available 1.0.0 - !libfoo configured 1.0.0 - !fix configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 !foo configured 1.0.0 !libfoo configured 1.0.0 - !fex configured 1.0.0 - !foo configured 1.0.0 + !fox configured 1.0.0 !libfoo configured 1.0.0 - !libfoo configured 1.0.0 - !bus configured 1.0.0 - !foo configured 1.0.0 + !fux configured 1.0.0 + !libfoo configured 1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !libfoo configured 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 !libfoo configured 1.0.0 - libbaz configured !0.1.0 available 1.0.0 - !bas configured 1.0.0 !bus configured 1.0.0 !foo configured 1.0.0 !libfoo configured 1.0.0 libbaz configured !0.1.0 available 1.0.0 - !libbar configured 1.0.0 - !box configured 1.0.0 - !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !bax configured 1.0.0 - !libbar configured 1.0.0 - libbox configured !0.1.0 available 1.0.0 - !libfoo configured 1.0.0 - !buc configured 1.0.0 - !bux configured 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !tax configured 1.0.0 - !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !tex configured 1.0.0 - !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !tiz configured 1.0.0 - !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !libfoo configured 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 !tex configured 1.0.0 !libbar configured 1.0.0 !libfoo configured 1.0.0 - !dex configured 1.0.0 - !bar configured 1.0.0 + !tiz configured 1.0.0 !libbar configured 1.0.0 - !libfoo configured 1.0.0 - !dox configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 !dex configured 1.0.0 !bar configured 1.0.0 !libbar configured 1.0.0 !libfoo configured 1.0.0 - !dix configured 1.0.0 !dox configured 1.0.0 !dex configured 1.0.0 !bar configured 1.0.0 !libbar configured 1.0.0 !libfoo configured 1.0.0 - !libbar configured 1.0.0 - libbox configured !0.1.0 available 1.0.0 - !diz configured 1.0.0 - !dox configured 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar baz bac bat \ + bas bus box bax bux bix bex boo biz buz buc tax tex tix tiz \ + toz tez tuz tux dex dix diz dox + } + + : upgrade + : + { + +$clone_cfg + + : recursive + : + { + +$clone_cfg + + : libs + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + libbiz/0.1.0 foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex tix tiz toz \ + tez tuz tux dex dix diz dox 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !libbiz configured !0.1.0 available 1.0.0 + !bat configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tez configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !box configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $warn_to_info 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar baz bac \ + bat bas bus box bax bux bix bex boo biz buz buc \ + tax tex tix tiz toz tez tuz tux dex dix diz dox + } + + : all + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 ?libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + ?libbiz/0.1.0 foo/0.1.0 fox/0.1.0 fux/0.1.0 fix/0.1.0 fex/0.1.0 \ + bar/0.1.0 baz/0.1.0 bac/1.0.0 bat/1.0.0 bas/1.0.0 bus/0.1.0 \ + box/0.1.0 bax/1.0.0 bux/1.0.0 bix/1.0.0 bex/1.0.0 boo/1.0.0 \ + biz/0.1.0 buz/1.0.0 buc/1.0.0 tax/1.0.0 tex/0.1.0 tix/0.1.0 \ + tiz/1.0.0 toz/0.1.0 tez/1.0.0 tuz/1.0.0 tux/1.0.0 dex/1.0.0 \ + dix/1.0.0 diz/1.0.0 dox/1.0.0 2>!; + + $pkg_status -r >>EOO; + !bat configured !1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !biz configured !0.1.0 available 1.0.0 + libbiz configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !tuz configured !1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !box configured !0.1.0 available 1.0.0 0.2.0 + libbox configured !0.1.0 available 1.0.0 + !tux configured !1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !fox configured !0.1.0 available 1.0.0 0.2.0 + libbar configured !0.1.0 available 1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bex configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !boo configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !buz configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tez configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !bix configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + !baz configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bas configured !1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>&1 | $warn_to_info 2>!; + + $pkg_status -r >>EOO; + !bat configured 1.0.0 + libbaz configured !1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !box configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !bex configured 1.0.0 + libbar configured !1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !tez configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libbar configured !1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + libbar configured !1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + libbar configured !1.0.0 + !bax configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + libbar configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop foo fox fux fix fex bar baz bac bat bas bus box bax bux \ + bix bex boo biz buz buc tax tex tix tiz toz tez tuz tux \ + dex dix diz dox + } + } + + : immediate + : + { + +$clone_cfg + + : libs + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + libbiz/0.1.0 foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex tix tiz toz \ + tez tuz tux dex dix diz dox 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !libbiz configured !0.1.0 available 1.0.0 + !bat configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tez configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !box configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --immediate 2>&1 | $warn_to_info 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar baz bac \ + bat bas bus box bax bux bix bex boo biz buz buc tax \ + tex tix tiz toz tez tuz tux dex dix diz dox + } + + : all + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 ?libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + ?libbiz/0.1.0 foo/0.1.0 fox/0.1.0 fux/0.1.0 fix/0.1.0 fex/0.1.0 \ + bar/0.1.0 baz/0.1.0 bac/1.0.0 bat/1.0.0 bas/1.0.0 bus/0.1.0 \ + box/0.1.0 bax/1.0.0 bux/1.0.0 bix/1.0.0 bex/1.0.0 boo/1.0.0 \ + biz/0.1.0 buz/1.0.0 buc/1.0.0 tax/1.0.0 tex/0.1.0 tix/0.1.0 \ + tiz/1.0.0 toz/0.1.0 tez/1.0.0 tuz/1.0.0 tux/1.0.0 dex/1.0.0 \ + dix/1.0.0 diz/1.0.0 dox/1.0.0 2>!; + + $pkg_status -r >>EOO; + !bat configured !1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !biz configured !0.1.0 available 1.0.0 + libbiz configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !tuz configured !1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !box configured !0.1.0 available 1.0.0 0.2.0 + libbox configured !0.1.0 available 1.0.0 + !tux configured !1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !fox configured !0.1.0 available 1.0.0 0.2.0 + libbar configured !0.1.0 available 1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bex configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !boo configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !buz configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tez configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !bix configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !0.1.0 available 1.0.0 + !fux configured !0.1.0 available 1.0.0 0.2.0 0.1.1 + libfoo configured !0.1.0 available 1.0.0 + !baz configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bas configured !1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --immediate 2>&1 | $warn_to_info 2>!; + + $pkg_status -r >>EOO; + !bat configured 1.0.0 + libbaz configured !1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !box configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !bex configured 1.0.0 + libbar configured !1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !tez configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libbar configured !1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + libbar configured !1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + libbar configured !1.0.0 + !bax configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + libbar configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop foo fox fux fix fex bar baz bac bat bas bus box bax bux \ + bix bex boo biz buz buc tax tex tix tiz toz tez tuz tux \ + dex dix diz dox + } + } + } + + : incrementally + : + { + +$clone_cfg + + : all + : + { + $clone_cfg; + + ps = libfoo libbar libbaz libbox libbiz foo fox fux fix fex bar baz \ + bac bat bas bus box bax bux bix bex boo biz buz buc tax tex \ + tix tiz toz tez tuz tux dex dix diz dox; + + for p: $ps + $* $p 2>&1 | $warn_to_info 2>! + end; + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + !libbaz configured 1.0.0 + !libbox configured 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !fox configured 1.0.0 + !libfoo configured 1.0.0 + !fux configured 1.0.0 + !libfoo configured 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !libfoo configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + !libbaz configured 1.0.0 + !libfoo configured 1.0.0 + !bat configured 1.0.0 + !libbaz configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !libbaz configured 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + !libbox configured 1.0.0 + !libfoo configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + !libbox configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + !libbox configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 !dex configured 1.0.0 !bar configured 1.0.0 !libbar configured 1.0.0 !libfoo configured 1.0.0 - !libbar configured 1.0.0 - libbox configured !0.1.0 available 1.0.0 - EOO + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + !libbox configured 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libbar configured 1.0.0 + !libbox configured 1.0.0 + EOO + + # Drop the configured packages by sequentially turning all of them + # into dependencies. + # + for p: $ps + $* ?$p 2>! + end + } + + : applications + : + { + +$clone_cfg + + : direct-order + : + { + $clone_cfg; + + ps = foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex \ + tix tiz toz tez tuz tux dex dix diz dox; + + for p: $ps + $* $p 2>&1 | $warn_to_info 2>! + end; + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fox configured 1.0.0 + libfoo configured 1.0.0 + !fux configured 1.0.0 + libfoo configured 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libfoo configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !bac configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + !bat configured 1.0.0 + libbaz configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + !box configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + libbar configured 1.0.0 + !bex configured 1.0.0 + libbar configured 1.0.0 + !boo configured 1.0.0 + libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tax configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + EOO - $pkg_drop libfoo libbar foo fox fux fix fex bar \ - baz bac bat bas bus box bax bux bix bex \ - boo biz buz buc tax tex tix tiz toz tez \ - tux dex dix diz dox + # Drop the configured packages by sequentially turning all of them + # into dependencies. + # + for p: $ps + $* ?$p 2>&1 | $warn_to_info 2>! + end + } + + : reverse-order + : + { + $clone_cfg; + + ps = dox diz dix dex tux tuz tez toz tiz tix tex tax buc buz biz \ + boo bex bix bux bax box bus bas bat bac baz bar fex fix fux \ + fox foo; + + for p: $ps + $* $p 2>&1 | $warn_to_info 2>! + end; + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + libbar configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !tux configured 1.0.0 + libbox configured 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tuz configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tez configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tiz configured 1.0.0 + libbar configured 1.0.0 + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !tax configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + !boo configured 1.0.0 + libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured 1.0.0 + !bex configured 1.0.0 + libbar configured 1.0.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + !bux configured 1.0.0 + libbar configured 1.0.0 + libbar configured 1.0.0 + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !box configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured 1.0.0 + !bac configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 1.0.0 + libfoo configured 1.0.0 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + libfoo configured 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fux configured 1.0.0 + libfoo configured 1.0.0 + !fox configured 1.0.0 + libfoo configured 1.0.0 + EOO + + # Drop the configured packages by sequentially turning all of them + # into dependencies. + # + for p: $ps + $* ?$p 2>! + end + } + + : reordered + : + : Vary the order of package builds. Note that the first order is the + : original direct package order and the last one is the reverse + : order. + : + if $all + { + $clone_cfg; + + ds = foo fox fux fix fex bar baz bac bat bas bus box bax bux bix \ + bex boo biz buz buc tax tex tix tiz toz tez tuz tux dex dix \ + diz dox tvz ''; + + # Prepare the package build list. + # + for i: $integer.integer_sequence(1, $name.size($ds)) + d = ($ds[$i]) + ps = + + prepend = true + for p: $ds + if ($p == $d) + prepend = false + end + + if ($p != '') + if $prepend + ps =+ $p + else + ps += $p + end + end + end + + echo $ps >&2 2>| + + # Build the packages, one at a time, creating the list of + # successfully built packages. + # + # Note that a package build may potentially fail due to some + # ambiguity which requires user's additional input. We just + # silently ignore such failures. + # + cps = + for p: $ps + timeout 120 + if $* $p 2>&1 | $warn_to_info 2>! + cps += $p + end + end + + # Drop the configured packages by sequentially turning all of + # them into dependencies. + # + for p: $cps + timeout 120 + $* ?$p 2>! + end + end + } + } + } } } @@ -11350,7 +24428,7 @@ test.options += --no-progress { +$clone_root_cfg && $rep_add $rep/t13a && $rep_fetch - : bar + : bar-baz-biz : { $clone_cfg; @@ -11380,7 +24458,75 @@ test.options += --no-progress config.liba.backend = cli EOO - $pkg_drop bar + # Make sure that since baz doesn't reconfigure liba (it also accepts + # the cli backend for liba) the re-evaluated existing dependents bar + # and the liba dependency doesn't get reconfigured. + # + $* baz 2>>~%EOE%; + build plan: + new baz/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + !baz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.backend = cli + EOO + + # Make sure that when biz reconfigures liba (it only accepts the gui + # backend for liba), the re-evaluated existing dependents bar and baz + # are also reconfigured. + # + $* biz 2>>~%EOE%; + build plan: + reconfigure/update liba/1.0.0 (required by bar, baz, biz) + config.liba.backend=gui (set by biz) + reconfigure baz/1.0.0 (dependent of liba) + reconfigure bar/1.0.0 (dependent of liba) + new biz/1.0.0 + disfigured bar/1.0.0 + disfigured baz/1.0.0 + disfigured liba/1.0.0 + fetched biz/1.0.0 + unpacked biz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + configured bar/1.0.0 + configured biz/1.0.0 + %info: .+biz.+ is up to date% + %info: .+baz.+ is up to date% + %info: .+bar.+ is up to date% + updated biz/1.0.0 + updated baz/1.0.0 + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + !baz configured 1.0.0 + liba configured 1.0.0 + !biz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.backend = gui + EOO + + $pkg_drop bar baz biz } : baz @@ -11501,7 +24647,7 @@ test.options += --no-progress $pkg_drop baz bar } - : bar-baz-biz + : bar-baz-biz-box : { $clone_cfg; @@ -11547,7 +24693,44 @@ test.options += --no-progress config.liba.backend = gui EOO - $pkg_drop bar baz biz + # Make sure that since box doesn't reconfigure liba (it accepts any + # backend for liba and just reflects it in its own configuration) none + # of the re-evaluated existing dependents nor the liba dependency get + # reconfigured. + # + $* box 2>>~%EOE%; + build plan: + new box/1.0.0 + config.box.liba_backend=gui (set by box) + fetched box/1.0.0 + unpacked box/1.0.0 + configured box/1.0.0 + %info: .+box.+ is up to date% + updated box/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + !baz configured 1.0.0 + liba configured 1.0.0 + !biz configured 1.0.0 + liba configured 1.0.0 + !box configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.backend = gui + EOO + + cat cfg/box-1.0.0/build/config.build >>~%EOO%; + %.* + config.box.liba_backend = gui + EOO + + $pkg_drop bar baz biz box } } @@ -11635,9 +24818,7 @@ test.options += --no-progress unpacked bar/1.0.0 configured liba/1.0.0 configured bar/1.0.0 - %info: .+liba.+ is up to date% %info: .+bar.+ is up to date% - updated liba/1.0.0 updated bar/1.0.0 EOE @@ -11706,9 +24887,7 @@ test.options += --no-progress unpacked baz/1.0.0 configured liba/1.0.0 configured baz/1.0.0 - %info: .+liba.+ is up to date% %info: .+baz.+ is up to date% - updated liba/1.0.0 updated baz/1.0.0 EOE @@ -11909,9 +25088,7 @@ test.options += --no-progress unpacked bar/1.0.0 configured liba/1.0.0 configured bar/1.0.0 - %info: .+liba.+ is up to date% %info: .+bar.+ is up to date% - updated liba/1.0.0 updated bar/1.0.0 EOE @@ -12092,9 +25269,7 @@ test.options += --no-progress unpacked baz/1.0.0 configured liba/1.0.0 configured baz/1.0.0 - %info: .+liba.+ is up to date% %info: .+baz.+ is up to date% - updated liba/1.0.0 updated baz/1.0.0 EOE @@ -13108,9 +26283,7 @@ test.options += --no-progress configured liba/1.0.0 configured bar/1.0.0 configured bix/1.0.0 - %info: .+bar.+ is up to date% %info: .+bix.+ is up to date% - updated bar/1.0.0 updated bix/1.0.0 EOE @@ -13209,6 +26382,155 @@ test.options += --no-progress info: while satisfying libfoo-tests/1.0.0 EOE } + + : reflection-foo + : + { + $clone_cfg; + + $* libbar-tests 2>>EOE != 0; + error: unable to select dependency alternative for package libbar-tests/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libbar-baz + info: alternative: libbar-foo + info: while satisfying libbar-tests/1.0.0 + EOE + + $* libbar-foo libbar-tests 2>>~%EOE%; + fetched libbar-foo/1.0.0 + unpacked libbar-foo/1.0.0 + fetched libbar-tests/1.0.0 + unpacked libbar-tests/1.0.0 + configured libbar-foo/1.0.0 + configured libbar-tests/1.0.0 + %info: .+libbar-foo-1.0.0.+ is up to date% + %info: .+libbar-tests-1.0.0.+ is up to date% + updated libbar-foo/1.0.0 + updated libbar-tests/1.0.0 + EOE + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-foo + %.* + EOO + + $* libbar-baz 2>>~%EOE%; + fetched libbar-baz/1.0.0 + unpacked libbar-baz/1.0.0 + configured libbar-baz/1.0.0 + %info: .+libbar-baz-1.0.0.+ is up to date% + updated libbar-baz/1.0.0 + EOE + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-foo + %.* + EOO + + $pkg_status -r >>EOO; + !libbar-foo configured 1.0.0 + !libbar-tests configured 1.0.0 + !libbar-foo configured 1.0.0 + !libbar-baz configured 1.0.0 + EOO + + $pkg_drop libbar-foo libbar-baz libbar-tests + } + + : reflection-baz + : + { + $clone_cfg; + + $* libbar-baz libbar-tests 2>>~%EOE%; + fetched libbar-baz/1.0.0 + unpacked libbar-baz/1.0.0 + fetched libbar-tests/1.0.0 + unpacked libbar-tests/1.0.0 + configured libbar-baz/1.0.0 + configured libbar-tests/1.0.0 + %info: .+libbar-baz-1.0.0.+ is up to date% + %info: .+libbar-tests-1.0.0.+ is up to date% + updated libbar-baz/1.0.0 + updated libbar-tests/1.0.0 + EOE + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-baz + %.* + EOO + + $* libbar-foo 2>>~%EOE%; + fetched libbar-foo/1.0.0 + unpacked libbar-foo/1.0.0 + configured libbar-foo/1.0.0 + %info: .+libbar-foo-1.0.0.+ is up to date% + updated libbar-foo/1.0.0 + EOE + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-baz + %.* + EOO + + $pkg_status -r >>EOO; + !libbar-baz configured 1.0.0 + !libbar-tests configured 1.0.0 + !libbar-baz configured 1.0.0 + !libbar-foo configured 1.0.0 + EOO + + $pkg_drop libbar-baz libbar-foo libbar-tests + } + + : reflection-both + : + { + $clone_cfg; + + $* libbar-foo libbar-baz libbar-tests 2>!; + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-baz + %.* + EOO + + $pkg_status -r >>EOO; + !libbar-foo configured 1.0.0 + !libbar-baz configured 1.0.0 + !libbar-tests configured 1.0.0 + !libbar-baz configured 1.0.0 + EOO + + $pkg_drop libbar-foo libbar-baz libbar-tests + } + + : configure-explicit + : + { + $clone_cfg; + + $* --yes "config.libbar_tests.test = libbar-foo libbar-baz" -- libbar-tests 2>!; + + cat cfg/libbar-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libbar_tests.test = libbar-foo libbar-baz + %.* + EOO + + $pkg_status -r >>EOO; + !libbar-tests configured 1.0.0 + libbar-baz configured 1.0.0 + libbar-foo configured 1.0.0 + EOO + + $pkg_drop libbar-tests + } } : dependent @@ -13564,7 +26886,7 @@ test.options += --no-progress configured libfix/0.0.3 EOE - clone_cfg = cp --no-cleanup -r ../cfg ./ &cfg/*** + clone_cfg = [cmdline] cp --no-cleanup -r ../cfg ./ &cfg/*** : explicitly : @@ -13666,6 +26988,32 @@ test.options += --no-progress EOE } + : unavailable-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_cfg; + + $* '?sys:libbaz/0.0.3' 2>>EOE; + disfigured libbox/0.0.1 + disfigured libfix/0.0.3 + disfigured libbaz/0.0.3 + disfigured libfoo/1.0.0 + purged libfoo/1.0.0 + purged libbaz/0.0.3 + configured sys:libbaz/0.0.3 + configured libfix/0.0.3 + configured libbox/0.0.1 + EOE + + $rep_fetch $rep/t0b; + + $* --mask-repository $rep/t0c ?libbaz --patch --yes 2>>EOE != 0 + error: patch version for sys:libbaz/0.0.3 is not available from its dependents' repositories + EOE + } + -$pkg_drop libbox libfix libbaz libfoo } @@ -13687,7 +27035,7 @@ test.options += --no-progress configured libbaz/0.0.3 EOE - clone_cfg = cp --no-cleanup -r ../cfg ./ &cfg/*** + clone_cfg = [cmdline] cp --no-cleanup -r ../cfg ./ &cfg/*** : explicit : @@ -14063,6 +27411,7 @@ test.options += --no-progress +cp -r $src/libhello-1.0.0 ./libhello +cat <<EOI >+libhello/build/root.build config [bool] config.libhello.develop ?= false + config [bool] config.libhello.extras ?= false if ($build.mode != 'skeleton') text "develop=$config.libhello.develop" EOI @@ -14078,9 +27427,9 @@ test.options += --no-progress $clone_cfg; $* libhello 2>!; # Update after output directory change. - # Use bogus configuration variable to trigger reconfiguration. + # Specify a configuration variable to trigger reconfiguration. # - $* config.libhello.bogus=true -- libhello 2>>~%EOE% + $* config.libhello.extras=true -- libhello 2>>~%EOE% disfigured libhello/1.0.0 %.*: develop=true% configured libhello/1.0.0 @@ -14241,7 +27590,7 @@ test.options += --no-progress : Test that libhello is fully rebuilt, as the resulted package is not : external. { - clone_cfg = cp -pr --no-cleanup ../../cfg ./ + clone_cfg = [cmdline] cp -pr --no-cleanup ../../cfg ./ # Distribute using the dedicated configuration to avoid the 'c and cxx # module toolchain pattern mismatch' warning. @@ -14530,7 +27879,7 @@ else : build-unpacked : : Test that the unpacked external package is properly built for the first - : time and is not rebuilt afterwards via the directory argument. + : time and is replaced afterwards via the directory argument. : if! $remote { @@ -14546,6 +27895,9 @@ else EOE $* $d 2>>~%EOE%; + %disfigured style-basic/1\.1\.0-a\.0\.\d+\..+% + %using style-basic/1\.1\.0-a\.0\.\d+\..+% + %configured style-basic/1\.1\.0-a\.0\.\d+\..+% %info: .+ is up to date% %updated style-basic/1\.1\.0-a\.0\.\d+\..+% EOE @@ -14574,6 +27926,9 @@ else EOE $* $d +{ --config-id 1 } 2>>~%EOE%; + %disfigured style-basic/1\.1\.0-a\.0\.\d+\..+% + %using style-basic/1\.1\.0-a\.0\.\d+\..+% + %configured style-basic/1\.1\.0-a\.0\.\d+\..+% %info: .+ is up to date% %updated style-basic/1\.1\.0-a\.0\.\d+\..+% EOE @@ -14666,11 +28021,7 @@ else %configured libfoo/1.1.0 \[cfg-bar-foo.\]% %configured libbar/1.1.0 \[cfg-bar-foo.\]% configured libbaz/1.1.0 - %info: cfg-bar-foo.+libfoo-1.1.0.+ is up to date% - %info: cfg-bar-foo.+libbar-1.1.0.+ is up to date% %info: cfg[^-].+libbaz-1.1.0.+ is up to date% - %updated libfoo/1.1.0 \[cfg-bar-foo.\]% - %updated libbar/1.1.0 \[cfg-bar-foo.\]% updated libbaz/1.1.0 EOE @@ -14727,9 +28078,7 @@ else unpacked libbar/1.1.0 %configured libfoo/1.1.0 \[cfg-foo.\]% configured libbar/1.1.0 - %info: cfg-foo.+libfoo-1.1.0.+ is up to date% %info: cfg-bar.+libbar-1.1.0.+ is up to date% - %updated libfoo/1.1.0 \[cfg-foo.\]% updated libbar/1.1.0 EOE @@ -14846,17 +28195,17 @@ else $rep_add $rep/t7b && $rep_fetch; $* libbar <'y' 2>>~%EOE%; - % upgrade libbaz/1.1.0 \[cfg2.\] \(required by foo \[cfg2.\]\)% % drop libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(unused\)% + % upgrade libbaz/1.1.0 \[cfg2.\] \(required by foo \[cfg2.\]\)% % upgrade foo/1.1.0 \[cfg2.\] \(required by libbar\)% upgrade libbar/1.1.0 %continue\? \[Y/n\] disfigured libbar/1.0.0% %disfigured foo/1.0.0 \[cfg2.\]% - %disfigured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% %disfigured libbaz/1.0.0 \[cfg2.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% %fetched libbaz/1.1.0 \[cfg2.\]% %unpacked libbaz/1.1.0 \[cfg2.\]% - %purged libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% %fetched foo/1.1.0 \[cfg2.\]% %unpacked foo/1.1.0 \[cfg2.\]% fetched libbar/1.1.0 @@ -14896,11 +28245,7 @@ else %configured libbaz/1.0.0 \[cfg2.\]% %configured foo/1.0.0 \[cfg2.\]% configured libbar/1.0.0 - %info: cfg2.+libbaz-1.0.0.+ is up to date% - %info: cfg2.+foo-1.0.0.+ is up to date% %info: cfg.+libbar-1.0.0.+ is up to date% - %updated libbaz/1.0.0 \[cfg2.\]% - %updated foo/1.0.0 \[cfg2.\]% updated libbar/1.0.0 EOE @@ -15032,17 +28377,17 @@ else $rep_add $rep/t7b && $rep_fetch; $* libbar <'y' 2>>~%EOE%; - % upgrade libbaz/1.1.0 \[cfg..bpkg.host.\] \(required by foo \[cfg..bpkg.host.\]\)% % drop libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\] \(unused\)% + % upgrade libbaz/1.1.0 \[cfg..bpkg.host.\] \(required by foo \[cfg..bpkg.host.\]\)% % upgrade foo/1.1.0 \[cfg..bpkg.host.\] \(required by libbar\)% upgrade libbar/1.1.0 %continue\? \[Y/n\] disfigured libbar/1.0.0% %disfigured foo/1.0.0 \[cfg..bpkg.host.\]% - %disfigured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% %disfigured libbaz/1.0.0 \[cfg..bpkg.host.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% %fetched libbaz/1.1.0 \[cfg..bpkg.host.\]% %unpacked libbaz/1.1.0 \[cfg..bpkg.host.\]% - %purged libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% %fetched foo/1.1.0 \[cfg..bpkg.host.\]% %unpacked foo/1.1.0 \[cfg..bpkg.host.\]% fetched libbar/1.1.0 @@ -15102,17 +28447,17 @@ else $rep_add $rep/t7b && $rep_fetch; $* libbar <'y' 2>>~%EOE%; - upgrade libbaz/1.1.0 (required by foo, libbar) % drop libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\] \(unused\)% + upgrade libbaz/1.1.0 (required by foo, libbar) upgrade foo/1.1.0 (required by libbar) upgrade libbar/1.1.0 continue? [Y/n] disfigured libbar/1.0.0 disfigured foo/1.0.0 - %disfigured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% disfigured libbaz/1.0.0 + %disfigured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% fetched libbaz/1.1.0 unpacked libbaz/1.1.0 - %purged libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% fetched foo/1.1.0 unpacked foo/1.1.0 fetched libbar/1.1.0 @@ -15353,9 +28698,7 @@ else %configured libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% %configured libbaz/1.0.0 \[t2.\]% configured foo/1.0.0 - %info: t2.+libbaz-1.0.0.+ is up to date% %info: t1.+foo-1.0.0.+ is up to date% - %updated libbaz/1.0.0 \[t2.\]% updated foo/1.0.0 EOE @@ -15409,9 +28752,7 @@ else %configured foo/1.0.0 \[h1.\]% configured libbaz/1.0.0 configured libbar/1.0.0 - %info: h1.+foo-1.0.0.+ is up to date% %info: t1.+libbar-1.0.0.+ is up to date% - %updated foo/1.0.0 \[h1.\]% updated libbar/1.0.0 EOE @@ -15437,9 +28778,7 @@ else unpacked libbox/1.0.0 configured libbaz/1.0.0 configured libbox/1.0.0 - %info: h1.+foo-1.0.0.+ is up to date% %info: t2.+libbox-1.0.0.+ is up to date% - %updated foo/1.0.0 \[h1.\]% updated libbox/1.0.0 EOE @@ -15472,9 +28811,7 @@ else %configured libbaz/1.0.0 \[h2.\]% %configured foo/1.0.0 \[h2.\]% configured libbar/1.0.0 - %info: h2.+foo-1.0.0.+ is up to date% %info: t1.+libbar-1.0.0.+ is up to date% - %updated foo/1.0.0 \[h2.\]% updated libbar/1.0.0 EOE @@ -15521,14 +28858,14 @@ else y y EOI - % new libbaz/1.0.0 \[t2.\]% drop libbaz/1.0.0 (unused) + % new libbaz/1.0.0 \[t2.\]% % reconfigure foo/1.0.0 \(dependent of libbaz \[t2.\]\)% continue? [Y/n] update dependent packages? [Y/n] disfigured foo/1.0.0 disfigured libbaz/1.0.0 + purged libbaz/1.0.0 %fetched libbaz/1.0.0 \[t2.\]% %unpacked libbaz/1.0.0 \[t2.\]% - purged libbaz/1.0.0 %configured libbaz/1.0.0 \[t2.\]% configured foo/1.0.0 %info: t2.+libbaz-1.0.0.+ is up to date% @@ -15609,10 +28946,10 @@ else %.* trace: execute_plan: simulate: yes %.* - % new libbaz/1.0.0 \[t2.\]% % drop libbuild2-bar/1.0.0 \[t1..bpkg.build2.\] \(unused\)% drop libbaz/1.0.0 (unused) drop foo/1.0.0 (unused) + % new libbaz/1.0.0 \[t2.\]% continue? [Y/n] trace: execute_plan: simulate: no %.* disfigured foo/1.0.0 @@ -15621,16 +28958,16 @@ else %.* %disfigured libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% %.* - %fetched libbaz/1.0.0 \[t2.\]% - %.* - %unpacked libbaz/1.0.0 \[t2.\]% - %.* %purged libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% %.* purged libbaz/1.0.0 %.* purged foo/1.0.0 %.* + %fetched libbaz/1.0.0 \[t2.\]% + %.* + %unpacked libbaz/1.0.0 \[t2.\]% + %.* %configured libbaz/1.0.0 \[t2.\]% %.* %info: .+t2.+libbaz-1.0.0.+ is up to date% @@ -15669,15 +29006,15 @@ else $* libbar libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; y EOI - % new libbaz/1.0.0 \[h2.\]% drop libbaz/1.0.0 (unused) + % new libbaz/1.0.0 \[h2.\]% reconfigure/update foo/1.0.0 (required by libbar) new libbar/1.0.0 continue? [Y/n] disfigured foo/1.0.0 disfigured libbaz/1.0.0 + purged libbaz/1.0.0 %fetched libbaz/1.0.0 \[h2.\]% %unpacked libbaz/1.0.0 \[h2.\]% - purged libbaz/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 %configured libbaz/1.0.0 \[h2.\]% @@ -15726,27 +29063,25 @@ else ?libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; y EOI - % new libbaz/1.0.0 \[h2.\] \(required by libbar\)% % drop libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(unused\)% drop libbaz/1.0.0 (unused) reconfigure/unhold sys:foo/1.2.0 + % new libbaz/1.0.0 \[h2.\] \(required by libbar\)% new libbar/1.0.0 continue? [Y/n] disfigured foo/1.0.0 disfigured libbaz/1.0.0 %disfigured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% - %fetched libbaz/1.0.0 \[h2.\]% - %unpacked libbaz/1.0.0 \[h2.\]% %purged libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% purged libbaz/1.0.0 purged foo/1.0.0 + %fetched libbaz/1.0.0 \[h2.\]% + %unpacked libbaz/1.0.0 \[h2.\]% fetched libbar/1.0.0 unpacked libbar/1.0.0 - %configured libbaz/1.0.0 \[h2.\]% configured sys:foo/1.2.0 + %configured libbaz/1.0.0 \[h2.\]% configured libbar/1.0.0 - %info: h2.+libbaz-1.0.0.+ is up to date% %info: h1.+libbar-1.0.0.+ is up to date% - %updated libbaz/1.0.0 \[h2.\]% updated libbar/1.0.0 EOE @@ -15779,11 +29114,7 @@ else configured libbaz/1.0.0 configured foo/1.0.0 configured libbar/1.0.0 - %info: h1.+libbaz-1.0.0.+ is up to date% - %info: h1.+foo-1.0.0.+ is up to date% %info: h1.+libbar-1.0.0.+ is up to date% - updated libbaz/1.0.0 - updated foo/1.0.0 updated libbar/1.0.0 EOE @@ -15815,11 +29146,100 @@ else $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; - $* libbaz +{ --config-name h2 } 2>>EOE != 0 + $* libbaz +{ --config-name h2 } 2>>EOE != 0; error: package foo/1.1.0 is orphaned info: explicitly upgrade it to a new version info: while satisfying foo/1.1.0 EOE + + # While at it, test foo deorphaning. + # + $* foo +{ --deorphan } libbaz +{ --config-name h2 } --yes --plan "" 2>>~%EOE%; + drop libbaz/1.1.0 (unused) + % new libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\] \(required by foo\)% + % new libbaz/1.0.0 \[h2.\]% + replace/downgrade foo/1.0.0 + disfigured foo/1.1.0 + disfigured libbaz/1.1.0 + purged libbaz/1.1.0 + %fetched libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %fetched libbaz/1.0.0 \[h2.\]% + %unpacked libbaz/1.0.0 \[h2.\]% + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %configured libbaz/1.0.0 \[h2.\]% + configured foo/1.0.0 + %info: h2.+libbaz-1.0.0.+ is up to date% + %info: h1.+foo-1.0.0.+ is up to date% + %updated libbaz/1.0.0 \[h2.\]% + updated foo/1.0.0 + EOE + + $pkg_status -d h1 -r >>/EOO + !foo configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO + } + + : orphan-repointed-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $cfg_create -d h1 --type host --name h1 &h1/***; + $cfg_create -d h2 --type host --name h2 &h2/***; + + $cfg_link -d h1 h2; + + $rep_add -d h1 $rep/t7b && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* foo --yes 2>!; + + $rep_add -d h1 $rep/t7a && $rep_fetch -d h1; + $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; + + $* libbaz +{ --config-name h2 } --mask-repository $rep/t7b 2>>EOE != 0; + error: package foo/1.1.0 is orphaned + info: explicitly upgrade it to a new version + info: while satisfying foo/1.1.0 + EOE + + # While at it, test foo deorphaning. + # + $* foo +{ --deorphan } libbaz +{ --config-name h2 } --yes --plan "" \ + --mask-repository $rep/t7b 2>>~%EOE%; + drop libbaz/1.1.0 (unused) + % new libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\] \(required by foo\)% + % new libbaz/1.0.0 \[h2.\]% + replace/downgrade foo/1.0.0 + disfigured foo/1.1.0 + disfigured libbaz/1.1.0 + purged libbaz/1.1.0 + %fetched libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %fetched libbaz/1.0.0 \[h2.\]% + %unpacked libbaz/1.0.0 \[h2.\]% + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %configured libbaz/1.0.0 \[h2.\]% + configured foo/1.0.0 + %info: h2.+libbaz-1.0.0.+ is up to date% + %info: h1.+foo-1.0.0.+ is up to date% + %updated libbaz/1.0.0 \[h2.\]% + updated foo/1.0.0 + EOE + + $pkg_status -d h1 -r >>/EOO + !foo configured 1.0.0 available 1.1.0 + !libbaz [h2/] configured 1.0.0 available 1.1.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO } : unhold-repointed @@ -15847,25 +29267,23 @@ else $* libbar ?foo libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; y EOI - % new libbaz/1.0.0 \[h2.\]% drop libbaz/1.0.0 (unused) + % new libbaz/1.0.0 \[h2.\]% reconfigure/update/unhold foo/1.0.0 new libbar/1.0.0 continue? [Y/n] disfigured foo/1.0.0 disfigured libbaz/1.0.0 + purged libbaz/1.0.0 %fetched libbaz/1.0.0 \[h2.\]% %unpacked libbaz/1.0.0 \[h2.\]% - purged libbaz/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 %configured libbaz/1.0.0 \[h2.\]% configured foo/1.0.0 configured libbar/1.0.0 %info: h2.+libbaz-1.0.0.+ is up to date% - %info: h1.+foo-1.0.0.+ is up to date% %info: h1.+libbar-1.0.0.+ is up to date% %updated libbaz/1.0.0 \[h2.\]% - updated foo/1.0.0 updated libbar/1.0.0 EOE @@ -15912,9 +29330,7 @@ else %configured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% configured libbaz/1.0.0 configured foo/1.0.0 - %info: h1.+libbaz-1.0.0.+ is up to date% %info: h1.+foo-1.0.0.+ is up to date% - updated libbaz/1.0.0 updated foo/1.0.0 EOE @@ -15928,8 +29344,10 @@ else $* ?libbaz/1.0.0 +{ --config-name h2 } 2>>~%EOE% != 0; %error: unable to downgrade package libbaz/1.1.0 \[h2.\] to 1.0.0% - % info: because package foo \[h2.\] depends on \(libbaz \^1.1.0\)% - info: explicitly request up/downgrade of package foo + % info: because configured package foo/1.1.0 \[h2.\] depends on \(libbaz \^1.1.0\)% + info: re-run with -v for additional dependency information + info: consider re-trying with --upgrade|-u potentially combined with --recursive|-r + info: or explicitly request up/downgrade of package foo info: or explicitly specify package libbaz version to manually satisfy these constraints EOE @@ -15937,15 +29355,13 @@ else y n EOI - % update libbaz/1.1.0 \[h2.\]% drop libbaz/1.0.0 (unused) + % update libbaz/1.1.0 \[h2.\]% % reconfigure foo/1.0.0 \(dependent of libbaz \[h2.\]\)% continue? [Y/n] update dependent packages? [Y/n] disfigured foo/1.0.0 disfigured libbaz/1.0.0 purged libbaz/1.0.0 configured foo/1.0.0 - %info: h2.+libbaz-1.1.0.+ is up to date% - %updated libbaz/1.1.0 \[h2.\]% EOE $pkg_status -d h1 --link -r >>/EOO @@ -15985,31 +29401,29 @@ else $* libbar ?foo +{ --config-name h1 } <<EOI 2>>~%EOE%; y EOI - % new libbaz/1.1.0 \[h1.\] \(required by foo \[h1.\]\)% - % new foo/1.1.0 \[h1.\] \(required by libbar\)% % drop libbuild2-bar/1.0.0 \[t1..bpkg.build2.\] \(unused\)% % drop libbaz/1.0.0 \[t1..bpkg.host.\] \(unused\)% % drop foo/1.0.0 \[t1..bpkg.host.\] \(unused\)% + % new libbaz/1.1.0 \[h1.\] \(required by foo \[h1.\]\)% + % new foo/1.1.0 \[h1.\] \(required by libbar\)% upgrade libbar/1.1.0 continue? [Y/n] disfigured libbar/1.0.0 %disfigured foo/1.0.0 \[t1..bpkg.host.\]% %disfigured libbaz/1.0.0 \[t1..bpkg.host.\]% %disfigured libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %purged libbaz/1.0.0 \[t1..bpkg.host.\]% + %purged foo/1.0.0 \[t1..bpkg.host.\]% %fetched libbaz/1.1.0 \[h1.\]% %unpacked libbaz/1.1.0 \[h1.\]% %fetched foo/1.1.0 \[h1.\]% %unpacked foo/1.1.0 \[h1.\]% - %purged libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% - %purged libbaz/1.0.0 \[t1..bpkg.host.\]% - %purged foo/1.0.0 \[t1..bpkg.host.\]% fetched libbar/1.1.0 unpacked libbar/1.1.0 %configured libbaz/1.1.0 \[h1.\]% %configured foo/1.1.0 \[h1.\]% configured libbar/1.1.0 - %info: h1.+foo-1.1.0.+ is up to date% %info: t1.+libbar-1.1.0.+ is up to date% - %updated foo/1.1.0 \[h1.\]% updated libbar/1.1.0 EOE @@ -16049,19 +29463,19 @@ else y y EOI - % new libbaz/1.1.0 \[h2.\] \(required by foo, libbar\)% % drop libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(unused\)% drop libbaz/1.0.0 (unused) + % new libbaz/1.1.0 \[h2.\] \(required by foo, libbar\)% upgrade foo/1.1.0 upgrade libbar/1.1.0 continue? [Y/n] disfigured libbar/1.0.0 disfigured foo/1.0.0 disfigured libbaz/1.0.0 %disfigured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% - %fetched libbaz/1.1.0 \[h2.\]% - %unpacked libbaz/1.1.0 \[h2.\]% %purged libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% purged libbaz/1.0.0 + %fetched libbaz/1.1.0 \[h2.\]% + %unpacked libbaz/1.1.0 \[h2.\]% fetched foo/1.1.0 unpacked foo/1.1.0 fetched libbar/1.1.0 @@ -16069,11 +29483,7 @@ else %configured libbaz/1.1.0 \[h2.\]% configured foo/1.1.0 configured libbar/1.1.0 - %info: h2.+libbaz-1.1.0.+ is up to date% - %info: h1.+foo-1.1.0.+ is up to date% %info: h1.+libbar-1.1.0.+ is up to date% - %updated libbaz/1.1.0 \[h2.\]% - updated foo/1.1.0 updated libbar/1.1.0 EOE @@ -16122,15 +29532,15 @@ else y y EOI - % upgrade libbaz/1.1.0 \[t2.\]% drop libbaz/1.0.0 (unused) + % upgrade libbaz/1.1.0 \[t2.\]% % reconfigure libbar/1.0.0 \(dependent of libbaz \[t2.\]\)% continue? [Y/n] update dependent packages? [Y/n] disfigured libbar/1.0.0 - disfigured libbaz/1.0.0 %disfigured libbaz/1.0.0 \[t2.\]% + disfigured libbaz/1.0.0 + purged libbaz/1.0.0 %fetched libbaz/1.1.0 \[t2.\]% %unpacked libbaz/1.1.0 \[t2.\]% - purged libbaz/1.0.0 %configured libbaz/1.1.0 \[t2.\]% configured libbar/1.0.0 %info: t2.+libbaz-1.1.0.+ is up to date% @@ -16250,45 +29660,45 @@ else y y EOI + % drop libfax/1.0.0 \(unused\)% % new libfax/1.0.0 \[t2.\]% - % upgrade libbaz/1.1.0 \[h1.\] \(required by foo \[h1.\]\)% % drop libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(unused\)% + % upgrade libbaz/1.1.0 \[h1.\] \(required by foo \[h1.\]\)% % upgrade foo/1.1.0 \[h1.\]% - % reconfigure libbox \(dependent of foo \[h1.\]\)% % reconfigure libbar \(dependent of foo \[h1.\]\)% - % drop libfax/1.0.0 \(unused\)% + % reconfigure libbox \(dependent of foo \[h1.\]\)% reconfigure/update libfix/1.0.0 continue? [Y/n] update dependent packages? [Y/n] disfigured libfix/1.0.0 - disfigured libfax/1.0.0 - disfigured libbar/1.0.0 disfigured libbox/1.0.0 + disfigured libbar/1.0.0 %disfigured foo/1.0.0 \[h1.\]% - %disfigured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% %disfigured libbaz/1.0.0 \[h1.\]% + %disfigured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + disfigured libfax/1.0.0 + purged libfax/1.0.0 %fetched libfax/1.0.0 \[t2.\]% %unpacked libfax/1.0.0 \[t2.\]% + %purged libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% %fetched libbaz/1.1.0 \[h1.\]% %unpacked libbaz/1.1.0 \[h1.\]% - %purged libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% %fetched foo/1.1.0 \[h1.\]% %unpacked foo/1.1.0 \[h1.\]% - purged libfax/1.0.0 %configured libfax/1.0.0 \[t2.\]% %configured libbaz/1.1.0 \[h1.\]% %configured foo/1.1.0 \[h1.\]% - configured libbox/1.0.0 configured libbar/1.0.0 + configured libbox/1.0.0 configured libfix/1.0.0 %info: t2.+libfax-1.0.0.+ is up to date% %info: h1.+foo-1.1.0.+ is up to date% %info: t1.+libfix-1.0.0.+ is up to date% - %info: t1.+libbox-1.0.0.+ is up to date% %info: t1.+libbar-1.0.0.+ is up to date% + %info: t1.+libbox-1.0.0.+ is up to date% %updated libfax/1.0.0 \[t2.\]% %updated foo/1.1.0 \[h1.\]% updated libfix/1.0.0 - updated libbox/1.0.0 updated libbar/1.0.0 + updated libbox/1.0.0 EOE $pkg_status -d t1 --link -r >>/EOO @@ -16568,35 +29978,31 @@ else y y EOI - % new libbuild2-bar/1.0.0 \[cfg4.\] \(required by foo \[cfg.\], foo \[cfg2.\]\)% - % new libbaz/1.0.0 \[cfg5.\] \(required by foo \[cfg.\], foo \[cfg2.\]\)% % drop libbaz/1.0.0 \[cfg2.\] \(unused\)% % drop libbuild2-bar/1.0.0 \[cfg3.\] \(unused\)% - % reconfigure foo/1.0.0 \[cfg2.\] \(dependent of libbaz \[cfg5.\], libbuild2-bar \[cfg4.\]\)% % drop libbaz/1.0.0 \[cfg.\] \(unused\)% + % new libbuild2-bar/1.0.0 \[cfg4.\] \(required by foo \[cfg.\], foo \[cfg2.\]\)% + % new libbaz/1.0.0 \[cfg5.\] \(required by foo \[cfg.\], foo \[cfg2.\]\)% + % reconfigure foo/1.0.0 \[cfg2.\] \(dependent of libbaz \[cfg5.\], libbuild2-bar \[cfg4.\]\)% % reconfigure foo/1.0.0 \[cfg.\] \(dependent of libbaz \[cfg5.\], libbuild2-bar \[cfg4.\]\)% %continue\? \[Y/n\] update dependent packages\? \[Y/n\] disfigured foo/1.0.0 \[cfg.\]% - %disfigured libbaz/1.0.0 \[cfg.\]% %disfigured foo/1.0.0 \[cfg2.\]% + %disfigured libbaz/1.0.0 \[cfg.\]% %disfigured libbuild2-bar/1.0.0 \[cfg3.\]% %disfigured libbaz/1.0.0 \[cfg2.\]% + %purged libbaz/1.0.0 \[cfg2.\]% + %purged libbuild2-bar/1.0.0 \[cfg3.\]% + %purged libbaz/1.0.0 \[cfg.\]% %fetched libbuild2-bar/1.0.0 \[cfg4.\]% %unpacked libbuild2-bar/1.0.0 \[cfg4.\]% %fetched libbaz/1.0.0 \[cfg5.\]% %unpacked libbaz/1.0.0 \[cfg5.\]% - %purged libbaz/1.0.0 \[cfg2.\]% - %purged libbuild2-bar/1.0.0 \[cfg3.\]% - %purged libbaz/1.0.0 \[cfg.\]% %configured libbuild2-bar/1.0.0 \[cfg4.\]% %configured libbaz/1.0.0 \[cfg5.\]% %configured foo/1.0.0 \[cfg2.\]% %configured foo/1.0.0 \[cfg.\]% - %info: cfg4.+libbuild2-bar-1.0.0.+is up to date% - %info: cfg5.+libbaz-1.0.0.+ is up to date% %info: cfg2.+foo-1.0.0.+ is up to date% %info: cfg.+foo-1.0.0.+ is up to date% - %updated libbuild2-bar/1.0.0 \[cfg4.\]% - %updated libbaz/1.0.0 \[cfg5.\]% %updated foo/1.0.0 \[cfg2.\]% %updated foo/1.0.0 \[cfg.\]% EOE @@ -16627,9 +30033,7 @@ else %unpacked foo/1.1.0 \[cfg.\]% %configured libbaz/1.1.0 \[cfg.\]% %configured foo/1.1.0 \[cfg.\]% - %info: cfg.+libbaz-1.1.0.+ is up to date% %info: cfg.+foo-1.1.0.+ is up to date% - %updated libbaz/1.1.0 \[cfg.\]% %updated foo/1.1.0 \[cfg.\]% EOE @@ -16650,22 +30054,20 @@ else ?libbaz +{ --config-uuid $cfg5_uuid } <<EOI 2>>~%EOE%; y EOI - % upgrade libbaz/1.1.0 \[cfg5.\]% % drop libbuild2-bar/1.0.0 \[cfg4.\] \(unused\)% + % upgrade libbaz/1.1.0 \[cfg5.\]% % upgrade foo/1.1.0 \[cfg2.\]% %continue\? \[Y/n\] disfigured foo/1.0.0 \[cfg2.\]% - %disfigured libbuild2-bar/1.0.0 \[cfg4.\]% %disfigured libbaz/1.0.0 \[cfg5.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg4.\]% + %purged libbuild2-bar/1.0.0 \[cfg4.\]% %fetched libbaz/1.1.0 \[cfg5.\]% %unpacked libbaz/1.1.0 \[cfg5.\]% - %purged libbuild2-bar/1.0.0 \[cfg4.\]% %fetched foo/1.1.0 \[cfg2.\]% %unpacked foo/1.1.0 \[cfg2.\]% %configured libbaz/1.1.0 \[cfg5.\]% %configured foo/1.1.0 \[cfg2.\]% - %info: cfg5.+libbaz-1.1.0.+ is up to date% %info: cfg2.+foo-1.1.0.+ is up to date% - %updated libbaz/1.1.0 \[cfg5.\]% %updated foo/1.1.0 \[cfg2.\]% EOE @@ -17115,3 +30517,3837 @@ else } } } + +: deorphan +: +{ + test.arguments += --yes --plan "" + + : dependency + : + { + : unhold + : + { + : basics + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 + EOO + + echo "" >+ libfoo/manifest; + $rep_fetch; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0 to libfoo/1.1.0#1. + # + # Note that libfoo/1.1.0 is considered as an orphan since its version + # is replaced with 1.1.0#1 in its existing repository fragment. This is + # in contrast to the subsequent tests where the package repository is + # removed. + # + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.0#1 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0 + using libfoo/1.1.0#1 (external) + configured libfoo/1.1.0#1 + configured libbar/1.1.0 + %info: .+libfoo.+ is up to date% + %info: .+libbar-1.1.0.+ is up to date% + updated libfoo/1.1.0#1 + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0#1 to ?libfoo/1.1.0. + # + $rep_remove $~/libfoo/; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 + EOO + + # Deorphan libfoo/1.1.0#1 to ?libfoo/1.1.0. + # + $rep_add --type dir libfoo/ && $rep_fetch; + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + $rep_remove $~/libfoo/; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 + EOO + + $pkg_drop libbar + } + + : basics-masked + : + : As above but using --mask-repository* instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 + EOO + + echo "" >+ libfoo/manifest; + $rep_fetch; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0 to libfoo/1.1.0#1. + # + # Note that libfoo/1.1.0 is considered as an orphan since its version + # is replaced with 1.1.0#1 in its existing repository fragment. This is + # in contrast to the subsequent tests where the package repository is + # removed. + # + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.0#1 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0 + using libfoo/1.1.0#1 (external) + configured libfoo/1.1.0#1 + configured libbar/1.1.0 + %info: .+libfoo.+ is up to date% + %info: .+libbar-1.1.0.+ is up to date% + updated libfoo/1.1.0#1 + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0#1 to ?libfoo/1.1.0. + # + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --mask-repository $cn --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Noop. + # + $* --mask-repository-uuid "$cfg_uuid=$cn" --deorphan ?libfoo; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0#1 to ?libfoo/1.1.0. + # + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + $* --mask-repository $cn --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Noop. + # + $* --mask-repository $cn --deorphan ?libfoo; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + $pkg_drop libbar + } + + : drop + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + $rep_remove $~/libfoo/; + + $* --deorphan ?libfoo ?libbar 2>>EOE; + drop libfoo/1.1.0#1 (unused) + drop libbar/1.1.0 (unused) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + purged libfoo/1.1.0#1 + purged libbar/1.1.0 + EOE + + $pkg_status -ar 2>'info: no packages in the configuration' + } + + : drop-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --mask-repository $cn --deorphan ?libfoo ?libbar 2>>EOE; + drop libfoo/1.1.0#1 (unused) + drop libbar/1.1.0 (unused) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + purged libfoo/1.1.0#1 + purged libbar/1.1.0 + EOE + + $pkg_status -ar 2>'info: no packages in the configuration' + } + + : no-dependent + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $rep_fetch $rep/t4b; + $rep_remove $~/libfoo/; + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + $* --deorphan ?libfoo 2>>EOE; + drop libfoo/1.1.0 (unused) + disfigured libfoo/1.1.0 + purged libfoo/1.1.0 + EOE + + $pkg_status -ar 2>'info: no packages in the configuration' + } + + : no-dependent-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $rep_fetch $rep/t4b; + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --mask-repository $cn --deorphan ?libfoo 2>>EOE; + drop libfoo/1.1.0 (unused) + disfigured libfoo/1.1.0 + purged libfoo/1.1.0 + EOE + + $pkg_status -ar 2>'info: no packages in the configuration' + } + + : preference + : + { + $clone_root_cfg; + + $tar -xf $src/t14d/libfoo-1.1.0+2.tar.gz &libfoo-1.1.0+2/***; + mv libfoo-1.1.0+2 libfoo; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + $tar -xf $src/t2/libbar-1.0.0.tar.gz &libbar-1.0.0/***; + mv libbar-1.0.0 libbar; + + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14c + role: prerequisite + : + location: $rep/t14d + role: prerequisite + : + location: $rep/t14e + role: prerequisite + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + !libfoo configured 1.1.0+2 available [1.2.0] [1.1.1] [1.1.0+3] (1.1.0+2) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Deorphan/unhold libfoo/1.1.0+2 to the exactly same version. + # + $rep_remove $~/libfoo/; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/update/unhold libfoo/1.1.0+2 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+2 + unpacked libfoo/1.1.0+2 + configured libfoo/1.1.0+2 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+2 available [1.2.0] [1.1.1] [1.1.0+3] (1.1.0+2) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+2 available [1.2.0] [1.1.1] [1.1.0+3] (1.1.0+2) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Deorphan libfoo/1.1.0+2 to the later revision of same version + # (1.1.0+3). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14c + role: prerequisite + : + location: $rep/t14e + role: prerequisite + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.0+3 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+3 + unpacked libfoo/1.1.0+3 + configured libfoo/1.1.0+3 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+3 available [1.2.0] [1.1.1] (1.1.0+3) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+3 available [1.2.0] [1.1.1] (1.1.0+3) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Deorphan libfoo/1.1.0+3 to the later patch of same version (1.1.1). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14c + role: prerequisite + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0+3 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.1 available [1.2.0] (1.1.1) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.1 available [1.2.0] (1.1.1) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Deorphan libfoo/1.1.1 to later minor of same version (1.2.0). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14c + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.2.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.1 + fetched libfoo/1.2.0 + unpacked libfoo/1.2.0 + configured libfoo/1.2.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.2.0 available (1.2.0) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.2.0 available (1.2.0) [1.1.0+1] [1.1.0] [1.0.0] + EOO + + # Deorphan libfoo/1.2.0 to latest available version (1.1.0+1). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14c + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.1.0+1 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.2.0 + fetched libfoo/1.1.0+1 + unpacked libfoo/1.1.0+1 + configured libfoo/1.1.0+1 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+1 available (1.1.0+1) [1.1.0] [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + # Deorphan libfoo/1.1.0+1 to latest available version (1.1.0). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + : + location: $rep/t14b + role: prerequisite + EOI + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0+1 available (1.1.0+1) [1.1.0] [1.0.0] + EOO + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0+1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0 available (1.1.0) [1.0.0] + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.1.0 available (1.1.0) [1.0.0] + EOO + + # Deorphan libfoo/1.1.0 to latest available version (1.0.0). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14a + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.0.0 available (1.0.0) + EOO + + # Noop. + # + $* --deorphan ?libfoo; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.0.0 available (1.0.0) + EOO + + # Deorphan fails (none available). + # + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + EOI + + $rep_fetch; + + $* --deorphan ?libfoo 2>>/EOE != 0; + error: unknown package libfoo + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured 1.0.0 + EOO + + $pkg_drop libbar + } + } + + : recursive + : + { + +$tar -xf $src/t2/libbar-1.0.0.tar.gz &libbar-1.0.0/*** + +mv libbar-1.0.0 libbar + + +cat <<"EOI" >=libbar/repositories.manifest + : 1 + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + : immediate + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_remove $~/libbar/; + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + $* --deorphan --immediate libbar 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + replace/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available 1.1.0+1 [1.1.0] (1.0.0) 0.1.0 + EOO + + $pkg_drop libbar + } + + : immediate-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libbar)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --mask-repository $cn --deorphan --immediate libbar 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + replace/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available [1.2.0] [1.1.1] 1.1.0+1 [1.1.0] (1.0.0) 0.1.0 + EOO + + $pkg_drop libbar + } + + : recursive + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_remove $~/libbar/; + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + $* --deorphan --recursive libbar 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + replace/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available 1.1.0+1 [1.1.0] (1.0.0) 0.1.0 + EOO + + $pkg_drop libbar + } + + : deorphan-immediate + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan-immediate libbar 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + reconfigure/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.1 available [1.2.0] (1.1.1) + EOO + + $pkg_drop libbar + } + + : deorphan-recursive + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $rep_add $rep/t3 && $rep_fetch; + $* libbaz 2>!; + + $pkg_status -or libbaz >>EOO; + !libbaz configured 1.0.0 available (1.0.0) + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) [1.0.0] [0.1.0] + EOO + + cat <<"EOI" >=libbar/repositories.manifest; + : 1 + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + $rep_fetch; + + $* --deorphan-recursive libbaz 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + reconfigure libbar (dependent of libfoo) + reconfigure/update libbaz/1.0.0 + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libbaz.+ is up to date% + %info: .+libbar.+ is up to date% + updated libbaz/1.0.0 + updated libbar/1.0.0 + EOE + + $pkg_status -or libbaz >>EOO; + !libbaz configured 1.0.0 available (1.0.0) + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.1 available [1.2.0] (1.1.1) [1.0.0] [0.1.0] + EOO + + $pkg_drop libbaz libbar + } + } + + : recursive-all-held + : + : As above but uses 'deorphan all held packages form'. + : + { + +$tar -xf $src/t2/libbar-1.0.0.tar.gz &libbar-1.0.0/*** + +mv libbar-1.0.0 libbar + + +cat <<"EOI" >=libbar/repositories.manifest + : 1 + : + location: $rep/t14b + role: prerequisite + : + location: $rep/t14f + role: prerequisite + : + location: $rep/t14i + role: prerequisite + EOI + + : immediate + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_remove $~/libbar/; + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + $* --deorphan --immediate 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + replace/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available 1.1.0+1 [1.1.0] (1.0.0) 0.1.0 + EOO + + $pkg_drop libbar + } + + : recursive + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_remove $~/libbar/; + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + $* --deorphan --recursive 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + replace/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available 1.1.0+1 [1.1.0] (1.0.0) 0.1.0 + EOO + + $pkg_drop libbar + } + } + + : same-version + : + { + : best-match + : + { + $clone_root_cfg; + + $rep_add $rep/t1 && $rep_fetch; + $* libfoo 2>!; + + $rep_add $rep/t2 && $rep_fetch; + $* libbar ?libfoo 2>!; + + $rep_remove $rep/t1; + + $* --deorphan ?libfoo 2>>~%EOE%; + replace/update libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_drop libbar + } + + : constrained + : + { + $clone_root_cfg; + + $rep_add $rep/t1 && $rep_fetch; + $* libfoo 2>!; + + $rep_add $rep/t2 && $rep_fetch; + $* libbar ?libfoo 2>!; + + $rep_remove $rep/t1; + + $* --deorphan ?libfoo/1.0.0 2>>~%EOE%; + replace/update libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_drop libbar + } + } + } + + : held + : + { + : basics + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + sed -i -e 's/(version:).+/\1 1.0.0/' libfoo/manifest; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0 available 1.0.0#1 + EOO + + # Deorphan libfoo/1.0.0 to libfoo/1.0.0#1. + # + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.0.0#1 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + %info: .+libfoo.+ is up to date% + updated libfoo/1.0.0#1 + EOE + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0#1 available (1.0.0#1) + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $rep_fetch $rep/t4a $rep/t4c; + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0#1 available 1.1.0 (1.0.0#1) 1.0.0 + EOO + + # Deorphan libfoo/1.0.0#1 to libfoo/1.0.0. + # + $rep_remove $~/libfoo/; + + $* --deorphan libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.0.0#1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.0.0 available 1.1.0'; + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status libfoo >'!libfoo configured 1.0.0 available 1.1.0'; + + # Deorphan libfoo/1.0.0 to libfoo/1.1.0. + # + $rep_remove $rep/t4c; + + # While at it, use the 'deorphan all held packages' form. + # + $* --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + $pkg_drop libfoo + } + + : basics-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + sed -i -e 's/(version:).+/\1 1.0.0/' libfoo/manifest; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0 available 1.0.0#1 + EOO + + # Deorphan libfoo/1.0.0 to libfoo/1.0.0#1. + # + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.0.0#1 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + %info: .+libfoo.+ is up to date% + updated libfoo/1.0.0#1 + EOE + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0#1 available (1.0.0#1) + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $rep_fetch $rep/t4a $rep/t4c; + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0#1 available 1.1.0 (1.0.0#1) 1.0.0 + EOO + + # Deorphan libfoo/1.0.0#1 to libfoo/1.0.0. + # + # Note that on Windows the local repository canonical name path part is + # converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --mask-repository $cn --deorphan libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.0.0#1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.0.0 available 1.1.0 1.0.0#1'; + + # Noop. + # + $* --mask-repository $cn --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status libfoo >'!libfoo configured 1.0.0 available 1.1.0 1.0.0#1'; + + # Deorphan libfoo/1.0.0 to libfoo/1.1.0. + # + # While at it, use the 'deorphan all held packages' form. + # + $* --mask-repository $cn --mask-repository $rep/t4c --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + # Noop. + # + $* --mask-repository $cn --mask-repository $rep/t4c --deorphan libfoo \ + 2>'info: nothing to build'; + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + $pkg_drop libfoo + } + + : preference + : + { + $clone_root_cfg; + + $tar -xf $src/t14d/libfoo-1.1.0+2.tar.gz &libfoo-1.1.0+2/***; + mv libfoo-1.1.0+2 libfoo; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + $rep_fetch $rep/t14a $rep/t14b $rep/t14c $rep/t14d $rep/t14e $rep/t14f $rep/t14i; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the exactly same version. + # + $rep_remove $~/libfoo/; + + $* --deorphan libfoo 2>>~%EOE%; + replace/update libfoo/1.1.0+2 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+2 + unpacked libfoo/1.1.0+2 + configured libfoo/1.1.0+2 + %info: .+libfoo-1.1.0\+2.+ is up to date% + updated libfoo/1.1.0+2 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the later revision of same version (1.1.0+3). + # + $rep_remove $rep/t14d; + + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.0+3 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+3 + unpacked libfoo/1.1.0+3 + configured libfoo/1.1.0+3 + %info: .+libfoo-1.1.0\+3.+ is up to date% + updated libfoo/1.1.0+3 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+3 to the later patch of same version (1.1.1). + # + $rep_remove $rep/t14e; + + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + disfigured libfoo/1.1.0+3 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + %info: .+libfoo-1.1.1.+ is up to date% + updated libfoo/1.1.1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.1 to later minor of same version (1.2.0). + # + $rep_remove $rep/t14f; + + $* --deorphan libfoo 2>>~%EOE%; + replace/upgrade libfoo/1.2.0 + disfigured libfoo/1.1.1 + fetched libfoo/1.2.0 + unpacked libfoo/1.2.0 + configured libfoo/1.2.0 + %info: .+libfoo-1.2.0.+ is up to date% + updated libfoo/1.2.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.2.0 to latest available version (1.1.0+1). + # + $rep_remove $rep/t14i; + + $* --deorphan libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.1.0+1 + disfigured libfoo/1.2.0 + fetched libfoo/1.1.0+1 + unpacked libfoo/1.1.0+1 + configured libfoo/1.1.0+1 + %info: .+libfoo-1.1.0\+1.+ is up to date% + updated libfoo/1.1.0+1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+1 to latest available version (1.1.0). + # + $rep_remove $rep/t14c; + + $* --deorphan libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.1.0 + disfigured libfoo/1.1.0+1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available (1.1.0) 1.0.0 + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available (1.1.0) 1.0.0 + EOO + + # Deorphan libfoo/1.1.0 to latest available version (1.0.0). + # + $rep_remove $rep/t14b; + + $* --deorphan libfoo 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available (1.0.0) + EOO + + # Noop. + # + $* --deorphan libfoo 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available (1.0.0) + EOO + + # Deorphan fails (none available). + # + $rep_remove $rep/t14a; + + $* --deorphan libfoo 2>>/EOE != 0; + error: unknown package libfoo + info: configuration cfg/ has no repositories + info: use 'bpkg rep-add' to add a repository + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 + EOO + + $pkg_drop libfoo + } + + : preference-all-held + : + : As above but uses 'deorphan all held packages form'. + : + { + $clone_root_cfg; + + $tar -xf $src/t14d/libfoo-1.1.0+2.tar.gz &libfoo-1.1.0+2/***; + mv libfoo-1.1.0+2 libfoo; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + $rep_fetch $rep/t14a $rep/t14b $rep/t14c $rep/t14d $rep/t14e $rep/t14f $rep/t14i; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the exactly same version. + # + $rep_remove $~/libfoo/; + + $* --deorphan 2>>~%EOE%; + replace/update libfoo/1.1.0+2 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+2 + unpacked libfoo/1.1.0+2 + configured libfoo/1.1.0+2 + %info: .+libfoo-1.1.0\+2.+ is up to date% + updated libfoo/1.1.0+2 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the later revision of same version (1.1.0+3). + # + $rep_remove $rep/t14d; + + $* --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.0+3 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+3 + unpacked libfoo/1.1.0+3 + configured libfoo/1.1.0+3 + %info: .+libfoo-1.1.0\+3.+ is up to date% + updated libfoo/1.1.0+3 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+3 to the later patch of same version (1.1.1). + # + $rep_remove $rep/t14e; + + $* --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + disfigured libfoo/1.1.0+3 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + %info: .+libfoo-1.1.1.+ is up to date% + updated libfoo/1.1.1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.1 to later minor of same version (1.2.0). + # + $rep_remove $rep/t14f; + + $* --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.2.0 + disfigured libfoo/1.1.1 + fetched libfoo/1.2.0 + unpacked libfoo/1.2.0 + configured libfoo/1.2.0 + %info: .+libfoo-1.2.0.+ is up to date% + updated libfoo/1.2.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.2.0 to latest available version (1.1.0+1). + # + $rep_remove $rep/t14i; + + $* --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.1.0+1 + disfigured libfoo/1.2.0 + fetched libfoo/1.1.0+1 + unpacked libfoo/1.1.0+1 + configured libfoo/1.1.0+1 + %info: .+libfoo-1.1.0\+1.+ is up to date% + updated libfoo/1.1.0+1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+1 to latest available version (1.1.0). + # + $rep_remove $rep/t14c; + + $* --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.1.0 + disfigured libfoo/1.1.0+1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available (1.1.0) 1.0.0 + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available (1.1.0) 1.0.0 + EOO + + # Deorphan libfoo/1.1.0 to latest available version (1.0.0). + # + $rep_remove $rep/t14b; + + $* --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available (1.0.0) + EOO + + # Noop. + # + $* --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available (1.0.0) + EOO + + # Deorphan fails (none available). + # + $rep_remove $rep/t14a; + + $* --deorphan 2>>/EOE != 0; + error: libfoo is not available + info: configuration cfg/ has no repositories + info: use 'bpkg rep-add' to add a repository + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 + EOO + + $pkg_drop libfoo + } + + : preference-all-held-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + $tar -xf $src/t14d/libfoo-1.1.0+2.tar.gz &libfoo-1.1.0+2/***; + mv libfoo-1.1.0+2 libfoo; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + $rep_fetch $rep/t14a $rep/t14b $rep/t14c $rep/t14d $rep/t14e $rep/t14f $rep/t14i; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the exactly same version. + # + # Note that on Windows the local repository canonical name path part is + # converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + mask = --mask-repository $cn; + + $* $mask --deorphan 2>>~%EOE%; + replace/update libfoo/1.1.0+2 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+2 + unpacked libfoo/1.1.0+2 + configured libfoo/1.1.0+2 + %info: .+libfoo-1.1.0\+2.+ is up to date% + updated libfoo/1.1.0+2 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+2 available 1.2.0 1.1.1 1.1.0+3 (1.1.0+2) 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+2 to the later revision of same version (1.1.0+3). + # + mask += --mask-repository $rep/t14d; + + $* $mask --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.0+3 + disfigured libfoo/1.1.0+2 + fetched libfoo/1.1.0+3 + unpacked libfoo/1.1.0+3 + configured libfoo/1.1.0+3 + %info: .+libfoo-1.1.0\+3.+ is up to date% + updated libfoo/1.1.0+3 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+3 available 1.2.0 1.1.1 (1.1.0+3) 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+3 to the later patch of same version (1.1.1). + # + mask += --mask-repository $rep/t14e; + + $* $mask --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.1.1 + disfigured libfoo/1.1.0+3 + fetched libfoo/1.1.1 + unpacked libfoo/1.1.1 + configured libfoo/1.1.1 + %info: .+libfoo-1.1.1.+ is up to date% + updated libfoo/1.1.1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.1 available 1.2.0 (1.1.1) 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.1 to later minor of same version (1.2.0). + # + mask += --mask-repository $rep/t14f; + + $* $mask --deorphan 2>>~%EOE%; + replace/upgrade libfoo/1.2.0 + disfigured libfoo/1.1.1 + fetched libfoo/1.2.0 + unpacked libfoo/1.2.0 + configured libfoo/1.2.0 + %info: .+libfoo-1.2.0.+ is up to date% + updated libfoo/1.2.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.2.0 available (1.2.0) 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.2.0 to latest available version (1.1.0+1). + # + mask += --mask-repository $rep/t14i; + + $* $mask --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.1.0+1 + disfigured libfoo/1.2.0 + fetched libfoo/1.1.0+1 + unpacked libfoo/1.1.0+1 + configured libfoo/1.1.0+1 + %info: .+libfoo-1.1.0\+1.+ is up to date% + updated libfoo/1.1.0+1 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0+1 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 (1.1.0+1) 1.1.0 1.0.0 + EOO + + # Deorphan libfoo/1.1.0+1 to latest available version (1.1.0). + # + mask += --mask-repository $rep/t14c; + + $* $mask --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.1.0 + disfigured libfoo/1.1.0+1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 (1.1.0) 1.0.0 + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.1.0 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 (1.1.0) 1.0.0 + EOO + + # Deorphan libfoo/1.1.0 to latest available version (1.0.0). + # + mask += --mask-repository $rep/t14b; + + $* $mask --deorphan 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 (1.0.0) + EOO + + # Noop. + # + $* $mask --deorphan 2>'info: nothing to build'; + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 (1.0.0) + EOO + + # Deorphan fails (none available). + # + mask += --mask-repository $rep/t14a; + + $* $mask --deorphan 2>>/EOE != 0; + error: libfoo is not available + EOE + + $pkg_status -o libfoo >>EOO; + !libfoo configured 1.0.0 available 1.2.0 1.1.1 1.1.0+3 1.1.0+2 1.1.0+1 1.1.0 (1.0.0) + EOO + + $pkg_drop libfoo + } + } +} + +: compatibility +: +{ + +$clone_cfg + +$rep_add $rep/t15 && $rep_fetch + + test.arguments += --yes + + : toolchain + : + { + +$clone_cfg + + : build-satisfied + : + { + $clone_cfg; + + $* libfoo libbar 2>>~%EOE%; + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbar-1.0.0.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + EOE + + $pkg_drop libfoo libbar + } + + : build-fail-unsatisfied + : + { + $clone_cfg; + + $* libbaz 2>>~%EOE% != 0 + error: unable to satisfy constraint (build2 >= 65536.0.0) for package libbaz + % info: available build2 version is .+% + info: while satisfying libbaz/1.0.0 + EOE + } + + : build-fail-unsatisfied-dependency + : + { + $clone_cfg; + + $* libbiz 2>>~%EOE% != 0 + error: unable to satisfy constraint (build2 >= 65536.0.0) for package libbaz + % info: available build2 version is .+% + info: while satisfying libbaz/1.0.0 + info: while satisfying libbiz/1.0.0 + EOE + } + } +} + +: existing-package +: +{ + +$tar -xf $src/libbar-1.2.0.tar.gz &libbar-1.2.0/*** + +$tar -xf $src/libbar-1.1.0.tar.gz &libbar-1.1.0/*** + +$tar -xf $src/libbar-1.0.0.tar.gz &libbar-1.0.0/*** + +$tar -xf $src/libbar-0.0.3.tar.gz &libbar-0.0.3/*** + +$tar -xf $src/libbaz-1.1.0.tar.gz &libbaz-1.1.0/*** + +$tar -xf $src/libfoo-1.1.0.tar.gz &libfoo-1.1.0/*** + +$tar -xf $src/libfoo-1.0.0.tar.gz &libfoo-1.0.0/*** + + d = [dir_path] ../../../ + + test.arguments += --yes + + : hold + : + { + : archive + : + { + : pick-archive + : + : Test that libbar/1.0.0 specified as an archive is picked as a + : dependency for libbaz, despite the fact the repository contains + : libbar/1.2.0. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + $src/libfoo-1.0.0.tar.gz \ + $src/libbar-1.0.0.tar.gz 2>>~%EOE%; + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 available 1.2.0 + !libfoo configured !1.0.0 + !libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz libfoo libbar + } + + : pick-repo + : + : Picks the libbar/1.2.0 dependency from the repository for the + : dependent libbaz/1.1.0 specified as an archive. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz $src/libfoo-1.0.0.tar.gz 2>>~%EOE%; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + configured libbar/1.2.0 + configured libfoo/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libfoo/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + !libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz libfoo libbar + } + + : unsatisfactory + : + { + $clone_root_cfg; + $rep_add $rep/t4b && $rep_fetch; + + $* libbar $src/libfoo-1.0.0.tar.gz 2>>~%EOE% != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unsatisfactory-archive + : + : Same as above but the dependent is specified as an archive. + : + { + $clone_root_cfg; + $rep_add $rep/t4a && $rep_fetch; # Note: libfoo/1.1.0 belongs to t4a. + + $* $src/libbar-1.1.0.tar.gz $src/libfoo-1.0.0.tar.gz 2>>~%EOE% != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + command line requires (libbar == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : dependency-alternative + : + : Note: by specifying an unsatisfactory dependency alternative as an + : archive we resolve the alternatives ambiguity here, building both + : libbar and libbaz packages as a result. + : + { + $clone_root_cfg; + $rep_add $rep/t8a && $rep_fetch; + + $* fox 2>>EOE != 0; + error: unable to select dependency alternative for package fox/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libbar + info: alternative: libbaz + info: while satisfying fox/1.0.0 + EOE + + $* fox $src/libbar-0.0.3.tar.gz 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + fetched libbar/0.0.3 + unpacked libbar/0.0.3 + configured libbaz/1.1.0 + configured fox/1.0.0 + configured libbar/0.0.3 + %info: .+fox-1.0.0.+ is up to date% + %info: .+libbar-0.0.3.+ is up to date% + updated fox/1.0.0 + updated libbar/0.0.3 + EOE + + $pkg_status -r fox libbar >>EOO; + !fox configured 1.0.0 + libbaz configured 1.1.0 + !libbar configured !0.0.3 available 1.0.0 + libbaz configured 1.1.0 + EOO + + $pkg_drop fox libbar + } + + : upgrade + : + { + $clone_root_cfg; + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + $src/libfoo-1.0.0.tar.gz \ + $src/libbar-1.0.0.tar.gz 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 available 1.1.0 + !libfoo configured !1.0.0 available 1.1.0 + !libfoo configured !1.0.0 available 1.1.0 + EOO + + $* --upgrade-recursive libbaz 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.1.0 + !libbar configured !1.1.0 + !libfoo configured !1.1.0 + !libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : downgrade + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* libbar 2>!; + + $* $src/libbar-1.0.0.tar.gz "?$src/libfoo-1.0.0.tar.gz" 2>>~%EOE%; + disfigured libbar/1.2.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbar + } + + : replace + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* libfoo 2>!; + + $* $src/libfoo-1.0.0.tar.gz 2>>~%EOE%; + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0 + EOO + + $* --plan "" $src/libfoo-1.0.0.tar.gz 2>>~%EOE%; + replace/update libfoo/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0 + EOO + + $* --plan "" $d/libfoo-1.0.0/ 2>>~%EOE%; + replace/upgrade libfoo/1.0.0#1 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + %info: .+libfoo.+ is up to date% + updated libfoo/1.0.0#1 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0#1 + EOO + + $pkg_drop libfoo + } + + : deorphan-existing-archive + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + $src/libfoo-1.0.0.tar.gz \ + $src/libbar-1.0.0.tar.gz 2>!; + + $* --deorphan libfoo 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 + !libfoo configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + $rep_add $rep/t3 && $rep_fetch; + + $* --deorphan 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz libfoo >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : deorphan-with-existing-archive + : + { + $clone_root_cfg; + $rep_add $rep/t2 $rep/t3 && $rep_fetch; + + $* libbaz libbar 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $rep_remove $rep/t2 $rep/t3; + + $* --deorphan $src/libfoo-1.0.0.tar.gz 2>>~%EOE%; + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured !1.0.0 + EOO + + $* --deorphan $src/libbar-1.2.0.tar.gz 2>>~%EOE%; + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + configured libbar/1.2.0 + configured libbaz/1.0.0 + %info: .+libbar-1.2.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.2.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz libfoo >>EOO; + !libbaz configured 1.0.0 + !libbar configured !1.2.0 + !libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : system + : + { + $clone_root_cfg; + $rep_add $rep/t3 && $rep_fetch; + + $* libbaz '?sys:libbar' 2>!; + + $* $src/libbar-1.1.0.tar.gz "?$src/libfoo-1.1.0.tar.gz" 2>>~%EOE%; + disfigured libbaz/1.0.0 + purged libbar/* + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.0.0 + %info: .+libbar-1.1.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.1.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz libbar + } + } + + : directory + : + { + : pick-directory + : + : Test that libbar/1.0.0 specified as a directory is picked as a + : dependency for libbaz, despite the fact the repository contains + : libbar/1.2.0. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + $d/libfoo-1.0.0/ \ + $d/libbar-1.0.0/ 2>>~%EOE%; + using libfoo/1.0.0 (external) + using libbar/1.0.0 (external) + using libbaz/1.1.0 (external) + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo.+ is up to date% + %info: .+libbar.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 available 1.2.0 + !libfoo configured !1.0.0 + !libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz libfoo libbar + } + + : pick-repo + : + : Picks the libbar/1.2.0 dependency from the repository for the + : dependent libbaz/1.1.0 specified as a directory. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $d/libbaz-1.1.0/ $d/libfoo-1.0.0/ 2>>~%EOE%; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + using libfoo/1.0.0 (external) + using libbaz/1.1.0 (external) + configured libbar/1.2.0 + configured libfoo/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libfoo/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + !libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz libfoo libbar + } + + : unsatisfactory + : + { + $clone_root_cfg; + $rep_add $rep/t4b && $rep_fetch; + + $* libbar $d/libfoo-1.0.0/ 2>>~%EOE% != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : unsatisfactory-archive + : + : Same as above but the dependent is specified as a directory. + : + { + $clone_root_cfg; + $rep_add $rep/t4a && $rep_fetch; # Note: libfoo/1.1.0 belongs to t4a. + + $* $d/libbar-1.1.0/ $d/libfoo-1.0.0/ 2>>~%EOE% != 0 + error: unable to satisfy constraints on package libfoo + info: command line depends on (libfoo == 1.0.0) + info: libbar/1.1.0 depends on (libfoo == 1.1.0) + command line requires (libbar == 1.1.0) + info: available libfoo/1.0.0 + info: available libfoo/1.1.0 + info: while satisfying libbar/1.1.0 + info: explicitly specify libfoo version to manually satisfy both constraints + EOE + } + + : dependency-alternative + : + : Note: by specifying an unsatisfactory dependency alternative as a + : directory we resolve the alternatives ambiguity here, building both + : libbar and libbaz packages as a result. + : + { + $clone_root_cfg; + $rep_add $rep/t8a && $rep_fetch; + + $* fox 2>>EOE != 0; + error: unable to select dependency alternative for package fox/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libbar + info: alternative: libbaz + info: while satisfying fox/1.0.0 + EOE + + $* fox $d/libbar-0.0.3/ 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + using libbar/0.0.3 (external) + configured libbaz/1.1.0 + configured fox/1.0.0 + configured libbar/0.0.3 + %info: .+fox-1.0.0.+ is up to date% + %info: .+libbar.+ is up to date% + updated fox/1.0.0 + updated libbar/0.0.3 + EOE + + $pkg_status -r fox libbar >>EOO; + !fox configured 1.0.0 + libbaz configured 1.1.0 + !libbar configured !0.0.3 available 1.0.0 + libbaz configured 1.1.0 + EOO + + $pkg_drop fox libbar + } + + : upgrade + : + { + $clone_root_cfg; + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + $d/libfoo-1.0.0/ \ + $d/libbar-1.0.0/ 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 available 1.1.0 + !libfoo configured !1.0.0 available 1.1.0 + !libfoo configured !1.0.0 available 1.1.0 + EOO + + $* --upgrade-recursive libbaz 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.1.0 + !libbar configured !1.1.0 + !libfoo configured !1.1.0 + !libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : downgrade + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* libbar 2>!; + + $* $d/libbar-1.0.0/ "?$d/libfoo-1.0.0/" 2>>~%EOE%; + disfigured libbar/1.2.0 + using libfoo/1.0.0 (external) + using libbar/1.0.0 (external) + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbar + } + + : replace + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* libfoo 2>!; + + $* $d/libfoo-1.0.0/ 2>>~%EOE%; + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + %info: .+libfoo.+ is up to date% + updated libfoo/1.0.0#1 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0#1 + EOO + + $* --plan "" $d/libfoo-1.0.0/ 2>>~%EOE%; + replace/update libfoo/1.0.0#1 + disfigured libfoo/1.0.0#1 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + %info: .+libfoo.+ is up to date% + updated libfoo/1.0.0#1 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0#1 + EOO + + $* --plan "" $src/libfoo-1.0.0.tar.gz 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + disfigured libfoo/1.0.0#1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status -r libfoo >>EOO; + !libfoo configured !1.0.0 + EOO + + $pkg_drop libfoo + } + + : deorphan-existing-directory + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + $d/libfoo-1.0.0/ \ + $d/libbar-1.0.0/ 2>!; + + $* --deorphan libfoo 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libfoo-1.0.0.+ is up to date% + %info: .+libbar.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libfoo/1.0.0 + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + !libbar configured !1.0.0 + !libfoo configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + $rep_add $rep/t3 && $rep_fetch; + + $* --deorphan 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz libfoo >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : deorphan-with-existing-directory + : + { + $clone_root_cfg; + $rep_add $rep/t2 $rep/t3 && $rep_fetch; + + $* libbaz libbar 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $rep_remove $rep/t2 $rep/t3; + + $* --deorphan $d/libfoo-1.0.0/ 2>>~%EOE%; + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libfoo.+ is up to date% + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libfoo/1.0.0#1 + updated libbar/1.0.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured 1.0.0 + !libfoo configured !1.0.0#1 + EOO + + $* --deorphan $d/libbar-1.2.0/ 2>>~%EOE%; + disfigured libbaz/1.0.0 + disfigured libbar/1.0.0 + using libbar/1.2.0 (external) + configured libbar/1.2.0 + configured libbaz/1.0.0 + %info: .+libbar.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.2.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz libfoo >>EOO; + !libbaz configured 1.0.0 + !libbar configured !1.2.0 + !libfoo configured !1.0.0#1 + EOO + + $pkg_drop libbaz libbar libfoo + } + + : system + : + { + $clone_root_cfg; + $rep_add $rep/t3 && $rep_fetch; + + $* libbaz '?sys:libbar' 2>!; + + $* $d/libbar-1.1.0/ "?$d/libfoo-1.1.0/" 2>>~%EOE%; + disfigured libbaz/1.0.0 + purged libbar/* + using libfoo/1.1.0 (external) + using libbar/1.1.0 (external) + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.0.0 + %info: .+libbar.+ is up to date% + %info: .+libbaz-1.0.0.+ is up to date% + updated libbar/1.1.0 + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + !libbar configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz libbar + } + } + } + + : dependency + : + { + : archive + : + { + : pick-archive + : + : Test that libbar/1.0.0 specified as an archive is picked as a + : dependency for libbaz, despite the fact the repository contains + : libbar/1.2.0. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + "?$src/libfoo-1.0.0.tar.gz" \ + "?$src/libbar-1.0.0.tar.gz" 2>>~%EOE%; + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : unsatisfactory + : + { + $clone_root_cfg; + $rep_add $rep/t4b && $rep_fetch; + + $* libbar "?$src/libfoo-1.0.0.tar.gz" 2>>EOE != 0 + error: package libfoo doesn't satisfy its dependents + info: libfoo/1.0.0 doesn't satisfy libbar/1.1.0 + EOE + } + + : unsatisfactory-archive + : + : Same as above but the dependent is specified as an archive. + : + { + $clone_root_cfg; + $rep_add $rep/t4a && $rep_fetch; + + $* $src/libbar-1.1.0.tar.gz "?$src/libfoo-1.0.0.tar.gz" 2>>EOE != 0 + error: package libfoo doesn't satisfy its dependents + info: libfoo/1.0.0 doesn't satisfy libbar/1.1.0 + EOE + } + + : dependency-alternative + : + : Note: by specifying an unsatisfactory dependency alternative as an + : archive we resolve the alternatives ambiguity here, building libbaz and + : skipping unused libbar as a result. + : + { + $clone_root_cfg; + $rep_add $rep/t8a && $rep_fetch; + + $* fox 2>>EOE != 0; + error: unable to select dependency alternative for package fox/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libbar + info: alternative: libbaz + info: while satisfying fox/1.0.0 + EOE + + $* fox "?$src/libbar-0.0.3.tar.gz" 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + configured libbaz/1.1.0 + configured fox/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + updated fox/1.0.0 + EOE + + $pkg_status -r fox libbar >>EOO; + !fox configured 1.0.0 + libbaz configured 1.1.0 + libbar available 1.0.0 + EOO + + $pkg_drop fox + } + + : upgrade + : + { + $clone_root_cfg; + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + "?$src/libfoo-1.0.0.tar.gz" \ + "?$src/libbar-1.0.0.tar.gz" 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.1.0 + libfoo configured !1.0.0 available 1.1.0 + libfoo configured !1.0.0 available 1.1.0 + EOO + + $* --upgrade-recursive libbaz 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.1.0 + libbar configured !1.1.0 + libfoo configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz + } + + : downgrade + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz "?$src/libfoo-1.0.0.tar.gz" 2>>~%EOE%; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + configured libbar/1.2.0 + configured libfoo/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + libfoo configured !1.0.0 + EOO + + $* --plan "" "?$src/libbar-1.0.0.tar.gz" 2>>~%EOE%; + replace/downgrade libbar/1.0.0 + reconfigure libbaz (dependent of libbar) + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : replace + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz 2>!; + + $* --plan "" "?$src/libfoo-1.0.0.tar.gz" 2>>~%EOE%; + replace/update libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $* --plan "" "?$src/libfoo-1.0.0.tar.gz" 2>>~%EOE%; + replace/update libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $* --plan "" "?$d/libfoo-1.0.0/" 2>>~%EOE%; + replace/upgrade libfoo/1.0.0#1 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0#1 + libfoo configured !1.0.0#1 + EOO + + $pkg_drop libbaz + } + + : deorphan-existing-archive + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz \ + "?$src/libfoo-1.0.0.tar.gz" \ + "?$src/libbar-1.0.0.tar.gz" 2>!; + + $* --deorphan ?libfoo 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz-1.1.0.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $rep_add $rep/t3 && $rep_fetch; + + $* --deorphan libbaz ?libbar 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libbaz-1.0.0.+ is up to date% + updated libbaz/1.0.0 + EOE + + $pkg_drop libbaz + } + + : deorphan-with-existing-archive + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $src/libbaz-1.1.0.tar.gz "?$src/libfoo-1.0.0.tar.gz" 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + libfoo configured !1.0.0 + EOO + + $rep_remove $rep/t5; + + $* --deorphan "?$src/libbar-1.2.0.tar.gz" 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0 + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + configured libbar/1.2.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.2.0 + libfoo configured !1.0.0 + EOO + + $* --deorphan "?$src/libbar-1.0.0.tar.gz" 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : system + : + { + $clone_root_cfg; + $rep_add $rep/t3 && $rep_fetch; + + $* libbaz '?sys:libbar' 2>!; + + $* "?$src/libbar-1.1.0.tar.gz" "?$src/libfoo-1.1.0.tar.gz" 2>>~%EOE%; + disfigured libbaz/1.0.0 + purged libbar/* + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.0.0 + %info: .+libbaz-1.0.0.+ is up to date% + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + libbar configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz + } + } + + : directory + : + { + : pick-directory + : + : Test that libbar/1.0.0 specified as a directory is picked as a + : dependency for libbaz, despite the fact the repository contains + : libbar/1.2.0. + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + "?$d/libfoo-1.0.0/" \ + "?$d/libbar-1.0.0/" 2>>~%EOE%; + using libfoo/1.0.0 (external) + using libbar/1.0.0 (external) + using libbaz/1.1.0 (external) + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : unsatisfactory + : + { + $clone_root_cfg; + $rep_add $rep/t4b && $rep_fetch; + + $* libbar "?$d/libfoo-1.0.0/" 2>>EOE != 0 + error: package libfoo doesn't satisfy its dependents + info: libfoo/1.0.0 doesn't satisfy libbar/1.1.0 + EOE + } + + : unsatisfactory-archive + : + : Same as above but the dependent is specified as a directory. + : + { + $clone_root_cfg; + $rep_add $rep/t4a && $rep_fetch; + + $* $d/libbar-1.1.0/ "?$d/libfoo-1.0.0/" 2>>EOE != 0 + error: package libfoo doesn't satisfy its dependents + info: libfoo/1.0.0 doesn't satisfy libbar/1.1.0 + EOE + } + + : dependency-alternative + : + : Note: by specifying an unsatisfactory dependency alternative as a + : directory we resolve the alternatives ambiguity here, building libbaz + : and skipping unused libbar as a result. + : + { + $clone_root_cfg; + $rep_add $rep/t8a && $rep_fetch; + + $* fox 2>>EOE != 0; + error: unable to select dependency alternative for package fox/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libbar + info: alternative: libbaz + info: while satisfying fox/1.0.0 + EOE + + $* fox "?$d/libbar-0.0.3/" 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + configured libbaz/1.1.0 + configured fox/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + updated fox/1.0.0 + EOE + + $pkg_status -r fox libbar >>EOO; + !fox configured 1.0.0 + libbaz configured 1.1.0 + libbar available 1.0.0 + EOO + + $pkg_drop fox + } + + : upgrade + : + { + $clone_root_cfg; + $rep_add $rep/t4a $rep/t4b && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + "?$d/libfoo-1.0.0/" \ + "?$d/libbar-1.0.0/" 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.1.0 + libfoo configured !1.0.0 available 1.1.0 + libfoo configured !1.0.0 available 1.1.0 + EOO + + $* --upgrade-recursive libbaz 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.1.0 + libbar configured !1.1.0 + libfoo configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz + } + + : downgrade + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $d/libbaz-1.1.0/ "?$d/libfoo-1.0.0/" 2>>~%EOE%; + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + using libfoo/1.0.0 (external) + using libbaz/1.1.0 (external) + configured libbar/1.2.0 + configured libfoo/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + libfoo configured !1.0.0 + EOO + + $* --plan "" "?$d/libbar-1.0.0/" 2>>~%EOE%; + replace/downgrade libbar/1.0.0 + reconfigure libbaz (dependent of libbar) + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0 + using libbar/1.0.0 (external) + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 available 1.2.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : replace + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $d/libbaz-1.1.0/ 2>!; + + $* --plan "" "?$d/libfoo-1.0.0/" 2>>~%EOE%; + replace/upgrade libfoo/1.0.0#1 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0#1 + libfoo configured !1.0.0#1 + EOO + + $* --plan "" "?$d/libfoo-1.0.0/" 2>>~%EOE%; + replace/update libfoo/1.0.0#1 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0#1 + using libfoo/1.0.0#1 (external) + configured libfoo/1.0.0#1 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0#1 + libfoo configured !1.0.0#1 + EOO + + $* --plan "" "?$src/libfoo-1.0.0.tar.gz" 2>>~%EOE%; + replace/downgrade libfoo/1.0.0 + reconfigure libbar (dependent of libfoo) + reconfigure libbaz (dependent of libbar, libfoo) + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0#1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar-1.0.0.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : deorphan-existing-directory + : + { + $clone_root_cfg; + $rep_add $rep/t2 && $rep_fetch; + + $* $d/libbaz-1.1.0/ \ + "?$d/libfoo-1.0.0/" \ + "?$d/libbar-1.0.0/" 2>!; + + $* --deorphan ?libfoo 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbar.+ is up to date% + %info: .+libbaz.+ is up to date% + updated libbar/1.0.0 + updated libbaz/1.1.0 + EOE + + $rep_add $rep/t3 && $rep_fetch; + + $* --deorphan libbaz ?libbar 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + configured libbar/1.0.0 + configured libbaz/1.0.0 + %info: .+libbaz-1.0.0.+ is up to date% + updated libbaz/1.0.0 + EOE + + $pkg_drop libbaz + } + + : deorphan-with-existing-directory + : + { + $clone_root_cfg; + $rep_add $rep/t5 && $rep_fetch; + + $* $d/libbaz-1.1.0/ "?$d/libfoo-1.0.0/" 2>!; + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured 1.2.0 + libfoo configured !1.0.0 + EOO + + $rep_remove $rep/t5; + + $* --deorphan "?$d/libbar-1.2.0/" 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0 + using libbar/1.2.0#1 (external) + configured libbar/1.2.0#1 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.2.0#1 + libfoo configured !1.0.0 + EOO + + # Suppress the 'dropping no longer used variable config.bin.exe.lib' + # and alike warnings. + # + rm cfg/libbar/build/config.build; + + $* --deorphan "?$d/libbar-1.0.0/" 2>>~%EOE%; + disfigured libbaz/1.1.0 + disfigured libbar/1.2.0#1 + using libbar/1.0.0 (external) + configured libbar/1.0.0 + configured libbaz/1.1.0 + %info: .+libbaz.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured !1.1.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + EOO + + $pkg_drop libbaz + } + + : system + : + { + $clone_root_cfg; + $rep_add $rep/t3 && $rep_fetch; + + $* libbaz '?sys:libbar' 2>!; + + $* "?$d/libbar-1.1.0/" "?$d/libfoo-1.1.0/" 2>>~%EOE%; + disfigured libbaz/1.0.0 + purged libbar/* + using libfoo/1.1.0 (external) + using libbar/1.1.0 (external) + configured libfoo/1.1.0 + configured libbar/1.1.0 + configured libbaz/1.0.0 + %info: .+libbaz-1.0.0.+ is up to date% + updated libbaz/1.0.0 + EOE + + $pkg_status -r libbaz >>EOO; + !libbaz configured 1.0.0 + libbar configured !1.1.0 + libfoo configured !1.1.0 + EOO + + $pkg_drop libbaz + } + } + } +} |