diff options
Diffstat (limited to 'tests/pkg-build.testscript')
-rw-r--r-- | tests/pkg-build.testscript | 30903 |
1 files changed, 30688 insertions, 215 deletions
diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index d1cfb91..9d19846 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -21,6 +21,13 @@ # | |-- buildfile # | `-- manifest # | +# |-- libhello-1.0.0 +# | |-- build +# | | |-- bootstrap.build +# | | |-- export.build +# | | `-- root.build +# | `-- * +# | # |-- libfoo-1.1.0.tar.gz # |-- libfoo-1.2.0.tar.gz # | @@ -68,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 # | @@ -94,49 +102,487 @@ # | |-- 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 # | |-- libBar-2.0.0.tar.gz # | `-- repositories.manifest # | -# |-- libhello-1.0.0 -# | |-- build -# | | |-- bootstrap.build -# | | |-- export.build -# | | `-- root.build -# | `-- * +# |-- t7a +# | |-- libbaz-1.0.0.tar.gz +# | |-- libbuild2-bar-1.0.0.tar.gz +# | |-- foo-1.0.0.tar.gz -> * libbuild2-bar ^1.0.0, libbaz ^1.0.0 +# | |-- libbuild2-foo-1.0.0.tar.gz -> libbaz ^1.0.0 +# | |-- libbiz-1.0.0.tar.gz -> * libbuild2-foo ^1.0.0, * foo ^1.0.0, +# | | libbaz ^1.0.0 +# | |-- libbuz-1.0.0.tar.gz -> * libbuild2-foo ^1.0.0, * foo ^1.0.0 +# | |-- libbix-1.0.0.tar.gz -> libbiz ^1.0.0, libbuz ^1.0.0 +# | |-- libbar-1.0.0.tar.gz -> * foo ^1.0.0, libbaz ^1.0.0 +# | |-- libbox-1.0.0.tar.gz -> * foo ^1.0.0, libbaz ^1.0.0 +# | |-- libfax-1.0.0.tar.gz +# | |-- libfix-1.0.0.tar.gz -> libbar ^1.0.0, libbox ^1.0.0, +# | | libfax ^1.0.0 +# | `-- repositories.manifest +# | +# |-- t7b -> t7a (complement repository) +# | |-- libbaz-1.1.0.tar.gz +# | |-- foo-1.1.0.tar.gz -> libbaz ^1.1.0 +# | |-- libbar-1.1.0.tar.gz -> * foo ^1.1.0, libbaz ^1.0.0 +# | |-- libbox-1.1.0.tar.gz -> * foo ^1.0.0 +# | `-- repositories.manifest +# | +# |-- t8a +# | |-- libbar-1.0.0.tar.gz +# | |-- libbaz-1.0.0.tar.gz +# | |-- libbaz-1.1.0.tar.gz +# | |-- libbiz-0.1.0.tar.gz +# | |-- libbiz-1.0.0.tar.gz +# | |-- libbox-0.1.0.tar.gz +# | |-- libbox-0.1.1.tar.gz +# | |-- libbox-1.0.0.tar.gz +# | |-- 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]') +# | |-- 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 +# | |-- libbar-1.0.0.tar.gz +# | |-- libbaz-1.0.0.tar.gz -> libbar ^1.0.0 +# | |-- libbox-1.0.0.tar.gz -> libbar ^1.0.0 +# | |-- foo-1.0.0.tar.gz -> libbaz, libbox +# | `-- repositories.manifest +# | +# |-- t10 +# | |-- 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 +# | |-- libbar-0.1.0.tar.gz +# | |-- libbar-1.0.0.tar.gz +# | |-- libbaz-0.1.0.tar.gz +# | |-- libbaz-1.0.0.tar.gz +# | |-- libbox-0.1.0.tar.gz +# | |-- libbox-1.0.0.tar.gz +# | |-- 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}} +# | |-- baz-0.1.0.tar.gz -> {libbar libfoo} == 0.1.0 {require {config.libbar.extras=true config.libfoo.extras=true}} +# | |-- baz-1.0.0.tar.gz -> {libbar libfoo} {require {config.libbar.extras=true config.libfoo.extras=true}} +# | |-- bac-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, +# | | libbaz {require {config.libbaz.extras=true}}, +# | | libfoo {require {config.libfoo.extras=true}} +# | |-- 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-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 == 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-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}}, +# | | bux {require {config.bux.extras=true}} +# | |-- tax-1.0.0.tar.gz -> libbar {require {config.libbar.extras=true}}, +# | | libfoo +# | |-- tex-0.1.0.tar.gz -> libfoo {require {config.libfoo.extras=true}} +# | |-- tex-0.2.0.tar.gz -> libbar, +# | | libfoo {require {config.libfoo.extras=true}} +# | |-- 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} 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}, 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}}, +# | | libbar {require {config.libbar.extras=true}} +# | |-- 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}}, +# | | libbox {require {config.libbox.extras=true}}, +# | | dox {require {config.dox.extras=true}} +# | |-- diz-1.0.0.tar.gz -> dox {require {config.dox.extras=true}}, +# | | libbox {require {config.libbox.extras=true}}, +# | | libbar {require {config.libbar.extras=true}} +# | |-- dox-1.0.0.tar.gz -> dex {require {config.dex.extras=true}} +# | `-- repositories.manifest +# | +# |-- t12a +# | |-- libbaz-1.0.0.tar.gz +# | |-- libbar-0.1.0.tar.gz -> libbaz +# | `-- repositories.manifest +# | +# |-- 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 +# | |-- foo-1.0.0.tar.gz -> libbar +# | |-- bar-1.0.0.tar.gz -> libbar == 0.1.0 +# | |-- baz-0.1.0.tar.gz -> libbaz +# | |-- baz-1.0.0.tar.gz -> libbaz == 1.0.0 +# | `-- repositories.manifest +# | +# |-- t13a +# | |-- liba-0.1.0.tar.gz +# | |-- 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 +# | |-- liba-0.1.0.tar.gz +# | |-- 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 {require {...}} +# | `-- repositories.manifest +# | +# |-- t13c +# | |-- liba-0.1.0.tar.gz +# | |-- 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 {...}}, +# | | libb ? (...) +# | |-- baz-1.0.0.tar.gz -> bar, liba {require {...}} +# | `-- repositories.manifest +# | +# |-- t13e +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)}, +# | | bar ? (...), +# | | biz +# | |-- biz-1.0.0.tar.gz -> liba {require {...}} +# | `-- repositories.manifest +# | +# |-- t13f +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | `-- repositories.manifest +# | +# |-- 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 {...}}, +# | | 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 {...}} +# | `-- repositories.manifest +# | +# |-- t13h +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | `-- repositories.manifest +# | +# |-- t13i +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {require {...} reflect {...}} +# | `-- repositories.manifest +# | +# |-- t13j +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- baz-1.0.0.tar.gz -> liba {require {...}} +# | |-- biz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | `-- repositories.manifest +# | +# |-- t13k +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)} +# | `-- repositories.manifest +# | +# |-- t13l +# | |-- liba-0.1.0.tar.gz +# | |-- libb-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {require {...}}, +# | | libb ? (...) +# | |-- baz-1.0.0.tar.gz -> liba {prefer {...} accept (...)}, +# | | libb ? (...) +# | `-- repositories.manifest +# | +# |-- t13m +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {require {...}} +# | |-- baz-1.0.0.tar.gz -> liba {require {...}}, +# | | bar { enable (...) reflect {...}} +# | |-- biz-1.0.0.tar.gz -> liba {require {...}} +# | |-- bix-1.0.0.tar.gz -> liba {require {...}} +# | |-- box-1.0.0.tar.gz -> liba {require {...}} +# | `-- repositories.manifest +# | +# |-- t13n +# | |-- liba-0.1.0.tar.gz +# | |-- libb-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {reflect {...}}, +# | | libb {reflect {...}} +# | `-- repositories.manifest +# | +# |-- t13o +# | |-- liba-0.1.0.tar.gz +# | |-- bar-1.0.0.tar.gz -> liba {reflect {...}} +# | |-- baz-1.0.0.tar.gz -> bar {require {...}} +# | |-- biz-1.0.0.tar.gz -> bar {prefer {...} accept (...)} +# | |-- 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 # `-- style-basic.git +posix = ($cxx.target.class != 'windows') + # Prepare repositories used by tests if running in the local mode. # +if! $remote rep_create += 2>! - cp -r $src/t0a $out/t0a && $rep_create $out/t0a &$out/t0a/packages.manifest - cp -r $src/t0b $out/t0b && $rep_create $out/t0b &$out/t0b/packages.manifest - cp -r $src/t0c $out/t0c && $rep_create $out/t0c &$out/t0c/packages.manifest - cp -r $src/t0d $out/t0d && $rep_create $out/t0d &$out/t0d/packages.manifest - cp -r $src/t1 $out/t1 && $rep_create $out/t1 &$out/t1/packages.manifest - cp -r $src/t2 $out/t2 && $rep_create $out/t2 &$out/t2/packages.manifest - cp -r $src/t3 $out/t3 && $rep_create $out/t3 &$out/t3/packages.manifest - cp -r $src/t4a $out/t4a && $rep_create $out/t4a &$out/t4a/packages.manifest - cp -r $src/t4b $out/t4b && $rep_create $out/t4b &$out/t4b/packages.manifest - 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/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/t0a $out/t0a && $rep_create $out/t0a &$out/t0a/packages.manifest + cp -r $src/t0b $out/t0b && $rep_create $out/t0b &$out/t0b/packages.manifest + cp -r $src/t0c $out/t0c && $rep_create $out/t0c &$out/t0c/packages.manifest + cp -r $src/t0d $out/t0d && $rep_create $out/t0d &$out/t0d/packages.manifest + cp -r $src/t1 $out/t1 && $rep_create $out/t1 &$out/t1/packages.manifest + cp -r $src/t2 $out/t2 && $rep_create $out/t2 &$out/t2/packages.manifest + cp -r $src/t3 $out/t3 && $rep_create $out/t3 &$out/t3/packages.manifest + cp -r $src/t4a $out/t4a && $rep_create $out/t4a &$out/t4a/packages.manifest + cp -r $src/t4b $out/t4b && $rep_create $out/t4b &$out/t4b/packages.manifest + 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 + cp -r $src/t7b $out/t7b && $rep_create $out/t7b &$out/t7b/packages.manifest + cp -r $src/t8a $out/t8a && $rep_create $out/t8a &$out/t8a/packages.manifest + cp -r $src/t9 $out/t9 && $rep_create $out/t9 &$out/t9/packages.manifest + cp -r $src/t10 $out/t10 && $rep_create $out/t10 &$out/t10/packages.manifest + cp -r $src/t11a $out/t11a && $rep_create $out/t11a &$out/t11a/packages.manifest + cp -r $src/t12a $out/t12a && $rep_create $out/t12a &$out/t12a/packages.manifest + cp -r $src/t12b $out/t12b && $rep_create $out/t12b &$out/t12b/packages.manifest + cp -r $src/t13a $out/t13a && $rep_create $out/t13a &$out/t13a/packages.manifest + cp -r $src/t13b $out/t13b && $rep_create $out/t13b &$out/t13b/packages.manifest + cp -r $src/t13c $out/t13c && $rep_create $out/t13c &$out/t13c/packages.manifest + cp -r $src/t13d $out/t13d && $rep_create $out/t13d &$out/t13d/packages.manifest + cp -r $src/t13e $out/t13e && $rep_create $out/t13e &$out/t13e/packages.manifest + cp -r $src/t13f $out/t13f && $rep_create $out/t13f &$out/t13f/packages.manifest + cp -r $src/t13g $out/t13g && $rep_create $out/t13g &$out/t13g/packages.manifest + cp -r $src/t13h $out/t13h && $rep_create $out/t13h &$out/t13h/packages.manifest + cp -r $src/t13i $out/t13i && $rep_create $out/t13i &$out/t13i/packages.manifest + cp -r $src/t13j $out/t13j && $rep_create $out/t13j &$out/t13j/packages.manifest + cp -r $src/t13k $out/t13k && $rep_create $out/t13k &$out/t13k/packages.manifest + cp -r $src/t13l $out/t13l && $rep_create $out/t13l &$out/t13l/packages.manifest + 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. # @@ -145,9 +591,13 @@ $git_extract $src/git/libbaz.tar &$out_git/state1/*** end -config_cxx = config.cxx=$quote($recall($cxx.path) $cxx.mode, true) +config_cxx = [cmdline] config.cxx=$quote($recall($cxx.path) $cxx.config.mode, true) + +tar = [cmdline] ($posix ? tar : bsdtar) -pkg_configure += -d cfg $config_cxx 2>! +cfg_create += 2>! +cfg_link += 2>! +pkg_configure += -d cfg 2>! pkg_disfigure += -d cfg pkg_drop += -d cfg --yes 2>! pkg_fetch += -d cfg 2>! @@ -157,12 +607,17 @@ pkg_unpack += -d cfg 2>! rep_add += -d cfg 2>! rep_remove += -d cfg 2>! rep_fetch += -d cfg --auth all --trust-yes 2>! +rep_list += -d cfg # Let's disable the progress indication that complicates stderr output # validation. # test.options += --no-progress +# Disable the use of the system package manager. +# +test.arguments += --sys-no-query + : libfoo : : Test building different versions of libfoo. @@ -244,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; @@ -401,10 +891,22 @@ test.options += --no-progress : $clone_root_cfg; $* $src/libbar-1.0.0.tar.gz 2>>EOE != 0 - error: unknown dependency libfoo of package libbar + error: no package available for dependency libfoo of package libbar info: while satisfying libbar/1.0.0 EOE + : unknown-dependency-config + : + : As above but with a linked configuration. + : + $clone_root_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + $* $src/libbar-1.0.0.tar.gz +{ --config-id 1 } 2>>~%EOE% != 0 + %error: no package available for dependency libfoo of package libbar \[cfg2.\]% + %info: while satisfying libbar/1.0.0 \[cfg2.\]% + EOE + : t2 : { @@ -510,6 +1012,21 @@ test.options += --no-progress EOO } + : latest-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* "libbar/1.1.0@$rep/t4e" +{ --config-id 1 } --trust-yes >>~%EOO% 2>! + %new libfoo/1.1.0\+1 \[cfg2.\] \(required by libbar \[cfg2.\]\)% + %new libbar/1.1.0 \[cfg2.\]% + EOO + } + : zero : { @@ -724,7 +1241,7 @@ test.options += --no-progress : $clone_cfg; $* libbaz >>EOO - new libfoo/1.1.0 (required by libbar libbaz) + new libfoo/1.1.0 (required by libbar, libbaz) new libbar/1.1.0 (required by libbaz) new libbaz/1.1.0 EOO @@ -738,19 +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: libbar depends on (libfoo == 1.1.0) - info: command line depends on (libfoo == 1.0.0) - info: available libfoo/1.1.0 - info: available libfoo/1.0.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 + + : 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 + +$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 : @@ -768,7 +1412,7 @@ test.options += --no-progress $pkg_fetch -e $src/libfix-0.0.1.tar.gz && $pkg_unpack libfix; $* libbaz >>EOO; - upgrade libfoo/1.1.0 (required by libbar libbaz) + upgrade libfoo/1.1.0 (required by libbar, libbaz) new libbar/1.1.0 (required by libbaz) new libbaz/1.1.0 EOO @@ -784,7 +1428,7 @@ test.options += --no-progress $pkg_fetch -e $src/libfoo-1.2.0.tar.gz && $pkg_unpack libfoo; $* libbaz >>EOO; - downgrade libfoo/1.1.0 (required by libbar libbaz) + downgrade libfoo/1.1.0 (required by libbar, libbaz) new libbar/1.1.0 (required by libbaz) new libbaz/1.1.0 EOO @@ -807,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 @@ -816,11 +1461,52 @@ 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 + + $* libfoo/1.1.0 --keep-unused >'update libfoo/1.1.0'; + + $pkg_disfigure libbar 2>'disfigured libbar/1.1.0'; + $pkg_purge libbar 2>'purged libbar/1.1.0'; + + $pkg_disfigure libfoo 2>'disfigured libfoo/1.1.0'; + $pkg_purge libfoo 2>'purged libfoo/1.1.0' + } + + : unable-downgrade-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $rep_add -d cfg2 $rep/t4a $rep/t4b $rep/t4c && $rep_fetch -d cfg2; + $cfg_link -d cfg2 cfg; + + $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 + EOE + + test.arguments = $regex.apply($test.arguments, cfg, cfg2); + + $* 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 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 + test.arguments = $regex.apply($test.arguments, cfg2, cfg); + $* libfoo/1.1.0 --keep-unused >'update libfoo/1.1.0'; $pkg_disfigure libbar 2>'disfigured libbar/1.1.0'; @@ -829,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 @@ -859,7 +1588,7 @@ test.options += --no-progress $* libbar >>EOO upgrade libfoo/1.1.0 (required by libbar) upgrade libbar/1.1.0 - reconfigure libbaz (dependent of libbar libfoo) + reconfigure libbaz (dependent of libbar, libfoo) EOO : foo @@ -868,7 +1597,7 @@ test.options += --no-progress $* libfoo >>EOO upgrade libfoo/1.1.0 reconfigure libbar (dependent of libfoo) - reconfigure libbaz (dependent of libbar libfoo) + reconfigure libbaz (dependent of libbar, libfoo) EOO : foo-bar @@ -877,7 +1606,7 @@ test.options += --no-progress $* libfoo libbar/1.0.0 >>EOO upgrade libfoo/1.1.0 reconfigure/update libbar/1.0.0 - reconfigure libbaz (dependent of libbar libfoo) + reconfigure libbaz (dependent of libbar, libfoo) EOO : bar-foo @@ -886,7 +1615,7 @@ test.options += --no-progress $* libbar/1.0.0 libfoo >>EOO upgrade libfoo/1.1.0 reconfigure/update libbar/1.0.0 - reconfigure libbaz (dependent of libbar libfoo) + reconfigure libbaz (dependent of libbar, libfoo) EOO : baz-foo @@ -935,12 +1664,12 @@ test.options += --no-progress $* libbaz 2>>~%EOE%; fetched libfoo/1.1.0 unpacked libfoo/1.1.0 - configured libfoo/1.1.0 fetched libbar/1.1.0 unpacked libbar/1.1.0 - configured libbar/1.1.0 fetched libbaz/1.1.0 unpacked libbaz/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 configured libbaz/1.1.0 %info: .+ is up to date% updated libbaz/1.1.0 @@ -1071,12 +1800,12 @@ test.options += --no-progress $* libbaz 2>>~%EOE%; fetched libfoo/1.1.0 unpacked libfoo/1.1.0 - configured libfoo/1.1.0 fetched libbar/1.1.0 unpacked libbar/1.1.0 - configured libbar/1.1.0 fetched libbaz/1.1.0 unpacked libbaz/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 configured libbaz/1.1.0 %info: .+ is up to date% updated libbaz/1.1.0 @@ -1110,16 +1839,15 @@ 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 - configured libfoo/1.1.0 fetched libbar/1.1.0 unpacked libbar/1.1.0 - configured libbar/1.1.0 fetched libbaz/1.1.0 unpacked libbaz/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 configured libbaz/1.1.0 %info: .+ is up to date% updated libbaz/1.1.0 @@ -1163,6 +1891,38 @@ test.options += --no-progress $pkg_disfigure libfoo 2>'disfigured libfoo/1.0.0'; $pkg_purge libfoo 2>'purged libfoo/1.0.0' } + + : forcing-upgrade-held-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + $rep_fetch -d cfg2 $rep/t4c; + + $* libfoo/1.0.0 +{ --config-id 1 } 2>>~%EOE%; + %fetched libfoo/1.0.0 \[cfg2.\]% + %unpacked libfoo/1.0.0 \[cfg2.\]% + %configured libfoo/1.0.0 \[cfg2.\]% + %info: .+ is up to date% + %updated libfoo/1.0.0 \[cfg2.\]% + EOE + + $pkg_status -d cfg2 libfoo >'!libfoo configured !1.0.0 available [1.1.0]'; + + $* libbaz ?libbar +{ --config-id 1 } 2>>~%EOE% != 0; + %error: package libbar \[cfg2.\] dependency on \(libfoo == 1.1.0\) is forcing upgrade of libfoo/1.0.0 \[cfg2.\] to 1.1.0% + % info: package version libfoo/1.0.0 \[cfg2.\] is held% + info: explicitly request version upgrade to continue + %info: while satisfying libbar/1.1.0 \[cfg2.\]% + info: while satisfying libbaz/1.1.0 + EOE + + $pkg_disfigure -d cfg2 libfoo 2>'disfigured libfoo/1.0.0'; + $pkg_purge -d cfg2 libfoo 2>'purged libfoo/1.0.0' + } } : drop-dependencies @@ -1173,9 +1933,9 @@ test.options += --no-progress $* libbar 2>>~%EOE%; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured 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: .+ is up to date% updated libbar/1.0.0 @@ -1197,16 +1957,16 @@ 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%; disfigured libbar/1.2.0 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured 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: .+ is up to date%{2} updated libfoo/1.0.0 @@ -1261,8 +2021,8 @@ test.options += --no-progress $* ./libbar/ 2>>~%EOE%; fetched libfoo/1.1.0 unpacked libfoo/1.1.0 - configured libfoo/1.1.0 using libbar/1.1.0 (external) + configured libfoo/1.1.0 configured libbar/1.1.0 %info: .+ is up to date% updated libbar/1.1.0 @@ -1293,9 +2053,9 @@ test.options += --no-progress $* libbar/1.0 2>>~%EOE%; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured 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: .+ is up to date% updated libbar/1.0.0 @@ -1314,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; @@ -1324,6 +2095,687 @@ test.options += --no-progress $pkg_drop libbar } + + : foo-baz-box-bar + : + : Test build scenarios described in + : https://github.com/conan-io/conan/issues/9547. + : + if (!$remote) + { + +mkdir 1/ + + # Repository state 0: initial (see the above t9 directory tree for details). + + # Repository state 1: libbar/2.0.0 is released. + # + r = 1/t9-1 + +cp -r $rep/t9 $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 && \ + rm -r $r/libbar-2.0.0 && \ + $rep_create $r &$r/packages.manifest + + # Repository state 2: libbaz/2.0.0 is released, which depends on + # libbar ^2.0.0. + # + r = 1/t9-2 + +cp -r 1/t9-1 $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 && \ + rm -r $r/libbaz-2.0.0 && \ + $rep_create $r &$r/packages.manifest + + # Repository state 3: libbox/1.1.0 is released, which still depends on + # libbar ^1.0.0. + # + r = 1/t9-3 + +cp -r 1/t9-2 $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 && \ + rm -r $r/libbox-1.1.0 && \ + $rep_create $r &$r/packages.manifest + + : repo-state-1 + : + { + : build + : + { + $clone_root_cfg; + $rep_add ../../1/t9-1 && $rep_fetch; + + $* foo 2>!; + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.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 + } + + : upgrade + : + : Test upgrade of packages (initially built from the repository state 0) + : after the state 1 is fetched. + : + { + $clone_root_cfg; + + mkdir 1/; + ln -s $rep/t9 1/repo; + $rep_add 1/repo && $rep_fetch; + + $* foo 2>!; + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libbar configured 1.0.0 + EOO + + rm 1/repo; + ln -s ../../../1/t9-1 1/repo; + + $rep_fetch; + + $* foo 2>!; # Noop. + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.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 + + $* ?libbar 2>!; # Noop. + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.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 + + $* ?libbaz 2>!; # Noop. + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.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 + } + } + + : repo-state-2 + : + { + : build + : + { + $clone_root_cfg; + $rep_add ../../1/t9-2 && $rep_fetch; + + # 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 --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 + + $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 + } + + : upgrade + : + : Test upgrade of packages (initially built from the repository state 0) + : after the state 2 is fetched. + : + { + $clone_root_cfg; + + mkdir 1/; + ln -s $rep/t9 1/repo; + $rep_add 1/repo && $rep_fetch; + + $* foo 2>!; + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libbar configured 1.0.0 + EOO + + rm 1/repo; + ln -s ../../../1/t9-2 1/repo; + + $rep_fetch; + + $* foo 2>!; # Noop. + $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 + + $* ?libbar 2>!; # Noop. + $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 + + # 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 --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 + } + } + + : repo-state-3 + : + { + : build + : + { + $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, + # which is resolved automatically. + # + $* 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 + + $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.1.0 + libbar configured 1.0.0 available 2.0.0 + EOO + + $pkg_drop foo + } + + : upgrade + : + : Test upgrade of packages (initially built from the repository state 0) + : after the state 3 is fetched. + : + { + $clone_root_cfg; + + mkdir 1/; + ln -s $rep/t9 1/repo; + $rep_add 1/repo && $rep_fetch; + + $* foo 2>!; + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libbar configured 1.0.0 + EOO + + rm 1/repo; + ln -s ../../../1/t9-3 1/repo; + + $rep_fetch; + + $* foo 2>!; # Noop. + $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>!; # Noop. + $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 + + 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%; + %.* + 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 + + $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%; + %.* + 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 + + $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.1.0 + libbar configured 1.0.0 available 2.0.0 + EOO + + $pkg_drop foo + } + } + } + + : 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 @@ -1347,9 +2799,9 @@ test.options += --no-progress disfigured libfoo/1.0.0 fetched libfoo/1.1.0 unpacked libfoo/1.1.0 - configured libfoo/1.1.0 fetched libbar/1.1.0 unpacked libbar/1.1.0 + configured libfoo/1.1.0 configured libbar/1.1.0 %info: .+ is up to date% updated libbar/1.1.0 @@ -1405,9 +2857,9 @@ test.options += --no-progress disfigured libfoo/1.0.0 fetched libfoo/1.1.0 unpacked libfoo/1.1.0 - configured libfoo/1.1.0 fetched libbar/1.1.0 unpacked libbar/1.1.0 + configured libfoo/1.1.0 configured libbar/1.1.0 %info: .+ is up to date% updated libbar/1.1.0 @@ -1424,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 } @@ -1440,12 +2895,11 @@ test.options += --no-progress $* libbox '?libbaz < 0.1.0' 2>>~%EOE%; fetched libbaz/0.0.4 unpacked libbaz/0.0.4 - configured libbaz/0.0.4 fetched libbox/0.0.1 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 @@ -1467,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 @@ -1489,25 +2942,31 @@ test.options += --no-progress $rep_fetch; $* libfoo 2>>~%EOE% != 0; - error: unknown dependency libhello >= 1.0 of package libfoo + error: no package available for dependency libhello of package libfoo %.+ 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; + $* "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%; - configured sys:libhello/* using libfoo/1.1.0 (external) + configured sys:libhello/* configured libfoo/1.1.0 %info: .+ is up to date% updated libfoo/1.1.0 @@ -1550,9 +3009,9 @@ test.options += --no-progress $* --yes libbar/1.0.0 '?sys:libbox/*' '?sys:libbux/1' 2>>EOE; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured libfoo/1.0.0 configured libbar/1.0.0 EOE @@ -1567,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' @@ -1583,9 +3042,9 @@ test.options += --no-progress $* --yes libbar/1.0.0 2>>EOE; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured libfoo/1.0.0 configured libbar/1.0.0 EOE @@ -1606,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 : { @@ -1623,13 +3119,13 @@ 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 - configured 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 configured libbar/1.0.0 EOE @@ -1686,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 } @@ -1709,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 - configured libfoo/1.0.0 - fetched libbaz/0.0.3 - unpacked libbaz/0.0.3 - configured libbaz/0.0.3 - fetched libfix/0.0.3 - unpacked libfix/0.0.3 - configured libfix/0.0.3 - fetched libbiz/0.0.2 - unpacked libbiz/0.0.2 - 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 } @@ -1762,15 +3292,15 @@ test.options += --no-progress $* libbiz libfix ?libbaz/0.0.3 2>>EOE; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 - configured libbaz/0.0.3 fetched libbiz/0.0.2 unpacked libbiz/0.0.2 - configured libbiz/0.0.2 fetched libfix/0.0.3 unpacked libfix/0.0.3 + configured libfoo/1.0.0 + configured libbaz/0.0.3 + configured libbiz/0.0.2 configured libfix/0.0.3 EOE @@ -1784,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: libbox depends on (libfoo == 1.0.0) - info: libfox depends on (libfoo == 0.0.1) - info: available libfoo/1.0.0 - info: available libfoo/0.0.1 - 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 - configured libfox/0.0.1 - fetched libfoo/1.0.0 - unpacked libfoo/1.0.0 - configured libfoo/1.0.0 - fetched libbox/0.0.2 - unpacked libbox/0.0.2 - configured libbox/0.0.2 - fetched libbiz/0.0.1 - unpacked libbiz/0.0.1 - 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 } @@ -1908,12 +3469,273 @@ test.options += --no-progress $rep_fetch $rep/t0a $rep/t0c; $* libbar/1.0.0 ?libfoo/0.0.1 2>>EOE != 0 - error: unknown dependency libfoo == 0.0.1 of package libbar + error: unable to satisfy dependency constraint (libfoo == 0.0.1) of package libbar + info: available libfoo versions: 1.0.0 info: while satisfying libbar/1.0.0 EOE } } + : 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 : { @@ -1933,9 +3755,9 @@ test.options += --no-progress $clone_cfg; $* libbar '?sys:libfoo' 2>>EOE; - configured sys:libfoo/* fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured sys:libfoo/* configured libbar/1.0.0 EOE @@ -1955,9 +3777,9 @@ test.options += --no-progress $clone_cfg; $* libbar '?sys:libfoo' 2>>EOE; - configured sys:libfoo/* fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured sys:libfoo/* configured libbar/1.0.0 EOE @@ -1972,9 +3794,9 @@ test.options += --no-progress $clone_cfg; $* libbar/0.0.1 '?sys:libbaz' 2>>EOE; - configured sys:libbaz/* fetched libbar/0.0.1 unpacked libbar/0.0.1 + configured sys:libbaz/* configured libbar/0.0.1 EOE @@ -1983,9 +3805,9 @@ test.options += --no-progress purged libbaz/* fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 + configured libfox/0.0.1 configured libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -1999,9 +3821,9 @@ test.options += --no-progress $clone_cfg; $* libbar '?sys:libfoo/0.1' 2>>EOE; - configured sys:libfoo/0.1 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured sys:libfoo/0.1 configured libbar/1.0.0 EOE @@ -2021,9 +3843,9 @@ test.options += --no-progress $clone_cfg; $* libbar '?sys:libfoo/0.1' 2>>EOE; - configured sys:libfoo/0.1 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured sys:libfoo/0.1 configured libbar/1.0.0 EOE @@ -2038,9 +3860,9 @@ test.options += --no-progress $clone_cfg; $* libbar '?sys:libfoo/0.2' 2>>EOE; - configured sys:libfoo/0.2 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured sys:libfoo/0.2 configured libbar/1.0.0 EOE @@ -2060,9 +3882,9 @@ test.options += --no-progress $clone_cfg; $* libbar/0.0.1 '?sys:libbaz/0.0.1' 2>>EOE; - configured sys:libbaz/0.0.1 fetched libbar/0.0.1 unpacked libbar/0.0.1 + configured sys:libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2071,9 +3893,9 @@ test.options += --no-progress purged libbaz/0.0.1 fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 + configured libfox/0.0.1 configured libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2087,9 +3909,9 @@ test.options += --no-progress $clone_cfg; $* libbar/0.0.1 '?sys:libbaz/0.0.1' 2>>EOE; - configured sys:libbaz/0.0.1 fetched libbar/0.0.1 unpacked libbar/0.0.1 + configured sys:libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2098,9 +3920,9 @@ test.options += --no-progress purged libbaz/0.0.1 fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 + configured libfox/0.0.1 configured libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2116,12 +3938,12 @@ test.options += --no-progress $* libbar/0.0.1 '?libbaz' 2>>EOE; fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 - configured libbaz/0.0.1 fetched libbar/0.0.1 unpacked libbar/0.0.1 + configured libfox/0.0.1 + configured libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2146,12 +3968,12 @@ test.options += --no-progress $* libbar/0.0.1 '?libbaz/0.0.1' 2>>EOE; fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 - configured libbaz/0.0.1 fetched libbar/0.0.1 unpacked libbar/0.0.1 + configured libfox/0.0.1 + configured libbaz/0.0.1 configured libbar/0.0.1 EOE @@ -2167,6 +3989,76 @@ test.options += --no-progress $pkg_drop libbar } + + : sys-to-src-unhold + : + { + $clone_cfg; + + $* 'sys:libbaz/1.2.0' 2>>EOE; + configured sys:libbaz/1.2.0 + EOE + + $* ?libbaz libbar/0.0.3 2>>EOE; + purged libbaz/1.2.0 + fetched libbaz/0.1.0 + unpacked libbaz/0.1.0 + fetched libbar/0.0.3 + unpacked libbar/0.0.3 + configured libbaz/0.1.0 + configured libbar/0.0.3 + EOE + + $pkg_drop libbar libbaz + } + + : sys-to-src-unhold-same-ver + : + : Same as above but the version does not change. + : + { + $clone_cfg; + + $* 'sys:libbaz/0.1.0' 2>>EOE; + configured sys:libbaz/0.1.0 + EOE + + $* ?libbaz libbar/0.0.3 2>>EOE; + purged libbaz/0.1.0 + fetched libbaz/0.1.0 + unpacked libbaz/0.1.0 + fetched libbar/0.0.3 + unpacked libbar/0.0.3 + configured libbaz/0.1.0 + configured libbar/0.0.3 + EOE + + $pkg_drop libbar libbaz + } + + : sys-to-src + : + : As above but keep held. + : + { + $clone_cfg; + + $* 'sys:libbaz/1.2.0' 2>>EOE; + configured sys:libbaz/1.2.0 + EOE + + $* libbaz libbar/0.0.3 2>>EOE; + purged libbaz/1.2.0 + fetched libbaz/0.1.0 + unpacked libbaz/0.1.0 + fetched libbar/0.0.3 + unpacked libbar/0.0.3 + configured libbaz/0.1.0 + configured libbar/0.0.3 + EOE + + $pkg_drop libbar libbaz + } } : source @@ -2209,12 +4101,12 @@ test.options += --no-progress purged libfox/0.0.1 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.2 unpacked libbaz/0.0.2 - configured 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 @@ -2259,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 : { @@ -2277,6 +4234,29 @@ test.options += --no-progress $pkg_drop libbar } + + : unsatisfied-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* libbar/0.0.1 2>!; + + $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: 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'; + + $pkg_drop libbar + } } : scratch @@ -2305,9 +4285,9 @@ test.options += --no-progress purged libfoo/0.0.1 fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 + configured libfox/0.0.1 configured libbaz/0.0.1 configured libbox/0.0.1 EOE @@ -2431,7 +4411,7 @@ test.options += --no-progress : as a dependency, so it is built incrementally. : { - $cfg_create cxx $config_cxx -d cfg 2>- &cfg/***; + $cfg_create cxx $config_cxx -d cfg &cfg/***; # Add libhello as the dir repository. # @@ -2449,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. # @@ -2463,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 } } @@ -2494,15 +4475,15 @@ test.options += --no-progress $* libbar libfoo/0.0.1 2>>EOE; fetched libfix/0.0.1 unpacked libfix/0.0.1 - configured libfix/0.0.1 fetched libfoo/0.0.1 unpacked libfoo/0.0.1 - configured libfoo/0.0.1 fetched libbaz/0.0.2 unpacked libbaz/0.0.2 - configured libbaz/0.0.2 fetched libbar/0.0.2 unpacked libbar/0.0.2 + configured libfix/0.0.1 + configured libfoo/0.0.1 + configured libbaz/0.0.2 configured libbar/0.0.2 EOE @@ -2524,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; @@ -2536,9 +4516,9 @@ test.options += --no-progress $* libfoo 2>>EOE; fetched libfix/0.0.1 unpacked libfix/0.0.1 - configured libfix/0.0.1 fetched libfoo/0.0.1 unpacked libfoo/0.0.1 + configured libfix/0.0.1 configured libfoo/0.0.1 EOE @@ -2547,20 +4527,1578 @@ test.options += --no-progress disfigured libfix/0.0.1 fetched libfox/0.0.1 unpacked libfox/0.0.1 - configured libfox/0.0.1 fetched libbaz/0.0.1 unpacked libbaz/0.0.1 - configured libbaz/0.0.1 fetched libbar/0.0.1 unpacked libbar/0.0.1 - configured libbar/0.0.1 purged libfix/0.0.1 + configured libfox/0.0.1 + configured libbaz/0.0.1 + configured libbar/0.0.1 configured sys:libfix/* configured libfoo/0.0.1 EOE $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 @@ -2576,19 +6114,32 @@ test.options += --no-progress +$* libbar/0.0.2 libbaz/0.0.2 libfoo/0.0.1 --yes 2>>EOE fetched libfix/0.0.1 unpacked libfix/0.0.1 - configured libfix/0.0.1 fetched libfoo/0.0.1 unpacked libfoo/0.0.1 - configured libfoo/0.0.1 fetched libbaz/0.0.2 unpacked libbaz/0.0.2 - configured libbaz/0.0.2 fetched libbar/0.0.2 unpacked libbar/0.0.2 + configured libfix/0.0.1 + configured libfoo/0.0.1 + configured libbaz/0.0.2 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 : @@ -2600,9 +6151,9 @@ test.options += --no-progress disfigured libbaz/0.0.2 fetched libbaz/0.1.0 unpacked libbaz/0.1.0 - configured libbaz/0.1.0 fetched libbar/0.0.3 unpacked libbar/0.0.3 + configured libbaz/0.1.0 configured libbar/0.0.3 EOE @@ -2624,12 +6175,12 @@ test.options += --no-progress purged libfix/0.0.1 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.1.0 unpacked libbaz/0.1.0 - configured libbaz/0.1.0 fetched libbar/0.0.3 unpacked libbar/0.0.3 + configured libfoo/1.0.0 + configured libbaz/0.1.0 configured libbar/0.0.3 EOE @@ -2657,10 +6208,10 @@ test.options += --no-progress purged libfix/0.0.1 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 purged libbaz/0.0.2 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured libfoo/1.0.0 configured libbar/1.0.0 EOE } @@ -2701,12 +6252,12 @@ test.options += --no-progress purged libfix/0.0.1 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 - configured libbaz/0.0.3 fetched libbar/0.0.3 unpacked libbar/0.0.3 + configured libfoo/1.0.0 + configured libbaz/0.0.3 configured libbar/0.0.3 EOE @@ -2726,12 +6277,12 @@ test.options += --no-progress purged libfix/0.0.1 fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 - configured libbaz/0.0.3 fetched libbar/0.0.3 unpacked libbar/0.0.3 + configured libfoo/1.0.0 + configured libbaz/0.0.3 configured libbar/0.0.3 EOE @@ -2753,8 +6304,20233 @@ 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 } + + : alternative + : + { + +$clone_root_cfg && $rep_add $rep/t8a && $rep_fetch + + : multiple-dependencies + : + { + $clone_cfg; + + $* foo --yes 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + configured libbaz/1.1.0 + configured libbar/1.0.0 + configured foo/1.0.0 + %info: .+foo-1.0.0.+ is up to date% + updated foo/1.0.0 + EOE + + $pkg_drop foo + } + + : multiple-alts + : + { + +$clone_cfg + + test.arguments += --yes --plan 'build plan:' + + : ambiguity + : + { + $clone_cfg; + + $* 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 + } + + : reuse + : + { + +$clone_cfg + + : specified-dep-build + : + { + $clone_cfg; + + $* fox ?libbaz 2>>~%EOE%; + build plan: + new libbaz/1.1.0 (required by fox) + new fox/1.0.0 + config.fox.backend=libbaz (set by fox) + 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_drop fox + } + + : hold-build + : + { + $clone_cfg; + + $* fox libbaz 2>>~%EOE%; + build plan: + new libbaz/1.1.0 + new fox/1.0.0 + config.fox.backend=libbaz (set by fox) + 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: .+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 + + $pkg_drop fox; + $pkg_drop libbaz + } + + : configured + : + { + $clone_cfg; + + $* libbaz 2>!; + + $* fox 2>>~%EOE%; + build plan: + new fox/1.0.0 + config.fox.backend=libbaz (set by fox) + fetched fox/1.0.0 + unpacked fox/1.0.0 + configured fox/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + updated fox/1.0.0 + EOE + + $pkg_drop fox; + $pkg_drop libbaz + } + + : fetched + : + { + $clone_cfg; + + $pkg_fetch libbaz/1.0.0; + + $* fox 2>>~%EOE%; + build plan: + update libbaz/1.0.0 (required by fox) + new fox/1.0.0 + config.fox.backend=libbaz (set by fox) + unpacked libbaz/1.0.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + configured libbaz/1.0.0 + configured fox/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + updated fox/1.0.0 + EOE + + $pkg_drop fox + } + } + + : postpone + : + { + +$clone_cfg + + : basic + : + { + $clone_cfg; + + $* fox foo 2>>~%EOE%; + build plan: + new libbaz/1.1.0 (required by foo) + new libbar/1.0.0 (required by foo, fox) + new fox/1.0.0 + config.fox.backend=libbar (set by fox) + new foo/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + configured libbaz/1.1.0 + configured libbar/1.0.0 + configured fox/1.0.0 + configured foo/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + %info: .+foo-1.0.0.+ is up to date% + updated fox/1.0.0 + updated foo/1.0.0 + EOE + + $pkg_drop fox; + $pkg_drop foo + } + + : pick-libbaz + : + { + $clone_cfg; + + $* baz fox bar 2>>~%EOE%; + build plan: + new libbaz/1.1.0 (required by baz) + new baz/1.0.0 + new libbar/1.0.0 (required by bar, fox) + new fox/1.0.0 + config.fox.backend=libbar (set by fox) + new bar/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured libbaz/1.1.0 + configured baz/1.0.0 + configured libbar/1.0.0 + configured fox/1.0.0 + configured bar/1.0.0 + %info: .+baz-1.0.0.+ is up to date% + %info: .+fox-1.0.0.+ is up to date% + %info: .+bar-1.0.0.+ is up to date% + updated baz/1.0.0 + updated fox/1.0.0 + updated bar/1.0.0 + EOE + + cat cfg/fox-1.0.0/build/config.build >>~%EOO%; + %.* + config.fox.backend = libbar + %.* + EOO + + $pkg_drop fox; + $pkg_drop bar; + $pkg_drop baz + } + } + + : reconfigure-dependent + : + { + $clone_cfg; + + $* fox ?libbaz/1.0.0 2>>~%EOE%; + build plan: + new libbaz/1.0.0 (required by fox) + new fox/1.0.0 + config.fox.backend=libbaz (set by fox) + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched fox/1.0.0 + unpacked fox/1.0.0 + configured libbaz/1.0.0 + configured fox/1.0.0 + %info: .+fox-1.0.0.+ is up to date% + updated fox/1.0.0 + EOE + + $* ?libbaz 2>>~%EOE%; + build plan: + upgrade libbaz/1.1.0 + reconfigure fox (dependent of libbaz) + disfigured fox/1.0.0 + disfigured libbaz/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.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 + + cat cfg/fox-1.0.0/build/config.build >>~%EOO%; + %.* + config.fox.backend = libbaz + %.* + EOO + + $pkg_drop fox + } + + : recreate-decision + : + { + +$clone_cfg + + : reevaluate-alts + : + { + +$clone_cfg + + : preserve + : + : Test that the existing libbox dependency is preserved even though + : libbiz is more preferable as a dependency. + : + { + $clone_cfg; + + $* box libbox 2>!; + + $* box +{ config.box.extras=true } ?libbiz 2>>~%EOE%; + build plan: + reconfigure/update box/1.0.0 + config.box.extras=true (user configuration) + config.box.backend=libbox (set by box) + disfigured box/1.0.0 + configured box/1.0.0 + %info: .+box-1.0.0.+ is up to date% + updated box/1.0.0 + EOE + + $* box +{ config.box.extras=false } libbiz 2>>~%EOE%; + build plan: + reconfigure/update box/1.0.0 + config.box.extras=false (user configuration) + config.box.backend=libbox (set by box) + new libbiz/1.0.0 + disfigured box/1.0.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + configured box/1.0.0 + configured libbiz/1.0.0 + %info: .+box-1.0.0.+ is up to date% + %info: .+libbiz-1.0.0.+ is up to date% + updated box/1.0.0 + updated libbiz/1.0.0 + EOE + + $pkg_status -r box >>EOO; + !box configured 1.0.0 + libbaz configured 1.1.0 + !libbox configured 1.0.0 + EOO + + cat cfg/box-1.0.0/build/config.build >>~%EOO%; + %.* + config.box.backend = libbox + %.* + EOO + + $pkg_drop box; + $pkg_drop libbox; + $pkg_drop libbiz + } + + : change-downgraded-dependency + : + : Test that libbiz is selected as a dependency since the existing + : dependency decision cannot be preserved (libbox is downgraded to + : 0.1.0 and becomes unsatisfactory for box). + : + { + $clone_cfg; + + $* box libbox 2>!; + + $* box +{ config.box.extras=true } ?libbox/0.1.0 2>>~%EOE%; + build plan: + 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 + configured libbiz/1.0.0 + configured box/1.0.0 + %info: .+box-1.0.0.+ is up to date% + updated box/1.0.0 + EOE + + $pkg_status -r box >>EOO; + !box configured 1.0.0 + libbaz configured 1.1.0 + libbiz configured 1.0.0 + EOO + + cat cfg/box-1.0.0/build/config.build >>~%EOO%; + %.* + config.box.backend = libbiz + %.* + EOO + + $pkg_drop box + } + + : change-downgraded-hold + : + : As above but libbox is downgraded to hold. + : + { + $clone_cfg; + + $* box libbox 2>!; + + # 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 + 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 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + fetched libbox/0.1.0 + unpacked libbox/0.1.0 + configured libbiz/1.0.0 + configured libbox/0.1.0 + configured box/1.0.0 + %info: .+libbox-0.1.0.+ is up to date% + %info: .+box-1.0.0.+ is up to date% + updated libbox/0.1.0 + updated box/1.0.0 + EOE + + $pkg_status -r box >>EOO; + !box configured 1.0.0 + libbaz configured 1.1.0 + libbiz configured 1.0.0 + EOO + + 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 + : + { + $clone_cfg; + + $* box ?libbiz/0.1.0 2>>~%EOE%; + build plan: + new libbox/1.0.0 (required by box) + new libbaz/1.1.0 (required by box) + new box/1.0.0 + config.box.backend=libbox (set by box) + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + fetched box/1.0.0 + unpacked box/1.0.0 + configured libbox/1.0.0 + configured libbaz/1.1.0 + configured box/1.0.0 + %info: .+box-1.0.0.+ is up to date% + updated box/1.0.0 + EOE + + $pkg_status -r >>EOO; + !box configured 1.0.0 + libbaz configured 1.1.0 + libbox configured 1.0.0 + EOO + + 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 + # libbox as a prerequisite of box. + # + $* libbiz ?libbaz/1.0.0 2>>~%EOE%; + build plan: + new libbiz/1.0.0 + downgrade libbaz/1.0.0 + reconfigure box (dependent of libbaz) + disfigured box/1.0.0 + disfigured libbaz/1.1.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + configured libbiz/1.0.0 + configured libbaz/1.0.0 + configured box/1.0.0 + %info: .+libbiz-1.0.0.+ is up to date% + %info: .+box-1.0.0.+ is up to date% + updated libbiz/1.0.0 + updated box/1.0.0 + EOE + + $pkg_status -r >>EOO; + !box configured 1.0.0 + libbaz configured !1.0.0 available 1.1.0 + libbox configured 1.0.0 + !libbiz configured 1.0.0 + EOO + + 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. + # + $* ?libbox/0.1.1 2>>~%EOE%; + build plan: + downgrade libbox/0.1.1 + reconfigure box (dependent of libbox) + disfigured box/1.0.0 + disfigured libbox/1.0.0 + fetched libbox/0.1.1 + unpacked libbox/0.1.1 + configured libbox/0.1.1 + configured box/1.0.0 + %info: .+box-1.0.0.+ is up to date% + updated box/1.0.0 + EOE + + $pkg_status -r >>EOO; + !box configured 1.0.0 + libbaz configured !1.0.0 available 1.1.0 + libbox configured !0.1.1 available 1.0.0 + !libbiz configured 1.0.0 + EOO + + cat cfg/box-1.0.0/build/config.build >>~%EOO%; + %.* + config.box.backend = libbox + %.* + EOO + + $pkg_drop box; + $pkg_drop libbiz + } + } + } + + : enable-condition + : + { + +$cfg_create cxx $config_cxx -d cfg &cfg/*** + +$rep_add $rep/t8a && $rep_fetch + + test.arguments += --yes + + backend = ($posix ? 'libbaz' : 'libbar') + backend_dep = ($posix ? 'libbaz/1.1.0' : 'libbar/1.0.0') + backend_configured = ($posix ? 'libbaz configured 1.1.0' : 'libbar configured 1.0.0') + + : cxx-target + : + { + $clone_cfg; + + $* fax 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched fax/1.0.0 + unpacked fax/1.0.0 + configured $backend_dep + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + EOO + + cat cfg/fax-1.0.0/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = false + %.* + EOO + + $pkg_drop fax + } + + : config-var + : + { + $clone_cfg; + + $* config.fax.libbiz=true -- fax 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + fetched fax/1.0.0 + unpacked fax/1.0.0 + configured $backend_dep + configured libbiz/1.0.0 + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + libbiz configured 1.0.0 + EOO + + cat cfg/fax-1.0.0/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = true + %.* + EOO + + $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 + : + { + +$clone_cfg + + : add-dependency + : + { + $clone_cfg; + + $* fax 2>!; + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + EOO + + $* config.fax.libbiz=true -- fax 2>>~%EOE%; + disfigured fax/1.0.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + configured libbiz/1.0.0 + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + libbiz configured 1.0.0 + EOO + + # While at it, tests that the dependency is properly removed. + # + $* config.fax.libbiz=false -- fax 2>>~%EOE%; + disfigured fax/1.0.0 + disfigured libbiz/1.0.0 + purged libbiz/1.0.0 + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + EOO + + $pkg_drop fax + } + + : downgrade-dependency + : + { + $clone_cfg; + + $* fux 2>!; + + $pkg_status -r >>"EOO"; + !fux configured 1.0.0 + libbiz configured 1.0.0 + EOO + + $* config.fux.libbiz_old=true -- fux 2>>~%EOE%; + disfigured fux/1.0.0 + disfigured libbiz/1.0.0 + fetched libbiz/0.1.0 + unpacked libbiz/0.1.0 + configured libbiz/0.1.0 + configured fux/1.0.0 + %info: .+fux-1.0.0.+ is up to date% + updated fux/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fux configured 1.0.0 + libbiz configured 0.1.0 available 1.0.0 + EOO + + # While at it, test that the dependency is properly upgraded. + # + # Note that, unless requested, libbiz is not upgraded, since 0.1.0 + # is still good for the selected alternative. + # + $* config.fux.libbiz_old=false -- fux 2>>~%EOE%; + disfigured fux/1.0.0 + configured fux/1.0.0 + %info: .+fux-1.0.0.+ is up to date% + updated fux/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fux configured 1.0.0 + libbiz configured 0.1.0 available 1.0.0 + EOO + + $* fux +{ config.fux.libbiz_old=false } ?libbiz 2>>~%EOE%; + disfigured fux/1.0.0 + disfigured libbiz/0.1.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + configured libbiz/1.0.0 + configured fux/1.0.0 + %info: .+fux-1.0.0.+ is up to date% + updated fux/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fux configured 1.0.0 + libbiz configured 1.0.0 + EOO + + $pkg_drop fux + } + } + + : external-package + : + if! $remote + { + +$clone_cfg + + +$tar -xzf $src/t8a/fax-1.0.0.tar.gz &fax-1.0.0/*** + +mv fax-1.0.0 fax + + : change-manifest + : + { + $clone_cfg; + cp -rp ../fax/ ./; + + $* config.fax.libbiz=true -- fax/ 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + using fax/1.0.0 \(external\) + configured $backend_dep + configured libbiz/1.0.0 + configured fax/1.0.0 + %info: .+fax.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured !1.0.0 + $backend_configured + libbiz configured 1.0.0 + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = true + %.* + EOO + + # Upgrade the external package after changing its manifest and make + # sure the configuration is preserved. + # + echo '' >+fax/manifest; + + $* fax/ 2>>~%EOE%; + disfigured fax/1.0.0 + using fax/1.0.0#1 (external) + configured fax/1.0.0#1 + %info: .+fax.+ is up to date% + updated fax/1.0.0#1 + EOE + + $pkg_status -r >>"EOO"; + !fax configured !1.0.0#1 + $backend_configured + libbiz configured 1.0.0 + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = true + %.* + EOO + + # While at it, test that it's ok for out root directory to not + # exist. + # + # Note that this testing is only meaningful when we replace an + # external package with another external (see + # build_package::external() for details). + # + echo '' >+fax/manifest; + + rm -r cfg/fax/; + + $* fax/ 2>>~%EOE%; + disfigured fax/1.0.0#1 + disfigured libbiz/1.0.0 + purged libbiz/1.0.0 + using fax/1.0.0#2 (external) + configured fax/1.0.0#2 + %info: .+fax.+ is up to date% + updated fax/1.0.0#2 + EOE + + $pkg_status -r >>"EOO"; + !fax configured !1.0.0#2 + $backend_configured + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = false + %.* + EOO + + # Also tests that the depends value location is printed on the + # enable condition evaluation failure for an external package. + # + sed -i -e 's/(depends: libbiz).+/\1 ? (config.fax.libbiz = true)/' fax/manifest; + + $* fax/ 2>>~%EOE% != 0; + <depends-enable-clause>:1: error: invalid bool value: multiple names + info: enable condition: (config.fax.libbiz = true) + % fax.manifest:10:10: info: in depends manifest value defined here% + info: while satisfying fax/1.0.0#3 + EOE + + $pkg_drop fax + } + + : change-buildfile + : + { + +$clone_cfg + + : package-directory + : + { + $clone_cfg; + cp -rp ../../fax/ ./; + + $* fax 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched fax/1.0.0 + unpacked fax/1.0.0 + configured $backend_dep + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + EOO + + # Iteration increment and upgrade after turning a package from the + # archive-based repo into an external package. + # + $* fax/ 2>>~%EOE%; + 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#1 + $backend_configured + EOO + + # Further upgrade after the package' buildfile is edited. + # + echo '' >+fax/build/root.build; + + $* fax/ 2>>~%EOE%; + 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#2 + EOE + + $pkg_status -r >>"EOO"; + !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#2 + EOE + + $pkg_status -r >>"EOO"; + !fax configured !1.0.0#2 + $backend_configured + EOO + + $pkg_drop fax + } + + : directory-repo + : + { + $clone_cfg; + cp -rp ../../fax/ ./; + + $* fax 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched fax/1.0.0 + unpacked fax/1.0.0 + configured $backend_dep + configured fax/1.0.0 + %info: .+fax-1.0.0.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0 + $backend_configured + EOO + + # 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%; + 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#1 + $backend_configured + EOO + + # Further upgrade after the package' buildfile is edited. + # + echo '' >+fax/build/root.build; + + $rep_fetch; + + $* fax 2>>~%EOE%; + 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#2 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0#2 + $backend_configured + EOO + + # No upgrade if the buildfile is not edited. + # + $rep_fetch; + + $* fax 2>>~%EOE%; + %info: .+fax.+ is up to date% + updated fax/1.0.0#2 + EOE + + $pkg_status -r >>"EOO"; + !fax configured 1.0.0#2 + $backend_configured + EOO + + $pkg_drop fax + } + } + + : reconfigure-reflect-vars + : + { + $clone_cfg; + cp -rp ../fax/ ./; + + $* config.fax.libbiz=true -- fax/ 2>>~"%EOE%"; + fetched $backend_dep + unpacked $backend_dep + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + using fax/1.0.0 \(external\) + configured $backend_dep + configured libbiz/1.0.0 + configured fax/1.0.0 + %info: .+fax.+ is up to date% + updated fax/1.0.0 + EOE + + $pkg_status -r >>"EOO"; + !fax configured !1.0.0 + $backend_configured + libbiz configured 1.0.0 + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = true + %config.fax.extras = '.+'% + config.fax.libbox = false + EOO + + # While at it, make sure none of the reflect variables are + # unexpectedly wiped out on reconfiguration due to the dependency + # upgrade. + # + $* fax/ "?sys:$backend/*" 2>>~"%EOE%"; + 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% + updated fax/1.0.0 + EOE + + $pkg_status -r >>~"%EOO%"; + !fax configured !1.0.0 + % $backend configured,system .+% + libbiz configured 1.0.0 + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = true + %config.fax.extras = '.+'% + config.fax.libbox = false + EOO + + # Now make sure that dependency clauses re-evaluation is properly + # reflected in the configuration. + # + $* config.fax.libbiz=false -- fax/ 2>>~"%EOE%"; + 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 + EOE + + $pkg_status -r >>~"%EOO%"; + !fax configured !1.0.0 + % $backend configured,system .+% + EOO + + cat cfg/fax/build/config.build >>~"%EOO%"; + %.* + config.fax.backend = $backend + config.fax.libbiz = false + config.fax.extras = [null] + config.fax.libbox = false + EOO + + $pkg_drop fax + } + } + + : evaluate-reflect-vars + : + { + $clone_cfg; + + $* config.fax.libbox=true config.fax.libbiz=true -- fax 2>!; + + if $posix + $pkg_status -r >>EOO + !fax configured 1.0.0 + libbaz configured 1.1.0 + libbiz configured 1.0.0 + libbox configured 1.0.0 + EOO + else + $pkg_status -r >>EOO + !fax configured 1.0.0 + libbar configured 1.0.0 + libbiz configured 1.0.0 + EOO + end; + + $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 + : + { + +$clone_root_cfg && $rep_add $rep/t12b && $rep_fetch + + test.arguments += --yes + + : not-replaced + : + { + $clone_cfg; + + $* bar foo 2>!; + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + libbar configured 0.1.0 available 1.0.0 + libbaz configured 1.0.0 + !foo configured 1.0.0 + libbar configured 0.1.0 available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop bar foo + } + + : replaced-scratch + : + : Test that changing package order on the command line does not result + : in a sub-optimal choice of the libbaz version (0.1.0). + : + : Note that this was not the case until we implemented the builds + : re-collection on the package version change. + : + { + $clone_cfg; + + $* foo bar --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: add bar/1.0.0 + trace: collect_build_prerequisites: begin foo/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 foo/1.0.0 + trace: collect_build_prerequisites: begin libbar/1.0.0 + %.* + trace: collect_build: add libbaz/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.1.0 of dependent 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: end libbar/1.0.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_prerequisites: begin bar/1.0.0 + %.* + trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 + 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 foo/1.0.0 + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: begin foo/1.0.0 + %.* + 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 + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent foo/1.0.0 + trace: collect_build_prerequisites: begin libbar/0.1.0 + %.* + trace: collect_build: add libbaz/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.0.0 of dependent libbar/0.1.0 + trace: collect_build_prerequisites: begin libbaz/1.0.0 + trace: collect_build_prerequisites: end libbaz/1.0.0 + trace: collect_build_prerequisites: end libbar/0.1.0 + trace: collect_build_prerequisites: end foo/1.0.0 + trace: collect_build_prerequisites: begin bar/1.0.0 + %.* + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/0.1.0 of dependent bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbar configured 0.1.0 available 1.0.0 + libbaz configured 1.0.0 + !bar configured 1.0.0 + libbar configured 0.1.0 available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop foo bar + } + + : replaced-inplace + : + : Test the version replacement optimization. Here libbaz/1.0.0 get + : 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%; + %.* + 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 in-place with libbaz/0.1.0 + trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/0.1.0 of dependent 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: end libbar/1.0.0 + 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 + !libbar configured 1.0.0 + !libbaz configured 0.1.0 available 1.0.0 + EOO + + $pkg_drop libbaz libbar + } + } + + : drop-dependent + : + { + +$clone_root_cfg && $rep_add $rep/t12b && $rep_fetch + + test.arguments += --yes + + : unhold + : + : Test that the being dropped dependent does not constrain a dependency + : anymore. + : + { + $clone_cfg; + + $* libbar 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + libbaz configured 0.1.0 available [1.0.0] + EOO + + $* baz/0.1.0 ?libbar ?libbaz 2>!; + + $pkg_status -r >>EOO; + !baz configured !0.1.0 available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop baz + } + + : unuse + : + : Unlike the previous test, at the time we check the constraint applied + : by libbar on libbaz (== 0.1.0) there is no evidence that libbar will be + : dropped, which will happen some later execution plan refinement + : iteration. + : + { + $clone_cfg; + + $* foo 2>!; + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libbar configured 1.0.0 + libbaz configured 0.1.0 available [1.0.0] + EOO + + $* 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 baz foo + } + } + + : config-negotiation-order + : + { + +$clone_root_cfg && $rep_add $rep/t11a && $rep_fetch + + 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 + : + { + +$clone_cfg + + : postpone + : + { + $clone_cfg; + + # 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 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 + 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 fox | libfoo->{foo/1,1 fox/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + 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 + + $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 + EOO + + $pkg_drop foo fox fux + } + + : postpone-system + : + { + $clone_cfg; + + $* 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 + 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 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 + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured,system !* available 1.0.0 0.1.0 + !fox configured 1.0.0 + libfoo configured,system !* available 1.0.0 0.1.0 + EOO + + $pkg_drop foo fox + } + + : postpone-merge + : + { + $clone_cfg; + + $* 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}} + trace: postponed_configurations::add: merge {bar | libbar->{bar/1,1}} into {baz foo | libfoo->{baz/1,1 foo/1,1} libbar->{baz/1,1}} + 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 + 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): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/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 {bar baz foo | libfoo->{baz/1,1 foo/1,1} libbar->{bar/1,1 baz/1,1}}! + trace: collect_build_postponed (1): end {bar baz foo | libfoo->{baz/1,1 foo/1,1} libbar->{bar/1,1 baz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + build plan: + 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 + new baz/1.0.0 + %.* + EOE + + $pkg_status -r >>EOO; + !foo 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 + EOO + + $pkg_drop foo bar baz + } + + : postpone-dependency-dependent + : + { + $clone_cfg; + + $* fex 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fex/1.0.0 + trace: collect_build_prerequisites: begin fex/1.0.0 + %.* + trace: collect_build: add foo/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency foo/1.0.0 of dependent fex/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: cfg-postpone dependency libfoo/1.0.0 of dependent fex/1.0.0 + trace: postponed_configurations::add: add {fex 2,1: libfoo} to {foo | libfoo->{foo/1,1}} + trace: collect_build_prerequisites: postpone fex/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {fex foo | libfoo->{fex/2,1 foo/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {fex foo | libfoo->{fex/2,1 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 fex/1.0.0 + trace: collect_build_prerequisites: resume fex/1.0.0 + trace: collect_build_prerequisites: end fex/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 {fex foo | libfoo->{fex/2,1 foo/1,1}}! + trace: collect_build_postponed (1): end {fex foo | libfoo->{fex/2,1 foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !fex configured 1.0.0 + foo configured 1.0.0 + libfoo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $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 + : + { + $clone_cfg; + + $* fux foo fox 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 fox/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 fox/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 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_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 + 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 fox | libfoo->{foo/1,1 fox/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + 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 fux foo fox + } + + : bogus-postponement + : + { + $clone_cfg; + + # 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: 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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fix/1.0.0 + trace: collect_build_prerequisites: resume fix/1.0.0 + 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 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (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 {fix | foo->{fix/1,1}} + 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; + !fux configured 1.0.0 + libfoo configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop fux foo fix + } + } + + : existing + : + { + +$clone_cfg + + : dependency + : + { + $clone_cfg; + + $* libfoo --verbose 1 2>!; + + $* foo 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 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 (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: 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 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 + %.* + build plan: + reconfigure/update libfoo/1.0.0 (required by foo) + config.libfoo.extras=true (set by foo) + new foo/1.0.0 + %.* + EOE + + $pkg_status -r >>EOO; + !libfoo configured 1.0.0 + !foo configured 1.0.0 + !libfoo configured 1.0.0 + EOO + + $pkg_drop foo libfoo + } + + : dependent-single-pos + : + { + +$clone_cfg + + : basic + : + { + $clone_cfg; + + # 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 + %.* + trace: collect_build: add foo/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_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 + %.* + 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%; + %.* + 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 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_prerequisites: reeval foo/1.0.0 + %.* + trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.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_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 + 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 + %.* + build plan: + downgrade libfoo/0.1.0 + config.libfoo.extras=true (set by foo) + reconfigure foo/1.0.0 (dependent of libfoo) + %.* + disfigured foo/1.0.0 + %.* + disfigured libfoo/1.0.0 + %.* + fetched libfoo/0.1.0 + %.* + unpacked libfoo/0.1.0 + %.* + configured libfoo/0.1.0 + %.* + configured foo/1.0.0 + %.* + updated foo/1.0.0 + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + 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%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libfoo/0.1.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_prerequisites: reeval foo/1.0.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_postponed (1): cfg-negotiate begin {foo^ | libfoo->{foo/1,1}} + %.* + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured 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 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 + %.* + build plan: + reconfigure/update libfoo/0.1.0 + config.libfoo.extras=true (user configuration) + reconfigure foo/1.0.0 (dependent of libfoo) + %.* + disfigured foo/1.0.0 + %.* + disfigured libfoo/0.1.0 + %.* + configured libfoo/0.1.0 + %.* + configured foo/1.0.0 + %.* + updated libfoo/0.1.0 + %.* + updated foo/1.0.0 + %.* + EOE + + $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 + 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%; + %.* + 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_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 + %.* + 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_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: foo/1.0.0: unused + %.* + 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 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libfoo/1.0.0 + %.* + trace: collect_build_prerequisites: skip expected to be dropped existing dependent foo of dependency libfoo + trace: collect_build_prerequisites: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end libfoo/1.0.0 + trace: collect_drop: overwrite foo + %.* + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libfoo/1.0.0 + config.libfoo.extras=true (user configuration) + drop foo/1.0.0 (unused) + %.* + disfigured foo/1.0.0 + %.* + disfigured libfoo/0.1.0 + %.* + fetched libfoo/1.0.0 + %.* + unpacked libfoo/1.0.0 + %.* + purged foo/1.0.0 + %.* + configured libfoo/1.0.0 + %.* + updated libfoo/1.0.0 + %.* + EOE + + $pkg_status -r >>EOO; + !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 + : + { + $clone_cfg; + + # Dependencies: + # + # fix/1.0.0: depends: foo(c) + # foo/1.0.0: depends: libfoo(c) + # + # fix/0.1.0: depends: foo == 0.1.0 + # foo/0.1.0: depends: libfoo(c) + # + $* fix --verbose 1 2>!; + + $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: 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}} + trace: collect_build_prerequisites: postpone foo/0.1.0 + 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 + 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 (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 0.2.0 + !libfoo configured !0.1.0 available 1.0.0 + EOO + + $pkg_drop fix libfoo --drop-dependent + } + } + + : dependent-mult-pos + : + { + +$clone_cfg + + : non-negotiated + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + $* 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>&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: 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^ | 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_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: 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): 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): 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 (2): recursively collect cfg-negotiated dependents + 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 {tex^ | libbar->{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 + config.libbar.extras=true (set by tex) + reconfigure tex/1.0.0 (dependent of libbar, libfoo) + config.tex.libfoo_extras=true (set by tex) + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop tex libfoo libbar + } + + : negotiated + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # bar: depends: libbar == 0.1.0 (c) + # + $* 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 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: 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: 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: 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: 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 + 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: 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 {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 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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/0.1.0 + trace: collect_build_prerequisites: resume bar/0.1.0 + 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: 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): 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): 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 (2): recursively collect cfg-negotiated dependents + 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 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; + !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 + !bar configured !0.1.0 available 1.0.0 + libbar configured 0.1.0 available 1.0.0 + EOO + + $pkg_drop tex libfoo bar + } + + : up-negotiate + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # baz: depends: {libbar libfoo} == 0.1.0 (c) + # + $* tex --verbose 1 2>!; + + $* baz/0.1.0 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add baz/0.1.0 + trace: collect_build_prerequisites: begin baz/0.1.0 + %.* + trace: collect_build: add libbar/0.1.0 + info: package baz 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 baz/0.1.0 + trace: collect_build: add libfoo/0.1.0 + info: package baz dependency on (libfoo == 0.1.0) is forcing downgrade of libfoo/1.0.0 to 0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of dependent baz/0.1.0 + trace: postponed_configurations::add: create {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone baz/0.1.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + %.* + trace: collect_build_postponed (1): re-evaluate existing dependents for {baz | libbar->{baz/1,1} libfoo->{baz/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 {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {baz tex^ | libbar->{baz/1,1 tex/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {baz tex^ | libbar->{baz/1,1 tex/1,1} libfoo->{baz/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_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 baz/0.1.0 + trace: collect_build_prerequisites: resume baz/0.1.0 + trace: collect_build_prerequisites: end baz/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 {baz tex^ | libbar->{baz/1,1 tex/1,1} libfoo->{baz/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/0.1.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 (1): cfg-negotiate end {baz tex^ | libbar->{baz/1,1 tex/1,1} libfoo->{baz/1,1 tex/2,1}}! + trace: collect_build_postponed (1): end {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_postponed (0): end + %.* + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar configured 0.1.0 available 1.0.0 + 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 + EOO + + $pkg_drop tex baz + } + + : replace-reeval + : + { + +$clone_cfg + + : initial-collection + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # baz: depends: {libbar libfoo} (c) + # + $* bax baz --verbose 1 2>!; + + $* 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: 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 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_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_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 + trace: collect_build_prerequisites: end libbox/0.1.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 (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/1.0.0 + 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; + !libbox configured !0.1.0 available 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 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop bax baz libbox + } + + : collect-postponed + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # baz: depends: {libbar libfoo} (c) + # + # box: depends: libbox == 0.1.0 (c) + # + $* bax baz --verbose 1 2>!; + + $* 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 + 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_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: 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 (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 (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 {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 {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 | 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 | 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: 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 | 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 + trace: collect_build_prerequisites: end bax/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/1.0.0 + 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 | 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; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 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 + + $pkg_drop bax baz box + } + + : bogus-harmless + : + { + $clone_cfg; + + # Dependencies: + # + # bax: depends: libfoo(c) + # depends: {libbox libbar} (c) + # + # baz: depends: {libbar libfoo} (c) + # + $* bax baz --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 + !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: 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 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_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_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 + trace: collect_build_prerequisites: end libbox/0.1.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 (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/1.0.0 + 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 from scratch + trace: collect_build: add libbox/0.1.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 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_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 + 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): 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 + 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: 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: + 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; + !libbox configured !0.1.0 available 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 + EOO + + $pkg_drop bax libbox + } + } + } + } + + : postponed-collection + : + { + +$clone_cfg + + : backtrace + : + { + $clone_cfg; + + $* foo bar box 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 box/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 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 (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 (2): begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {bar | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): index 1 collect alt-postponed box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + %.* + 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: cfg-postponing dependent box/1.0.0 involves (being) negotiated configurations and results in {bar box foo | libfoo->{box/1,1 foo/1,1} libbar->{bar/1,1 box/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {foo | libfoo->{foo/1,1}} failed due to dependent box, 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 (2): begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {bar | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): index 1 collect alt-postponed box/1.0.0 + trace: collect_build_prerequisites: resume box/1.0.0 + %.* + 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 + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent box/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: dependency libfoo/1.0.0 of dependent box/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end box/1.0.0 + trace: collect_build_postponed (2): end {bar | libbar->{bar/1,1}} + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !bar configured 1.0.0 + libbar configured 1.0.0 + !box configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop foo bar box + } + + : premature + : + { + $clone_cfg; + + $* fux fix 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fux/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 fix/1.0.0 + %.* + trace: collect_build: add foo/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 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 fix/1.0.0 + %.* + trace: collect_build: add foo/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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fix/1.0.0 + trace: collect_build_prerequisites: resume fix/1.0.0 + 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 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (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 {fix | foo->{fix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop fux fix + } + + : double-premature + : + { + $clone_cfg; + + $* fux bex fix buz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fux/1.0.0 + trace: collect_build: add bex/1.0.0 + trace: collect_build: add fix/1.0.0 + trace: collect_build: add buz/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 bex/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 bex/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 bex/1.0.0 + trace: collect_build_prerequisites: begin fix/1.0.0 + %.* + trace: collect_build: add foo/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_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_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 bex/1.0.0 + trace: collect_build: add fix/1.0.0 + trace: collect_build: add buz/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 bex/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 bex/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 bex/1.0.0 + trace: collect_build_prerequisites: begin fix/1.0.0 + %.* + trace: collect_build: add foo/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_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_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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fix/1.0.0 + trace: collect_build_prerequisites: resume fix/1.0.0 + 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 {buz | bux->{buz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {buz | bux->{buz/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bux/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent bux/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 fux/1.0.0 + trace: collect_build: add bex/1.0.0 + trace: collect_build: add fix/1.0.0 + trace: collect_build: add buz/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 bex/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency libbar/1.0.0 of dependent bex/1.0.0 + trace: collect_build_prerequisites: end bex/1.0.0 + trace: collect_build_prerequisites: begin fix/1.0.0 + %.* + trace: collect_build: add foo/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_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_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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fix/1.0.0 + trace: collect_build_prerequisites: resume fix/1.0.0 + 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 {buz | bux->{buz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {buz | bux->{buz/1,1}} + %.* + trace: collect_build_postponed (2): 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: create {bux | libbar->{bux/1,1}} + trace: collect_build_prerequisites: postpone bux/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 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 (2): cfg-negotiate end {buz | bux->{buz/1,1}}! + trace: collect_build_postponed (3): begin {foo | libfoo->{foo/1,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {foo | libfoo->{foo/1,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 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 {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (4): begin {bux | libbar->{bux/1,1}} + %.* + trace: collect_build_postponed (4): cfg-negotiate begin {bux | libbar->{bux/1,1}} + %.* + trace: collect_build_postponed (4): 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 (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent bux/1.0.0 + trace: collect_build_prerequisites: resume bux/1.0.0 + trace: collect_build_prerequisites: end bux/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {bux | libbar->{bux/1,1}}! + trace: collect_build_postponed (4): end {bux | libbar->{bux/1,1}} + trace: collect_build_postponed (3): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (2): end {buz | bux->{buz/1,1}} + trace: collect_build_postponed (1): end {fix | foo->{fix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + !bex configured 1.0.0 + libbar configured 1.0.0 + !buz configured 1.0.0 + bux configured 1.0.0 + libbar configured 1.0.0 + EOO + + $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 + : + { + $clone_cfg; + + # Dependencies: + # + # bar: depends: libbar(c) + # + # bux: depends: libbar(c) + # + # bix: depends: {libbar bar} (c) + # depends: bux + # + $* bix 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add bix/1.0.0 + trace: collect_build_prerequisites: begin bix/1.0.0 + %.* + trace: collect_build: add libbar/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: create {bix | libbar->{bix/1,1} bar->{bix/1,1}} + trace: collect_build_prerequisites: postpone bix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bix | libbar->{bix/1,1} bar->{bix/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bix | libbar->{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 {bix | libbar->{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 bix/1.0.0 + trace: collect_build_prerequisites: resume bix/1.0.0 + %.* + trace: collect_build: add bux/1.0.0 + trace: collect_build_prerequisites: no cfg-clause for dependency bux/1.0.0 of dependent bix/1.0.0 + 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 bix | libbar->{bar/1,1 bix/1,1} bar->{bix/1,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_prerequisites: end bix/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar bix bux | libbar->{bar/1,1 bix/1,1 bux/1,1} bar->{bix/1,1}}! + trace: collect_build_postponed (1): end {bix | libbar->{bix/1,1} bar->{bix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop bix + } + + : postponed-alts + : + { + +$clone_cfg + + : with-premature + : + { + $clone_cfg; + + $* fux boo 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fux/1.0.0 + trace: collect_build: add boo/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 boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 0 + info: dependency alternative: libbar + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): index 1 collect alt-postponed boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + require + { + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (0): index 2 collect alt-postponed boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent boo/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 boo/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 boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 0 + info: dependency alternative: libbar + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (0): index 1 collect alt-postponed boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + require + { + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (0): index 2 collect alt-postponed boo/1.0.0 + 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}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {boo | libfoo->{boo/1,2}} + %.* + 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 boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + trace: collect_build_prerequisites: end boo/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {boo | libfoo->{boo/1,2}}! + trace: collect_build_postponed (1): end {boo | libfoo->{boo/1,2}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !fux configured 1.0.0 + libfoo configured 1.0.0 + !boo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop fux boo + } + + : with-premature-complex + : + { + $clone_cfg; + + $* fux bex fix biz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add fux/1.0.0 + trace: collect_build: add bex/1.0.0 + trace: collect_build: add fix/1.0.0 + trace: collect_build: add biz/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 bex/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 bex/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 bex/1.0.0 + trace: collect_build_prerequisites: begin fix/1.0.0 + %.* + trace: collect_build: add foo/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_prerequisites: begin biz/1.0.0 + %.* + 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 + 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 bex/1.0.0 + trace: collect_build: add fix/1.0.0 + trace: collect_build: add biz/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 bex/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 bex/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 bex/1.0.0 + trace: collect_build_prerequisites: begin fix/1.0.0 + %.* + trace: collect_build: add foo/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_prerequisites: begin biz/1.0.0 + %.* + 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 + 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 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent fix/1.0.0 + trace: collect_build_prerequisites: resume fix/1.0.0 + 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 {biz | boo->{biz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {biz | boo->{biz/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 0 + info: dependency alternative: libbar + trace: collect_build_prerequisites: postpone boo/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 biz/1.0.0 + trace: collect_build_prerequisites: resume biz/1.0.0 + trace: collect_build_prerequisites: end biz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {biz | boo->{biz/1,1}}! + trace: collect_build_postponed (3): begin {foo | libfoo->{foo/1,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {foo | libfoo->{foo/1,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 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 {foo | libfoo->{foo/1,1}}! + trace: collect_build_postponed (3): index 1 collect alt-postponed boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: no cfg-clause for dependency libbar/1.0.0 of dependent boo/1.0.0 + trace: collect_build_prerequisites: end boo/1.0.0 + trace: collect_build_postponed (3): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (2): end {biz | boo->{biz/1,1}} + trace: collect_build_postponed (1): end {fix | foo->{fix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + !bex configured 1.0.0 + libbar configured 1.0.0 + !biz configured 1.0.0 + boo configured 1.0.0 + libbar configured 1.0.0 + EOO + + $pkg_drop fux bex fix biz + } + + : up-negotiate + : + { + $clone_cfg; + + $* foo boo 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add foo/1.0.0 + trace: collect_build: add boo/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 boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 0 + info: dependency alternative: libbar + trace: collect_build_prerequisites: postpone boo/1.0.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 boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + require + { + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (1): index 2 collect alt-postponed boo/1.0.0 + 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 + trace: collect_build_prerequisites: end boo/1.0.0 + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !boo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop foo boo + } + + : after-negotiation + : + { + $clone_cfg; + + $* foo biz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add foo/1.0.0 + trace: collect_build: add biz/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 biz/1.0.0 + %.* + 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 + 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 (2): begin {biz | boo->{biz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {biz | boo->{biz/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 0 + info: dependency alternative: libbar + trace: collect_build_prerequisites: postpone boo/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 biz/1.0.0 + trace: collect_build_prerequisites: resume biz/1.0.0 + trace: collect_build_prerequisites: end biz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {biz | boo->{biz/1,1}}! + trace: collect_build_postponed (2): index 1 collect alt-postponed boo/1.0.0 + trace: collect_build_prerequisites: resume boo/1.0.0 + %.* + trace: collect_build_prerequisites: alt-postpone dependent boo/1.0.0 since max index is reached: 1 + info: dependency alternative: libfoo + { + require + { + config.libfoo.extras = true + } + } + trace: collect_build_prerequisites: postpone boo/1.0.0 + trace: collect_build_postponed (2): index 2 collect alt-postponed boo/1.0.0 + 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 + trace: collect_build_prerequisites: end boo/1.0.0 + trace: collect_build_postponed (2): end {biz | boo->{biz/1,1}} + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !foo configured 1.0.0 + libfoo configured 1.0.0 + !biz configured 1.0.0 + boo configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop foo biz + } + } + + : bogus-postponement + : + { + $clone_cfg; + + # Dependencies: + # + # tax: depends: libbar(c) + # depends: libfoo + # + # toz/0.1.0: + # + # toz/1.0.0: depends: libbaz(c) + # depends: libfoo(c) + # depends: libbar(c) + # + # tez: depends: libbox(c) + # depends: toz == 0.1.0 (c) + # depends: libbar(c) + # + $* tax toz tez 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tax/1.0.0 + trace: collect_build: add toz/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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_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 {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/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 tax/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 tax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): begin {toz | libbaz->{toz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {toz | libbaz->{toz/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent toz/1.0.0 + trace: collect_build_prerequisites: resume toz/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent toz/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 tax/1.0.0 + trace: collect_build: add toz/1.0.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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_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 {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): begin {toz | libbaz->{toz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {toz | libbaz->{toz/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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: create {toz | libfoo->{toz/2,1}} + trace: collect_build_prerequisites: postpone toz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {toz | libbaz->{toz/1,1}}! + trace: collect_build_postponed (3): begin {tez | libbox->{tez/1,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {tez | libbox->{tez/1,1}} + %.* + trace: collect_build_postponed (3): 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 (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: 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 tax/1.0.0 + trace: collect_build: apply version replacement for toz/1.0.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + trace: collect_build_prerequisites: begin toz/0.1.0 + trace: collect_build_prerequisites: end toz/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 {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {tax | libbar->{tax/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_prerequisites: cannot cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (toz), retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tax/1.0.0 + trace: collect_build: apply version replacement for toz/1.0.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + trace: pkg_build: dep-postpone user-specified toz + 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 {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {tax | libbar->{tax/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_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 (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + 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 {tax | libbar->{tax/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 (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 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tax/1.0.0 + trace: collect_build: apply version replacement for toz/1.0.0 + trace: collect_build: replacement: toz/0.1.0 + trace: collect_build: add toz/0.1.0 + trace: collect_build: add tez/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + trace: pkg_build: dep-postpone user-specified toz + 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 {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/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 tax/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 tax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/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_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 (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! + 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 {tax | libbar->{tax/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 (3): cfg-negotiate end {tez | toz->{tez/2,1}}! + trace: collect_build_postponed (3): end {tez | toz->{tez/2,1}} + trace: collect_build_postponed (2): end {tez | libbox->{tez/1,1}} + trace: collect_build_postponed (1): end {tax | libbar->{tax/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tax 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 + + $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 + : + { + +$clone_cfg + + : direct + : + { + +$clone_cfg + + : args-tex-tix + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tex tix 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/1.0.0 + trace: collect_build: add tix/1.0.0 + 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 tix/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: add {tix 1,1: libbar} to {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex tix | libbar->{tex/1,1 tix/1,1}} + %.* + 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: 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 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 tex/1.0.0 + trace: collect_build: add tix/1.0.0 + trace: pkg_build: dep-postpone user-specified tex + 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_postponed (1): cfg-negotiate begin {tix | libbar->{tix/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 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 {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}} + 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): 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 {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar 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 tex tix + } + + : args-tix + : + : As above but with the different command-line arguments which results + : in the different cluster list at the moment of the cycle detection. + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tix 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_postponed (1): cfg-negotiate begin {tix | libbar->{tix/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 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}} + 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): 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 {tix | libbar->{tix/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + 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 + } + + : args-tex-tix-tux + : + : Here tux requires tix/0.1.0 which has no dependencies. + : + { + $clone_cfg; + + $* tex tix tux 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/1.0.0 + trace: collect_build: add tix/1.0.0 + trace: collect_build: add tux/1.0.0 + 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 tix/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tix/1.0.0 + trace: postponed_configurations::add: add {tix 1,1: libbar} to {tex | libbar->{tex/1,1}} + trace: collect_build_prerequisites: postpone tix/1.0.0 + trace: collect_build_prerequisites: begin tux/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tux/1.0.0 + trace: postponed_configurations::add: create {tux | libbox->{tux/1,1}} + trace: collect_build_prerequisites: postpone tux/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex tix | libbar->{tex/1,1 tix/1,1}} + %.* + 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: 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 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 tex/1.0.0 + trace: collect_build: add tix/1.0.0 + trace: collect_build: add tux/1.0.0 + trace: pkg_build: dep-postpone user-specified tex + 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_prerequisites: begin tux/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tux/1.0.0 + trace: postponed_configurations::add: create {tux | libbox->{tux/1,1}} + trace: collect_build_prerequisites: postpone tux/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,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: 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 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 {tix | libbar->{tix/1,1}}! + trace: collect_build_postponed (2): begin {tux | libbox->{tux/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tux | libbox->{tux/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 tux/1.0.0 + trace: collect_build_prerequisites: resume tux/1.0.0 + %.* + trace: collect_build: pick tix/0.1.0 over tix/1.0.0 + trace: collect_build: tix/1.0.0 package version needs to be replaced with tix/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 tex/1.0.0 + trace: collect_build: apply version replacement for tix/1.0.0 + trace: collect_build: replacement: tix/0.1.0 + trace: collect_build: add tix/0.1.0 + trace: collect_build: add tux/1.0.0 + trace: pkg_build: dep-postpone user-specified tex + trace: collect_build_prerequisites: begin tix/0.1.0 + trace: collect_build_prerequisites: end tix/0.1.0 + trace: collect_build_prerequisites: begin tux/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tux/1.0.0 + trace: postponed_configurations::add: create {tux | libbox->{tux/1,1}} + trace: collect_build_prerequisites: postpone tux/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tux | libbox->{tux/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tux | libbox->{tux/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 tux/1.0.0 + trace: collect_build_prerequisites: resume tux/1.0.0 + %.* + 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 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/1.0.0 + trace: collect_build: apply version replacement for tix/1.0.0 + trace: collect_build: replacement: tix/0.1.0 + trace: collect_build: add tix/0.1.0 + trace: collect_build: add tux/1.0.0 + 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 tix/0.1.0 + trace: collect_build_prerequisites: end tix/0.1.0 + trace: collect_build_prerequisites: begin tux/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent tux/1.0.0 + trace: postponed_configurations::add: create {tux | libbox->{tux/1,1}} + trace: collect_build_prerequisites: postpone tux/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex | libbar->{tex/1,1}} + %.* + 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/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 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): cfg-negotiate end {tex | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tux | libbox->{tux/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tux | libbox->{tux/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 tux/1.0.0 + trace: collect_build_prerequisites: resume tux/1.0.0 + %.* + 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 (2): cfg-negotiate end {tux | libbox->{tux/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + %.* + 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 {tux | libbox->{tux/1,1}} + trace: collect_build_postponed (1): end {tex | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo 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 + EOO + + $pkg_drop tex tix tux + } + + : args-tex-tiz + : + : Note that tiz is a correct version of tix, which fixes the + : configuration cycle. + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + $* tex tiz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + 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 tex/1.0.0 + trace: collect_build: add tiz/1.0.0 + trace: pkg_build: dep-postpone user-specified 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 (0): begin + trace: collect_build_postponed (1): begin {tiz | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tiz | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + 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 (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): 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: postpone tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tiz | tex->{tiz/1,1}}! + trace: collect_build_postponed (2): begin {tex tiz | libbar->{tex/1,1 tiz/2,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tex tiz | libbar->{tex/1,1 tiz/2,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + 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: 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): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tex tiz | libbar->{tex/1,1 tiz/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + %.* + 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 {tex tiz | libbar->{tex/1,1 tiz/2,1}} + trace: collect_build_postponed (1): end {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop tex tiz + } + + : args-tiz + : + : Note that tiz is a correct version of tix, which fixes the + : configuration cycle. + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + $* tiz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tiz/1.0.0 + trace: collect_build_prerequisites: begin tiz/1.0.0 + %.* + trace: collect_build: add tex/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 (0): begin + trace: collect_build_postponed (1): begin {tiz | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tiz | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + 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 (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): 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: postpone tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tiz | tex->{tiz/1,1}}! + trace: collect_build_postponed (2): begin {tex tiz | libbar->{tex/1,1 tiz/2,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tex tiz | libbar->{tex/1,1 tiz/2,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + 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: 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): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tex tiz | libbar->{tex/1,1 tiz/2,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + %.* + 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 {tex tiz | libbar->{tex/1,1 tiz/2,1}} + trace: collect_build_postponed (1): end {tiz | tex->{tiz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + 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 + } + + : depends-depends-conflict + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # toz: depends: libfoo(c) + # depends: libbar(c) + # + $* tex toz/0.2.0 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/1.0.0 + trace: collect_build: add toz/0.2.0 + 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 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 (0): begin + trace: collect_build_postponed (1): begin {tex | libbar->{tex/1,1}} + %.* + 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/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 tex/1.0.0 + trace: collect_build_prerequisites: resume tex/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 {toz | libfoo->{toz/1,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 toz | libfoo->{tex/2,1 toz/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {tex toz | libfoo->{tex/2,1 toz/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 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): 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 {tex | libbar->{tex/1,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 (2): cfg-negotiate end {tex toz | libfoo->{tex/2,1 toz/1,1}}! + trace: collect_build_postponed (2): end {tex toz | libfoo->{tex/2,1 toz/1,1}} + trace: collect_build_postponed (1): end {tex | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tex configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + !toz configured !0.2.0 available 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tex toz + } + + : package-depends-conflict + : + { + $clone_cfg; + + # Dependencies: + # + # baz: depends: {libbar libfoo} (c) + # + # bac: depends: libbar(c) + # depends: libbaz(c) + # depends: libfoo(c) + # + # bat: depends: libbaz(c) + # + $* baz bac bat 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add baz/1.0.0 + trace: collect_build: add bac/1.0.0 + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin baz/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent baz/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent baz/1.0.0 + trace: postponed_configurations::add: create {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone baz/1.0.0 + trace: collect_build_prerequisites: begin bac/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: add {bac 1,1: libbar} to {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone bac/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 {bac baz | libbar->{bac/1,1 baz/1,1} libfoo->{baz/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bac baz | libbar->{bac/1,1 baz/1,1} libfoo->{baz/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 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 bac/1.0.0 + trace: collect_build_prerequisites: resume bac/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bac/1.0.0 + trace: postponed_configurations::add: add {bac 2,1: libbaz} to {bat | libbaz->{bat/1,1}} + trace: collect_build_prerequisites: postpone bac/1.0.0 + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bac baz | libbar->{bac/1,1 baz/1,1} libfoo->{baz/1,1}}! + trace: collect_build_postponed (2): begin {bac bat | libbaz->{bac/2,1 bat/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {bac bat | libbaz->{bac/2,1 bat/1,1}} + %.* + trace: collect_build_postponed (2): 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 (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 baz | libbar->{bac/1,1 baz/1,1} libfoo->{baz/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): 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 (2): cfg-negotiate end {bac bat | libbaz->{bac/2,1 bat/1,1}}! + trace: collect_build_postponed (2): end {bac bat | libbaz->{bac/2,1 bat/1,1}} + trace: collect_build_postponed (1): end {bac baz | libbar->{bac/1,1 baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop baz bac bat + } + + : existing + : + { + +$clone_cfg + + : dependency-new-downgrade + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tex --verbose 1 2>!; + + # Build new dependency of an existing dependent. + # + $* 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_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}} + 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: 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 | 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; + !tex configured 1.0.0 + libbar 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 + + # Downgrade the existing dependency of an existing dependent. + # + $* tex/0.3.0 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tex/0.3.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_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): 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_prerequisites: reeval tix/1.0.0 + %.* + 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^ | 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.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: 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.3.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/0.3.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/0.3.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/0.3.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/0.3.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/0.3.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: 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/0.3.0 + trace: collect_build_prerequisites: resume tex/0.3.0 + 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 (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 + } + + : dependency-downgrade + : + : Note that here we also specify the existing dependent tix on the + : command line to make sure that its noop recursive collection + : doesn't prevent it from being properly re-evaluated afterwords. + : + : Also note that tex/0.1.0 doesn't depend on libbar. + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tex tix --verbose 1 2>!; + + $* tix tex/0.1.0 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tix/1.0.0 + trace: collect_build: add tex/0.1.0 + trace: collect_build_prerequisites: skip configured 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_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^ | 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_prerequisites: reeval tix/1.0.0 + %.* + 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^ | 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 (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/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 (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/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 (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 + } + + : dependency-downgrade-unhold + : + : As above but the dependency is also unheld. + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tex tix --verbose 1 2>!; + + $* tix ?tex/0.1.0 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: tex/1.0.0: update to tex/0.1.0 + %.* + trace: pkg_build: refine package collection/plan execution + %.* + 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^ | 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_prerequisites: reeval tix/1.0.0 + %.* + 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^ | 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 (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/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 (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/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 (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 + } + + : dependency-downgrade-unhold-premature + : + : As above but the dependency (tex/0.2.0) depends on libbar without + : configuration clause. + : + { + $clone_cfg; + + # Dependencies: + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + # tix: depends: libbar(c) + # depends: tex(c) + # + $* tex tix --verbose 1 2>!; + + $* tix ?tex/0.2.0 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: tex/1.0.0: update to tex/0.2.0 + %.* + trace: pkg_build: refine package collection/plan execution + %.* + 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^ | 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_prerequisites: reeval tix/1.0.0 + %.* + 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^ | 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: 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 (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: 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/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 (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 + } + } + } + + : indirect + : + { + +$clone_cfg + + : args-tax-dex-dix + : + { + $clone_cfg; + + # Dependencies: + # + # tax: depends: libbar(c) + # depends: libfoo + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # dox: dex(c) + # + # dix: depends: libbar(c) + # depends: libbox(c) # causes postponement and initial cluster finished negotiating + # depends: dox(c) + # + $* tax dex dix 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add dix/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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 + trace: collect_build_prerequisites: begin dix/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent dix/1.0.0 + trace: postponed_configurations::add: add {dix 1,1: libbar} to {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone dix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {dix tax | libbar->{dix/1,1 tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {dix tax | libbar->{dix/1,1 tax/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 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): select cfg-negotiated dependency alternative for dependent tax/1.0.0 + trace: collect_build_prerequisites: resume tax/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 tax/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 tax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {dix tax | libbar->{dix/1,1 tax/1,1}}! + trace: collect_build_postponed (2): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): 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 tax | libbar->{dix/1,1 tax/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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent dex/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 tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add dix/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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 + trace: collect_build_prerequisites: begin dix/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent dix/1.0.0 + trace: postponed_configurations::add: add {dix 1,1: libbar} to {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone dix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {dix tax | libbar->{dix/1,1 tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {dix tax | libbar->{dix/1,1 tax/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 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): select cfg-negotiated dependency alternative for dependent tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {dix tax | libbar->{dix/1,1 tax/1,1}}! + trace: collect_build_postponed (2): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): 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 tax | libbar->{dix/1,1 tax/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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/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 (2): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (3): begin {dix | libbox->{dix/2,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {dix | libbox->{dix/2,1}} + %.* + trace: collect_build_postponed (3): 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 (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): 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 (3): cfg-negotiate end {dix | libbox->{dix/2,1}}! + trace: collect_build_postponed (4): begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (4): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (4): 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 (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): 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 (4): cfg-negotiate end {dex | libfoo->{dex/2,1}}! + trace: collect_build_postponed (5): begin {dix | dox->{dix/3,1}} + %.* + trace: collect_build_postponed (5): cfg-negotiate begin {dix | dox->{dix/3,1}} + %.* + trace: collect_build_postponed (5): 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 tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add dix/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: begin dix/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent dix/1.0.0 + trace: postponed_configurations::add: add {dix 1,1: libbar} to {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone dix/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {dix tax | libbar->{dix/1,1 tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {dix tax | libbar->{dix/1,1 tax/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 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): select cfg-negotiated dependency alternative for dependent tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {dix tax | libbar->{dix/1,1 tax/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_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 (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dix/1.0.0 + trace: collect_build_prerequisites: resume dix/1.0.0 + 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 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): 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 (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): 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 tax | libbar->{dix/1,1 tax/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 (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_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): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (6): 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 (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 {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): end {dix | dox->{dix/3,1}} + trace: collect_build_postponed (2): end {dix | libbox->{dix/2,1}} + trace: collect_build_postponed (1): end {dix tax | libbar->{dix/1,1 tax/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tax 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 1.0.0 + EOO + + $pkg_drop tax dex dix --drop-dependent + } + + : args-dix + : + : As above but with the different command-line arguments which results + : in the different cluster list at the moment of the cycle detection. + : + { + $clone_cfg; + + # Dependencies: + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # dox: dex(c) + # + # dix: depends: libbar(c) + # depends: libbox(c) # causes postponement and initial cluster finished negotiating + # depends: dox(c) + # + $* dix 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_postponed (1): cfg-negotiate begin {dix | libbar->{dix/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 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}} + trace: collect_build_prerequisites: postpone dox/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 dix/1.0.0 + trace: collect_build_prerequisites: resume dix/1.0.0 + 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 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): 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 (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): 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 + 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): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (6): 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 (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 {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): end {dix | dox->{dix/3,1}} + 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 + %.* + EOE + + $pkg_status -r >>EOO; + !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 + EOO + + $pkg_drop dix + } + + : args-tax-dex-diz + : + : Note that diz is a correct version of dix, which fixes the + : configuration cycle. + : + { + $clone_cfg; + + # Dependencies: + # + # tax: depends: libbar(c) + # depends: libfoo + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # dox: dex(c) + # + # diz: depends: dox(c) + # depends: libbox(c) + # depends: libbar(c) + # + $* tax dex diz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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 + trace: collect_build_prerequisites: begin diz/1.0.0 + %.* + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | dox->{diz/1,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/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 tax/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 tax/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): 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 {tax | libbar->{tax/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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent dex/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 tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + 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 + trace: collect_build_prerequisites: begin diz/1.0.0 + %.* + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | dox->{diz/1,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (2): 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 {tax | libbar->{tax/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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/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 (2): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (3): begin {diz | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {diz | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (3): 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 tax/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: begin tax/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tax/1.0.0 + trace: postponed_configurations::add: create {tax | libbar->{tax/1,1}} + trace: collect_build_prerequisites: postpone tax/1.0.0 + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: begin diz/1.0.0 + %.* + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | dox->{diz/1,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tax | libbar->{tax/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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 tax/1.0.0 + trace: collect_build_prerequisites: resume tax/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.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 (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! + trace: collect_build_postponed (2): begin {diz | dox->{diz/1,1}} + %.* + 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): 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: 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 + 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): 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_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {tax | libbar->{tax/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): 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 {diz tax | libbar->{diz/3,1 tax/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 (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_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): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (6): 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 (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 {tax | libbar->{tax/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !tax 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 + !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 tax dex diz --drop-dependent + } + + : args-diz + : + : Note that diz is a correct version of dix, which fixes the + : configuration cycle. + : + { + $clone_cfg; + + # Dependencies: + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # dox: dex(c) + # + # diz: depends: dox(c) + # depends: libbox(c) + # depends: libbar(c) + # + $* diz 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add diz/1.0.0 + trace: collect_build_prerequisites: begin diz/1.0.0 + %.* + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | dox->{diz/1,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {diz | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {diz | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (1): 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 (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): 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 (1): cfg-negotiate end {diz | dox->{diz/1,1}}! + trace: collect_build_postponed (2): begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (2): 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 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (3): begin {diz | libbox->{diz/2,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {diz | libbox->{diz/2,1}} + %.* + trace: collect_build_postponed (3): 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 (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbar->{diz/3,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {diz | libbox->{diz/2,1}}! + trace: collect_build_postponed (4): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (4): cfg-negotiate begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (4): 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 {diz | libbar->{diz/3,1}} + trace: collect_build_prerequisites: postpone bar/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 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 (4): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (5): begin {bar diz | libbar->{bar/1,1 diz/3,1}} + %.* + trace: collect_build_postponed (5): cfg-negotiate begin {bar diz | libbar->{bar/1,1 diz/3,1}} + %.* + trace: collect_build_postponed (5): 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 (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): 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 (5): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + trace: collect_build_prerequisites: end diz/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {bar diz | libbar->{bar/1,1 diz/3,1}}! + trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} + %.* + 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: begin libfoo/1.0.0 + trace: collect_build_prerequisites: end 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 {bar diz | libbar->{bar/1,1 diz/3,1}} + trace: collect_build_postponed (4): end {dex | bar->{dex/1,1}} + trace: collect_build_postponed (3): end {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (2): end {dox | dex->{dox/1,1}} + trace: collect_build_postponed (1): end {diz | dox->{diz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !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 diz + } + + : depends-depends-conflict + : + { + $clone_cfg; + + # Dependencies: + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(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 + %.* + 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: 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 + %.* + 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_prerequisites: begin buc/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent buc/1.0.0 + trace: postponed_configurations::add: create {buc | libfoo->{buc/1,1}} + trace: collect_build_prerequisites: postpone buc/1.0.0 + trace: collect_build_prerequisites: begin bux/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bux/1.0.0 + trace: postponed_configurations::add: create {bux | libbar->{bux/1,1}} + trace: collect_build_prerequisites: postpone bux/1.0.0 + trace: collect_build_postponed (0): begin + 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 + %.* + 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 {bux | libbar->{bux/1,1}} + trace: collect_build_prerequisites: postpone 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 dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: add {dex 2,1: libfoo} to {buc | libfoo->{buc/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {dex | bar->{dex/1,1}}! + 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 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + 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: cannot cfg-postpone dependency bux/1.0.0 of dependent buc/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bux), 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 + %.* + 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_prerequisites: begin buc/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent buc/1.0.0 + trace: postponed_configurations::add: create {buc | libfoo->{buc/1,1}} + trace: collect_build_prerequisites: postpone buc/1.0.0 + trace: pkg_build: dep-postpone user-specified bux + trace: collect_build_postponed (0): begin + 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 + %.* + 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_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: add {dex 2,1: libfoo} to {buc | libfoo->{buc/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {dex | bar->{dex/1,1}}! + 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 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + 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: create {buc | bux->{buc/2,1}} + trace: collect_build_prerequisites: postpone buc/1.0.0 + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {buc dex | libfoo->{buc/1,1 dex/2,1}}! + trace: collect_build_postponed (3): begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (3): cfg-negotiate begin {bar | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (3): 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 (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): 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 (3): cfg-negotiate end {bar | libbar->{bar/1,1}}! + trace: collect_build_postponed (4): begin {buc | bux->{buc/2,1}} + %.* + trace: collect_build_postponed (4): cfg-negotiate begin {buc | bux->{buc/2,1}} + %.* + trace: collect_build_postponed (4): 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 | libbar->{bar/1,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 (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): 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 (4): cfg-negotiate end {buc | bux->{buc/2,1}}! + trace: collect_build_postponed (4): end {buc | bux->{buc/2,1}} + trace: collect_build_postponed (3): end {bar | libbar->{bar/1,1}} + trace: collect_build_postponed (2): end {buc dex | libfoo->{buc/1,1 dex/2,1}} + trace: collect_build_postponed (1): end {dex | bar->{dex/1,1}} + 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; + !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 + !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 bar dex buc bux + } + + : package-depends-conflict + : + { + $clone_cfg; + + # Dependencies: + # + # baz: depends: {libbar libfoo} (c) + # + # bas: depends: libbar(c) + # depends: bus (c) + # + # bus: depends: libbaz(c) + # depends: foo (c) + # + # foo: depends: libfoo(c) + # + # bat: depends: libbaz(c) + # + $* baz bas bus foo bat 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add baz/1.0.0 + trace: collect_build: add bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin baz/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent baz/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent baz/1.0.0 + trace: postponed_configurations::add: create {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone baz/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: add {bas 1,1: libbar} to {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + 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_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 {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone foo/1.0.0 + trace: collect_build_prerequisites: begin bat/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbaz/1.0.0 of dependent bat/1.0.0 + trace: postponed_configurations::add: add {bat 1,1: libbaz} to {bus | libbaz->{bus/1,1}} + trace: collect_build_prerequisites: postpone bat/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bas baz foo | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1 foo/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bas baz foo | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1 foo/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 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 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 baz/1.0.0 + trace: collect_build: add bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin baz/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent baz/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent baz/1.0.0 + trace: postponed_configurations::add: create {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone baz/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: add {bas 1,1: libbar} to {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: pkg_build: dep-postpone user-specified bus + 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 {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone foo/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 {bas baz foo | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1 foo/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bas baz foo | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1 foo/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 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 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 (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/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 {bas baz foo | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1 foo/1,1}}! + trace: collect_build_postponed (2): begin {bat | libbaz->{bat/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {bat | libbaz->{bat/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {bat | libbaz->{bat/1,1}}! + trace: collect_build_postponed (3): begin {bas | bus->{bas/2,1}} + %.* + 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 {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 baz/1.0.0 + trace: collect_build: add bas/1.0.0 + trace: collect_build: add bus/1.0.0 + trace: collect_build: add foo/1.0.0 + trace: collect_build: add bat/1.0.0 + trace: collect_build_prerequisites: begin baz/1.0.0 + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent baz/1.0.0 + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent baz/1.0.0 + trace: postponed_configurations::add: create {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone baz/1.0.0 + trace: collect_build_prerequisites: begin bas/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 + trace: postponed_configurations::add: add {bas 1,1: libbar} to {baz | libbar->{baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_prerequisites: postpone bas/1.0.0 + trace: pkg_build: dep-postpone user-specified bus + trace: pkg_build: dep-postpone user-specified foo + 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 {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1}} + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/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 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 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 (1): select cfg-negotiated dependency alternative for dependent baz/1.0.0 + trace: collect_build_prerequisites: resume baz/1.0.0 + trace: collect_build_prerequisites: end baz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1}}! + trace: collect_build_postponed (2): begin {bat | libbaz->{bat/1,1}} + %.* + trace: collect_build_postponed (2): cfg-negotiate begin {bat | libbaz->{bat/1,1}} + %.* + trace: collect_build_postponed (2): 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 (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): 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 (2): cfg-negotiate end {bat | libbaz->{bat/1,1}}! + trace: collect_build_postponed (3): begin {bas | bus->{bas/2,1}} + %.* + 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 {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 (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): 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 {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/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 {bat | libbaz->{bat/1,1}} + trace: collect_build_postponed (1): end {bas baz | libbar->{bas/1,1 baz/1,1} libfoo->{baz/1,1}} + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* + EOE + + $pkg_status -r >>EOO; + !baz 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 + EOO + + $pkg_drop baz bas bus foo bat + } + + : existing + : + { + +$clone_cfg + + : negotiate + : + { + $clone_cfg; + + # Dependencies: + # + # bar: depends: libbar(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # dox: dex(c) + # + # dix: depends: libbar(c) + # depends: libbox(c) # causes postponement and initial cluster finished negotiating + # depends: dox(c) + # + $* dex --verbose 1 2>!; + + $* 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 + 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): 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}} + trace: collect_build_prerequisites: postpone dox/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 dix/1.0.0 + trace: collect_build_prerequisites: resume dix/1.0.0 + 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}} + trace: collect_build_prerequisites: postpone dox/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 dix/1.0.0 + trace: collect_build_prerequisites: resume dix/1.0.0 + 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: 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 (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): 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 (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 + 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 {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): end {dix | dox->{dix/3,1}} + 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; + !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 + EOO + + # @@ Note that if --drop-dependent is unspecified, the following + # command fails with: + # + # following dependent packages will have to be dropped as well: + # dox (requires dex) + # error: refusing to drop dependent packages with just --yes + # info: specify --drop-dependent to confirm + # + # Feels wrong. + # + $pkg_drop --drop-dependent dex dix + } + } + } + } + + : unaccept-alternative + : + { + +$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; + + # 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; + !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 + 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 + 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 + 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 + 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 + !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 + !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 + !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 + !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 + !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 !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 + !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 !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 + !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 + + # 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 + } + } + } + } + } + + : config-negotiation + : + { + test.arguments += --yes --plan 'build plan:' + + : proj-better-choice + : + { + +$clone_root_cfg && $rep_add $rep/t13a && $rep_fetch + + : bar-baz-biz + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + config.liba.backend=cli (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar 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 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 + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz) + config.liba.backend=gui (set by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz 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 baz + } + + : bar-baz + : + { + $clone_cfg; + + $* bar baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar, baz) + config.liba.backend=cli (set by bar) + new bar/1.0.0 + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + %info: .+bar.+ is up to date% + %info: .+baz.+ is up to date% + updated bar/1.0.0 + 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 + + $pkg_drop bar baz + } + + : baz-bar + : + { + $clone_cfg; + + $* baz bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar, baz) + config.liba.backend=cli (set by bar) + new baz/1.0.0 + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + configured bar/1.0.0 + %info: .+baz.+ is up to date% + %info: .+bar.+ is up to date% + updated baz/1.0.0 + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + # Would have been cool to end up with gui but looks like we have a map + # in configuration cluster. + # + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.backend = cli + EOO + + $pkg_drop baz bar + } + + : bar-baz-biz-box + : + { + $clone_cfg; + + $* bar baz biz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar, baz, biz) + config.liba.backend=gui (set by biz) + new bar/1.0.0 + new baz/1.0.0 + new biz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + fetched biz/1.0.0 + unpacked biz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + configured biz/1.0.0 + %info: .+bar.+ is up to date% + %info: .+baz.+ is up to date% + %info: .+biz.+ is up to date% + updated bar/1.0.0 + updated baz/1.0.0 + updated biz/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 + + # 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 + } + } + + : proj-better-value + : + { + +$clone_root_cfg && $rep_add $rep/t13b && $rep_fetch + + : liba + : + { + $clone_cfg; + + $* liba 2>>~%EOE%; + build plan: + new liba/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + configured liba/1.0.0 + %info: .+liba.+ is up to date% + updated liba/1.0.0 + EOE + + $pkg_status -r >>EOO; + !liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + config.liba.buffer = 1024 + EOO + + $pkg_drop liba + } + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + config.liba.buffer=2048 (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + config.liba.buffer = 2048 + EOO + + $pkg_drop bar + } + + : bar-liba + : + { + $clone_cfg; + + $* bar ?liba +{ config.liba.x=true } 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=true (user configuration) + config.liba.buffer=10240 (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.buffer = 10240 + EOO + + $pkg_drop bar + } + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz) + config.liba.buffer=4096 (set by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + config.liba.buffer = 4096 + EOO + + $pkg_drop baz + } + + : baz-liba + : + { + $clone_cfg; + + $* baz ?liba +{ config.liba.x=true } 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz) + config.liba.x=true (user configuration) + config.liba.buffer=10240 (set by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.buffer = 10240 + EOO + + $pkg_drop baz + } + + : baz-biz + : + { + $clone_cfg; + + $* baz biz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz, biz) + %( + config.liba.buffer=10240 (set by baz) + config.liba.x=true (set by biz) + %| + config.liba.x=true (set by biz) + config.liba.buffer=10240 (set by baz) + %) + new baz/1.0.0 + new biz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + fetched biz/1.0.0 + unpacked biz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + configured biz/1.0.0 + %info: .+baz.+ is up to date% + %info: .+biz.+ is up to date% + updated baz/1.0.0 + updated biz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !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.x = true + config.liba.buffer = 10240 + EOO + + $pkg_drop baz biz + } + } + + : proj-disable-unused + : + { + +$clone_root_cfg && $rep_add $rep/t13c && $rep_fetch + + : liba + : + { + $clone_cfg; + + $* liba 2>>~%EOE%; + build plan: + new liba/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + configured liba/1.0.0 + %info: .+liba.+ is up to date% + updated liba/1.0.0 + EOE + + $pkg_status -r >>EOO; + !liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + EOO + + $pkg_drop liba + } + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + <depends-reflect-clause>:1:5: info: false + info: reflect clause: + info $config.liba.x + info: in depends manifest value of package bar + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=false (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + EOO + + $pkg_drop bar + } + + : bar-baz + : + { + $clone_cfg; + + $* bar baz 2>>~%EOE%; + <depends-reflect-clause>:1:5: info: true + info: reflect clause: + info $config.liba.x + info: in depends manifest value of package bar + build plan: + new liba/1.0.0 (required by bar, baz) + config.liba.x=true (set by baz) + new bar/1.0.0 + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + %info: .+bar.+ is up to date% + %info: .+baz.+ is up to date% + updated bar/1.0.0 + 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.x = true + EOO + + $pkg_drop bar baz + } + + : bar-liba + : + { + $clone_cfg; + + $* bar ?liba +{ config.liba.x=true } 2>>~%EOE%; + <depends-reflect-clause>:1:5: info: true + info: reflect clause: + info $config.liba.x + info: in depends manifest value of package bar + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=true (user configuration) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + EOO + + $pkg_drop bar + } + } + + : proj-use-if-available + : + { + +$clone_root_cfg && $rep_add $rep/t13d && $rep_fetch + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar, baz) + config.liba.x=true (set by baz) + new bar/1.0.0 (required by baz) + config.bar.liba_x=true (set by bar) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + bar configured 1.0.0 + liba configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + EOO + + $pkg_drop baz + } + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new libb/1.0.0 (required by bar) + new bar/1.0.0 + config.bar.liba_x=false (set by bar) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured libb/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + libb configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + EOO + + $pkg_drop bar + } + } + + : proj-bogus-config + : + { + +$clone_root_cfg && $rep_add $rep/t13e && $rep_fetch + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz, biz) + config.liba.x=true (set by biz) + new biz/1.0.0 (required by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched biz/1.0.0 + unpacked biz/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured biz/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + biz configured 1.0.0 + liba configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.buffer = 1024 + EOO + + $pkg_drop baz + } + } + + : proj-bogus-config-cycle + : + { + +$clone_root_cfg && $rep_add $rep/t13f && $rep_fetch + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE% != 0; + error: unable to remove bogus configuration values without causing configuration refinement cycle + info: consider manually specifying one or more of the following variables as user configuration + %( + config.liba.buffer=2048 + config.liba.x=true + %| + config.liba.x=true + config.liba.buffer=2048 + %) + EOE + + $* baz ?liba +{ config.liba.x=true } 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz) + config.liba.x=true (user configuration) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.buffer = 1024 + EOO + + $pkg_drop baz + } + } + + : proj-detect-unset + : + { + +$clone_root_cfg && $rep_add $rep/t13g && $rep_fetch + + : bar + : + { + $clone_cfg; + + $* bar 2>>EOE != 0 + <depends-accept-clause>:1:3: error: undefined dependency configuration variable config.liba.x + info: was config.liba.x set in earlier prefer or require clause? + info: accept condition: ($config.liba.x) + info: in depends manifest value of package bar + EOE + } + + : baz + : + { + $clone_cfg; + + $* baz 2>>EOE != 0 + <depends-enable-clause>:1:3: error: undefined dependency configuration variable config.liba.x + info: was config.liba.x set in earlier prefer or require clause? + info: enable condition: ($config.liba.x) + info: in depends manifest value of package baz + info: while satisfying baz/1.0.0 + EOE + } + + : biz + : + { + $clone_cfg; + + $* biz 2>>EOE != 0 + <depends-prefer-clause>:1:12: error: undefined dependency configuration variable config.liba.x + info: was config.liba.x set in earlier prefer or require clause? + info: prefer clause: + x = (!$config.liba.x) # Error. + info: in depends manifest value of package biz + EOE + } + + : box + : + { + $clone_cfg; + + $* box 2>>EOE != 0 + <depends-reflect-clause>:1:12: error: undefined dependency configuration variable config.liba.x + info: was config.liba.x set in earlier prefer or require clause? + info: reflect clause: + x = (!$config.liba.x) # Error. + info: in depends manifest value of package box + EOE + } + } + + : proj-cycle + : + { + +$clone_root_cfg && $rep_add $rep/t13h && $rep_fetch + + : bar baz + : + { + $clone_cfg; + + $* bar baz 2>>EOE != 0 + error: unable to negotiate acceptable configuration between dependents baz, bar for dependencies liba + info: configuration before negotiation: + config.liba.buffer=4096 (set by bar) + info: configuration after negotiation: + config.liba.buffer=8192 (set by baz) + EOE + } + } + + : proj-dependency-reflect + : + { + +$clone_root_cfg && $rep_add $rep/t13i && $rep_fetch + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + <depends-reflect-clause>:1:5: info: yes + info: reflect clause: + info ($config.liba.x ? yes : no) + info: in depends manifest value of package bar + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=true (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.buffer = 1024 + EOO + + $pkg_drop bar + } + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + <depends-reflect-clause>:1:5: info: 4096 + info: reflect clause: + info $config.liba.buffer + info: in depends manifest value of package baz + build plan: + new liba/1.0.0 (required by baz) + config.liba.buffer=4096 (set by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = false + config.liba.buffer = 4096 + EOO + + $pkg_drop baz + } + } + + : proj-non-sensible + : + { + +$clone_root_cfg && $rep_add $rep/t13j && $rep_fetch + + : bar-baz + : + { + $clone_cfg; + + $* bar baz 2>>/~%EOE% != 0 + error: unable to negotiate sensible configuration for dependency liba + % .+/root.build:5:1: error: buffer must be at least 4096 if feature x is enabled% + info: negotiated configuration: + %( + config.liba.buffer=2048 (set by bar) + config.liba.x=true (set by baz) + %| + config.liba.x=true (set by baz) + config.liba.buffer=2048 (set by bar) + %) + EOE + } + + : biz-baz + : + { + $clone_cfg; + + $* biz baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz, biz) + %( + config.liba.buffer=4096 (set by biz) + config.liba.x=true (set by baz) + %| + config.liba.x=true (set by baz) + config.liba.buffer=4096 (set by biz) + %) + new biz/1.0.0 + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched biz/1.0.0 + unpacked biz/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured biz/1.0.0 + configured baz/1.0.0 + %info: .+biz.+ is up to date% + %info: .+baz.+ is up to date% + updated biz/1.0.0 + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !biz 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.x = true + config.liba.buffer = 4096 + EOO + + $pkg_drop biz baz + } + } + + : proj-unaccept + : + { + +$clone_root_cfg && $rep_add $rep/t13k && $rep_fetch + + : bar-baz + : + { + $clone_cfg; + + $* bar baz 2>>EOE != 0 + error: unable to negotiate acceptable configuration with dependent bar for dependencies liba + info: configuration before negotiation: + config.liba.buffer=8192 (set by baz) + EOE + } + } + + : proj-require-system + : + { + +$clone_root_cfg && $rep_add $rep/t13l && $rep_fetch + + : bar + : + { + +$clone_cfg + + : basic + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=true (set by bar) + new libb/1.0.0 (required by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured libb/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + libb configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + EOO + + $pkg_drop bar + } + + : sys-liba-1 + : + { + $clone_cfg; + + $* bar '?sys:liba' 2>>~%EOE%; + build plan: + configure sys:liba/* (required by bar) + config.liba.x=true (expected by bar) + new libb/1.0.0 (required by bar) + new bar/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured sys:liba/* + configured libb/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured,system !* available 1.0.0 + libb configured 1.0.0 + EOO + + $pkg_drop bar + } + + : sys-liba-2 + : + { + $clone_cfg; + + $* bar '?sys:liba' +{ config.liba.x=false } 2>>EOE != 0 + error: unable to negotiate acceptable configuration with dependent bar for dependencies liba + info: configuration before negotiation: + config.liba.x=false (user configuration) + EOE + } + + : bar-sys-liba-3 + : + { + $clone_cfg; + + $* bar '?sys:liba' +{ config.liba.x=[null] } 2>>EOE != 0 + error: unable to negotiate acceptable configuration with dependent bar for dependencies liba + info: configuration before negotiation: + config.liba.x=[null] (user configuration) + EOE + } + + : sys-liba-4 + : + { + $clone_cfg; + + $* bar '?sys:liba' +{ config.liba.x=true } 2>>~%EOE%; + build plan: + configure sys:liba/* (required by bar) + config.liba.x=true (expected user configuration) + new libb/1.0.0 (required by bar) + new bar/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured sys:liba/* + configured libb/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured,system !* available 1.0.0 + libb configured 1.0.0 + EOO + + $pkg_drop bar + } + } + + : baz + : + { + +$clone_cfg + + : basic + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by baz) + config.liba.x=true (set by baz) + new libb/1.0.0 (required by baz) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured libb/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured 1.0.0 + libb configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + EOO + + $pkg_drop baz + } + + : sys-liba-1 + : + { + $clone_cfg; + + $* baz '?sys:liba' +{ config.liba.x=false } 2>>EOE != 0 + error: unable to negotiate configuration for system dependency liba without configuration information + info: consider specifying system dependency version that has corresponding available package + info: dependent baz has prefer/accept clauses that cannot be evaluated without configuration information + EOE + } + + : sys-liba-2 + : + { + $clone_cfg; + + $* baz '?sys:liba/1.0.0' 2>>~%EOE%; + build plan: + configure sys:liba/1.0.0 (required by baz) + config.liba.x=true (expected by baz) + new libb/1.0.0 (required by baz) + new baz/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured sys:liba/1.0.0 + configured libb/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured,system !1.0.0 + libb configured 1.0.0 + EOO + + $pkg_drop baz + } + + : sys-liba-3 + : + { + $clone_cfg; + + $* baz '?sys:liba/1.0.0' +{ config.liba.x=false } 2>>EOE != 0 + error: unable to negotiate acceptable configuration with dependent baz for dependencies liba + info: configuration before negotiation: + config.liba.x=false (user configuration) + EOE + } + + : bar-sys-liba-4 + : + { + $clone_cfg; + + $* baz '?sys:liba/1.0.0' +{ config.liba.x=[null] } 2>>EOE != 0 + <depends-accept-clause>:1: error: invalid bool value: null + info: accept condition: ($config.liba.x) + info: in depends manifest value of package baz + EOE + } + + : sys-liba-5 + : + { + $clone_cfg; + + $* baz '?sys:liba/1.0.0' +{ config.liba.x=true } 2>>~%EOE%; + build plan: + configure sys:liba/1.0.0 (required by baz) + config.liba.x=true (expected user configuration) + new libb/1.0.0 (required by baz) + new baz/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured sys:liba/1.0.0 + configured libb/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + liba configured,system !1.0.0 + libb configured 1.0.0 + EOO + + $pkg_drop baz + } + } + } + + : proj-require-basics + : + { + +$clone_root_cfg && $rep_add $rep/t13m && $rep_fetch + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + config.liba.x=true (set by bar) + new bar/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.y = false + config.liba.n = 1024 + EOO + + $pkg_drop bar + } + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar, baz) + %( + config.liba.y=true (set by baz) + config.liba.x=true (set by bar) + %| + config.liba.x=true (set by bar) + config.liba.y=true (set by baz) + %) + new bar/1.0.0 (required by baz) + new baz/1.0.0 + config.baz.bar=true (set by baz) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + bar configured 1.0.0 + liba configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/liba-1.0.0/build/config.build >>~%EOO%; + %.* + config.liba.x = true + config.liba.y = true + config.liba.n = 1024 + EOO + + cat cfg/baz-1.0.0/build/config.build >>~%EOO%; + %.* + config.baz.bar = true + EOO + + $pkg_drop baz + } + + : biz + : + { + $clone_cfg; + + $* biz 2>>EOE != 0 + error: configuration variable config.liba.x is not set to true + info: config.liba.x set in require clause of dependent biz + info: require clause: + config.liba.x = false # Error: not true + info: in depends manifest value of package biz + EOE + } + + : bix + : + { + $clone_cfg; + + $* bix 2>>EOE != 0 + error: configuration variable config.liba.n is not of bool type + info: config.liba.n set in require clause of dependent bix + info: require clause: + config.liba.n = 1 # Error: not bool + info: in depends manifest value of package bix + EOE + } + + : box + : + { + $clone_cfg; + + $* box 2>>EOE != 0 + error: package liba has no configuration variable config.liba.z + info: config.liba.z set in require clause of dependent box + info: require clause: + config.liba.z = true # Error: no such variable + info: in depends manifest value of package box + EOE + } + } + + : proj-reflect-append + : + { + +$clone_root_cfg && $rep_add $rep/t13n && $rep_fetch + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new libb/1.0.0 (required by bar) + new bar/1.0.0 + config.bar.libs=liba libb (set by bar) + config.bar.x=true (set by bar) + config.bar.y=true (set by bar) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched libb/1.0.0 + unpacked libb/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured libb/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + libb configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.libs = liba libb + EOO + + $pkg_drop bar + } + } + + : proj-reflect-override + : + { + +$clone_root_cfg && $rep_add $rep/t13o && $rep_fetch + + : bar + : + { + $clone_cfg; + + $* bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 + config.bar.x=true (set by bar) + config.bar.y=true (set by bar) + config.bar.z=true (set by bar) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = true + EOO + + $pkg_drop bar + } + + : bar-config-1 + : + { + $clone_cfg; + + $* config.bar.y=true -- bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 + config.bar.y=true (user configuration) + config.bar.x=true (set by bar) + config.bar.z=true (set by bar) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = true + EOO + + $pkg_drop bar + } + + : bar-config-2 + : + { + $clone_cfg; + + $* config.bar.y=false -- bar 2>>EOE != 0 + error: reflect variable config.bar.y overriden by user configuration + info: reflect value: config.bar.y=true + info: user value: config.bar.y=false + info: reflect clause: + config.bar.x = true + config.bar.y = true + if ($config.origin(config.bar.z) != 'override') + config.bar.z = true + info: in depends manifest value of package bar + info: while satisfying bar/1.0.0 + EOE + } + + : bar-config-3 + : + { + $clone_cfg; + + $* config.bar.z=false -- bar 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 + config.bar.z=false (user configuration) + config.bar.x=true (set by bar) + config.bar.y=true (set by bar) + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + %info: .+bar.+ is up to date% + updated bar/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = false + EOO + + $pkg_drop bar + } + + : baz + : + { + $clone_cfg; + + $* baz 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 (required by baz) + config.bar.y=true (set by baz) + config.bar.x=true (set by bar) + config.bar.z=true (set by bar) + new baz/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched baz/1.0.0 + unpacked baz/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured baz/1.0.0 + %info: .+baz.+ is up to date% + updated baz/1.0.0 + EOE + + $pkg_status -r >>EOO; + !baz configured 1.0.0 + bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = true + EOO + + $pkg_drop baz + } + + : biz + : + { + $clone_cfg; + + $* biz 2>>EOE != 0 + error: reflect variable config.bar.y overriden by dependent biz + info: reflect value: config.bar.y=true + info: dependent value: config.bar.y=false + info: reflect clause: + config.bar.x = true + config.bar.y = true + if ($config.origin(config.bar.z) != 'override') + config.bar.z = true + info: in depends manifest value of package bar + info: while satisfying bar/1.0.0 + EOE + } + + : biz-bar + : + { + $clone_cfg; + + $* biz ?bar +{ config.bar.y=false } 2>>EOE != 0 + error: reflect variable config.bar.y overriden by user configuration + info: reflect value: config.bar.y=true + info: user value: config.bar.y=false + info: reflect clause: + config.bar.x = true + config.bar.y = true + if ($config.origin(config.bar.z) != 'override') + config.bar.z = true + info: in depends manifest value of package bar + info: while satisfying bar/1.0.0 + EOE + } + + : bix + : + { + $clone_cfg; + + $* bix 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 (required by bix) + config.bar.z=false (set by bix) + config.bar.x=true (set by bar) + config.bar.y=true (set by bar) + new bix/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched bix/1.0.0 + unpacked bix/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured bix/1.0.0 + %info: .+bix.+ is up to date% + updated bix/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bix configured 1.0.0 + bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = false + EOO + + $pkg_drop bix + } + + : bix-bar + : + { + $clone_cfg; + + $* bix ?bar +{ config.bar.z=false } 2>>~%EOE%; + build plan: + new liba/1.0.0 (required by bar) + new bar/1.0.0 (required by bix) + config.bar.z=false (user configuration) + config.bar.x=true (set by bar) + config.bar.y=true (set by bar) + new bix/1.0.0 + fetched liba/1.0.0 + unpacked liba/1.0.0 + fetched bar/1.0.0 + unpacked bar/1.0.0 + fetched bix/1.0.0 + unpacked bix/1.0.0 + configured liba/1.0.0 + configured bar/1.0.0 + configured bix/1.0.0 + %info: .+bix.+ is up to date% + updated bix/1.0.0 + EOE + + $pkg_status -r >>EOO; + !bix configured 1.0.0 + bar configured 1.0.0 + liba configured 1.0.0 + EOO + + cat cfg/bar-1.0.0/build/config.build >>~%EOO%; + %.* + config.bar.x = true + config.bar.y = true + config.bar.z = false + EOO + + $pkg_drop bix + } + } + } +} + +: test-dependency +: +{ + +$clone_cfg + +$rep_add $rep/t10 && $rep_fetch + + : simultaneously + : + { + $clone_cfg; + + $* libfoo-bar libfoo-tests 2>>~%EOE%; + fetched libfoo-bar/1.0.0 + unpacked libfoo-bar/1.0.0 + fetched libfoo-tests/1.0.0 + unpacked libfoo-tests/1.0.0 + configured libfoo-bar/1.0.0 + configured libfoo-tests/1.0.0 + %info: .+libfoo-bar-1.0.0.+ is up to date% + %info: .+libfoo-tests-1.0.0.+ is up to date% + updated libfoo-bar/1.0.0 + updated libfoo-tests/1.0.0 + EOE + + cat cfg/libfoo-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo_tests.test = libfoo-bar + %.* + EOO + + $pkg_drop libfoo-bar libfoo-tests + } + + : sequentially + : + { + $clone_cfg; + + $* libfoo-baz 2>>~%EOE%; + fetched libfoo-baz/1.0.0 + unpacked libfoo-baz/1.0.0 + configured libfoo-baz/1.0.0 + %info: .+libfoo-baz-1.0.0.+ is up to date% + updated libfoo-baz/1.0.0 + EOE + + $* libfoo-tests 2>>~%EOE%; + fetched libfoo-tests/1.0.0 + unpacked libfoo-tests/1.0.0 + configured libfoo-tests/1.0.0 + %info: .+libfoo-tests-1.0.0.+ is up to date% + updated libfoo-tests/1.0.0 + EOE + + cat cfg/libfoo-tests-1.0.0/build/config.build >>~%EOO%; + %.* + config.libfoo_tests.test = libfoo-baz + %.* + EOO + + $pkg_drop libfoo-baz libfoo-tests + } + + : tests-only + : + { + $clone_cfg; + + $* libfoo-tests 2>>~%EOE% != 0 + error: unable to select dependency alternative for package libfoo-tests/1.0.0 + info: explicitly specify dependency packages to manually select the alternative + info: alternative: libfoo-bar + info: alternative: libfoo-baz + 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 @@ -2773,9 +26549,9 @@ test.options += --no-progress $* --yes libbar 2>>~%EOE%; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured 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: .+ is up to date% updated libbar/1.0.0 @@ -2814,9 +26590,9 @@ test.options += --no-progress $* --yes libbar 2>>~%EOE%; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured 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: .+ is up to date% updated libbar/1.0.0 @@ -2850,7 +26626,7 @@ test.options += --no-progress { test.arguments += --yes - +$cfg_create cxx $config_cxx -d cfg 2>- &cfg/*** + +$cfg_create cxx $config_cxx -d cfg &cfg/*** : direct : @@ -2869,6 +26645,27 @@ test.options += --no-progress EOE } + : direct-config + : + : As above but with a linked configuration. + : + { + $clone_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + cp -r $src/libfoo-1.1.0/ libfoo; + echo "depends: libfoo" >+ libfoo/manifest; + $rep_add libfoo --type dir -d cfg2; + + $rep_fetch -d cfg2; + + $* libfoo +{ --config-id 1 } 2>>~%EOE% != 0 + %error: dependency cycle detected involving package libfoo \[cfg2.\]% + % info: libfoo/1.1.0 \[cfg2.\] depends on libfoo/1.1.0 \[cfg2.\]% + EOE + } + : indirect : { @@ -2919,8 +26716,8 @@ test.options += --no-progress $* libhello 2>>~%EOE%; using libfoo/1.1.0 (external) - configured libfoo/1.1.0 using libhello/1.0.0 (external) + configured libfoo/1.1.0 configured libhello/1.0.0 %(mkdir|c\+\+|ld|ar) .+%{8} updated libhello/1.0.0 @@ -2947,7 +26744,7 @@ test.options += --no-progress { test.arguments += --yes - +$cfg_create cxx $config_cxx -d cfg 2>- &cfg/*** + +$cfg_create cxx $config_cxx -d cfg &cfg/*** +cp -r $src/libhello-1.0.0 ./libhello +$rep_add libhello --type dir +$rep_fetch @@ -3033,9 +26830,9 @@ test.options += --no-progress $* libbaz/0.0.3 --patch 2>>EOE; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 + configured libfoo/1.0.0 configured libbaz/0.0.3 EOE @@ -3077,19 +26874,19 @@ test.options += --no-progress +$* libbox libfix ?libbaz/0.0.3 2>>EOE fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 - configured libbaz/0.0.3 fetched libbox/0.0.1 unpacked libbox/0.0.1 - configured libbox/0.0.1 fetched libfix/0.0.3 unpacked libfix/0.0.3 + configured libfoo/1.0.0 + configured libbaz/0.0.3 + configured libbox/0.0.1 configured libfix/0.0.3 EOE - clone_cfg = cp --no-cleanup -r ../cfg ./ &cfg/*** + clone_cfg = [cmdline] cp --no-cleanup -r ../cfg ./ &cfg/*** : explicitly : @@ -3191,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 } @@ -3206,13 +27029,13 @@ test.options += --no-progress fetching pkg:build2.org/pkg-build/t0c fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbaz/0.0.3 unpacked libbaz/0.0.3 + configured libfoo/1.0.0 configured libbaz/0.0.3 EOE - clone_cfg = cp --no-cleanup -r ../cfg ./ &cfg/*** + clone_cfg = [cmdline] cp --no-cleanup -r ../cfg ./ &cfg/*** : explicit : @@ -3266,9 +27089,9 @@ test.options += --no-progress $* --configure-only --yes libbar 2>>EOE; fetched libfoo/1.0.0 unpacked libfoo/1.0.0 - configured libfoo/1.0.0 fetched libbar/1.0.0 unpacked libbar/1.0.0 + configured libfoo/1.0.0 configured libbar/1.0.0 EOE @@ -3321,7 +27144,7 @@ test.options += --no-progress $clone_root_cfg; if! $remote - rep = ($cxx.target.class != 'windows' \ + rep = ($posix \ ? "file:$rep" \ : "file:/$regex.replace($rep, '\\', '/')") @@ -3423,6 +27246,30 @@ test.options += --no-progress $pkg_drop libfoo } + : no-patch-config + : + : As above but with a linked configuration. + : + { + $clone_root_cfg; + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* "libfoo@$rep/t1" +{ --config-id 1 } --patch 2>>~%EOE%; + %.+ + %configured libfoo/1.0.0 \[cfg2.\]% + %info: .+ is up to date% + %updated libfoo/1.0.0 \[cfg2.\]% + EOE + + $* "libfoo@$rep/t3" +{ --config-id 1 } --patch 2>>~%EOE% != 0; + %.+ + %error: patch version for libfoo/1.0.0 \[cfg2.\] is not found in pkg:build2.org/pkg-build/t3% + EOE + + $pkg_drop -d cfg2 libfoo + } + : package-in-complement : { @@ -3473,8 +27320,11 @@ test.options += --no-progress d = $canonicalize([dir_path] $src/libfoo-1.1.0); + # Note that on Windows the local repository canonical name path part is + # converted to lower case. + # $* "libfoo@$d" 2>>~"%EOE%"; - fetching dir:$d + fetching dir:($posix ? "$d" : $string.lcase("$d")) using libfoo/1.1.0 \(external\) configured libfoo/1.1.0 %info: .+ is up to date% @@ -3498,7 +27348,14 @@ test.options += --no-progress $clone_root_cfg; $rep_fetch $rep/t4a; $rep_add $src/libfoo-1.1.0 --type dir; - $rep_fetch "dir:$canonicalize([dir_path] $src/libfoo-1.1.0)"; + + d = $canonicalize([dir_path] $src/libfoo-1.1.0); + + if! $posix + d = [dir_path] $string.lcase($d) + end; + + $rep_fetch "dir:$d"; $* libfoo 2>>~%EOE%; using libfoo/1.1.0 (external) @@ -3510,12 +27367,117 @@ test.options += --no-progress $pkg_disfigure libfoo 2>'disfigured libfoo/1.1.0'; $pkg_purge libfoo 2>'purged libfoo/1.1.0' } + + : preferred-config + : + : As above but with a linked configuration. + : + { + $clone_root_cfg; + + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $rep_fetch -d cfg2 $rep/t4a; + $rep_add -d cfg2 $src/libfoo-1.1.0 --type dir; + + d = $canonicalize([dir_path] $src/libfoo-1.1.0); + + if! $posix + d = [dir_path] $string.lcase($d) + end; + + $rep_fetch -d cfg2 "dir:$d"; + + $* libfoo +{ --config-id 1 } 2>>~%EOE%; + %using libfoo/1.1.0 \[cfg2.\] \(external\)% + %configured libfoo/1.1.0 \[cfg2.\]% + %info: .+ is up to date% + %updated libfoo/1.1.0 \[cfg2.\]% + EOE + + $pkg_disfigure -d cfg2 libfoo 2>'disfigured libfoo/1.1.0'; + $pkg_purge -d cfg2 libfoo 2>'purged libfoo/1.1.0' + } +} + +: disfigure +: +{ + +$cfg_create cxx $config_cxx -d cfg &cfg/*** + + # Build libhello as an external package. + # + +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 + +$rep_add libhello --type dir + +$rep_fetch + +$* config.libhello.develop=true -- libhello 2>! + + : without + : + : Make sure without --disfigure old configuration is preserved. + : + { + $clone_cfg; + $* libhello 2>!; # Update after output directory change. + + # Specify a configuration variable to trigger reconfiguration. + # + $* config.libhello.extras=true -- libhello 2>>~%EOE% + disfigured libhello/1.0.0 + %.*: develop=true% + configured libhello/1.0.0 + %.*: develop=true% + %(mkdir|c\+\+|ld|ar) .+%{8} + updated libhello/1.0.0 + EOE + } + + : alone + : + : Make sure --disfigure alone causes reconfiguration. + : + { + $clone_cfg; + $* libhello 2>!; # Update after output directory change. + + $* --disfigure libhello 2>>~%EOE% + disfigured libhello/1.0.0 + %.*: develop=false% + configured libhello/1.0.0 + %.*: develop=false% + %(mkdir|c\+\+|ld|ar) .+%{8} + updated libhello/1.0.0 + EOE + } + + : with-keep-out + : + { + $clone_cfg; + $* libhello 2>!; # Update after output directory change. + + $* --disfigure --keep-out libhello 2>>~%EOE% + disfigured libhello/1.0.0 + %.*: develop=false% + configured libhello/1.0.0 + %.*: develop=false% + %info: .+ is up to date% + updated libhello/1.0.0 + EOE + } } : keep-out : { - +$cfg_create cxx $config_cxx -d cfg 2>- &cfg/*** + +$cfg_create cxx $config_cxx -d cfg &cfg/*** # Build libhello as an external package. # @@ -3628,12 +27590,12 @@ 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. # - +$cfg_create cxx $config_cxx -d cfg 2>- &cfg/*** + +$cfg_create cxx $config_cxx -d cfg &cfg/*** +$build 'dist(../../libhello/@./cfg/libhello/)' \ config.dist.root=./ \ @@ -3745,7 +27707,7 @@ test.options += --no-progress } } -: ignore-case +: ignore-case-pkg : { test.arguments += --yes --auth all --trust-yes @@ -3780,6 +27742,36 @@ test.options += --no-progress $pkg_drop libbar } +: ignore-case-rep +: +: Test that package spec local repository location is matched +: case-insensitively on Windows. +: +if (!$remote && !$posix) +{ + $clone_cfg; + + $* "libbar@$rep/t5" 2>>~%EOE%; + added pkg:build2.org/pkg-build/t5 + fetching pkg:build2.org/pkg-build/t5 + fetched libbar/1.2.0 + unpacked libbar/1.2.0 + configured libbar/1.2.0 + %info: .+ is up to date% + updated libbar/1.2.0 + EOE + + $* "libbar@$rep/T5" 2>>~%EOE%; + fetching pkg:build2.org/pkg-build/t5 + %info: .+ is up to date% + updated libbar/1.2.0 + EOE + + $rep_list >~'%pkg:build2\.org/pkg-build/t5 .+t5%'; + + $pkg_drop libbar +} + : git-rep : if! $git_supported @@ -3810,8 +27802,8 @@ else $* libmbar 2>>~%EOE%; %checked out style-basic/.+% - %configured style-basic/.+% checked out libmbar/1.0.0 + %configured style-basic/.+% configured libmbar/1.0.0 %info: .+ is up to date% updated libmbar/1.0.0 @@ -3824,6 +27816,38 @@ else $pkg_purge style-basic } + : prerequisite-repo-config + : + : As above but with a linked configuration. + : + { + $clone_root_cfg; + $rep_add "$rep0/libbar.git#master"; + $rep_fetch &cfg/.bpkg/repos/*/***; + + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $rep_add -d cfg2 "$rep0/style-basic.git#master"; + $rep_fetch -d cfg2 &cfg/.bpkg/repos/*/***; + + $* libmbar style-basic +{ --config-id 1 } 2>>~%EOE%; + %checked out style-basic/.+ \[cfg2.\]% + checked out libmbar/1.0.0 + %configured style-basic/.+ \[cfg2.\]% + configured libmbar/1.0.0 + %info: .+ is up to date%{2} + %updated style-basic/.+ \[cfg2.\]% + updated libmbar/1.0.0 + EOE + + $pkg_disfigure libmbar; + $pkg_disfigure -d cfg2 style-basic; + + $pkg_purge libmbar; + $pkg_purge -d cfg2 style-basic + } + : no-prerequisite-repos : : Dependent package repository has no prerequisites nor complements. Its @@ -3838,8 +27862,8 @@ else $* libbaz 2>>~%EOE%; %checked out style-basic/.+% - %configured style-basic/.+% checked out libbaz/1.0.0 + %configured style-basic/.+% configured libbaz/1.0.0 %info: .+ is up to date% updated libbaz/1.0.0 @@ -3855,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 { @@ -3871,10 +27895,6459 @@ 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 $pkg_disfigure style-basic } + + : build-unpacked-config + : + : As above but with a linked configuration. + : + if! $remote + { + $clone_root_cfg; + + $cfg_create -d cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + d = $canonicalize([dir_path] $out_git/state0/style-basic.git); + $pkg_unpack -d cfg2 -e $d; + + $* style-basic +{ --config-id 1 } 2>>~%EOE%; + %configured style-basic/1\.1\.0-a\.0\.\d+\..+% + %info: .+ is up to date% + %updated style-basic/1\.1\.0-a\.0\.\d+\..+% + 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 + + $pkg_disfigure -d cfg2 style-basic + } + + : checkout-root + : + { + $clone_root_cfg; + $rep_fetch "$rep0/libbar.git#master" &cfg/.bpkg/repos/*/***; + + # While at it, test the package checkout cache (thus build multiple + # packages from the same git repository). + # + $* libbar libmbar --checkout-root $~ --checkout-purge 2>>~%EOE%; + %checked out style-basic/.+% + checked out libbar/1.0.0+1 + checked out libmbar/1.0.0 + %configured style-basic/.+% + configured libbar/1.0.0+1 + configured libmbar/1.0.0 + %info: .+ is up to date%{2} + updated libbar/1.0.0+1 + updated libmbar/1.0.0 + EOE + + test -d libmbar-1.0.0; + + $pkg_drop libbar libmbar + } +} + +: linked-configs +: +{ + : 2-configs + : + { + +$clone_root_cfg && $rep_add $rep/t4c && $rep_fetch + + : invalid-cfg + : + { + +$clone_cfg + + : config-id + : + { + $clone_cfg; + $* libbaz --config-id 1 2>>/EOE != 0 + error: no configuration with id 1 is linked with cfg/ + EOE + } + + : config-name + : + { + $clone_cfg; + $* libbaz --config-name foo 2>>/EOE != 0 + error: no configuration with name 'foo' is linked with cfg/ + EOE + } + + : config-uuid + : + { + $clone_cfg; + $* libbaz --config-uuid '18f48b4b-b5d9-4712-b98c-1930df1c4228' 2>>/EOE != 0 + error: no configuration with uuid 18f48b4b-b5d9-4712-b98c-1930df1c4228 is linked with cfg/ + EOE + } + } + + : baz + : + { + $clone_cfg; + $cfg_create -d cfg-bar-foo &cfg-bar-foo/***; + $cfg_link -d cfg cfg-bar-foo; + + $* libbaz ?libbar +{ --config-id 1 } ?libfoo +{ --config-id 1 } 2>>~%EOE%; + %fetched libfoo/1.1.0 \[cfg-bar-foo.\]% + %unpacked libfoo/1.1.0 \[cfg-bar-foo.\]% + %fetched libbar/1.1.0 \[cfg-bar-foo.\]% + %unpacked libbar/1.1.0 \[cfg-bar-foo.\]% + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + %configured libfoo/1.1.0 \[cfg-bar-foo.\]% + %configured libbar/1.1.0 \[cfg-bar-foo.\]% + configured libbaz/1.1.0 + %info: cfg[^-].+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 [cfg-bar-foo/] configured 1.1.0 + libfoo [cfg-bar-foo/] configured 1.1.0 + libfoo [cfg-bar-foo/] configured 1.1.0 + EOO + + $pkg_status -d cfg-bar-foo -r libbar >>/EOO; + libbar configured 1.1.0 + libfoo configured 1.1.0 + EOO + + $pkg_status -d cfg-bar-foo libfoo >'libfoo configured 1.1.0'; + + $pkg_drop libbaz; + + $pkg_status libbaz libbar libfoo >>/EOO + libbaz available 1.1.0 + libbar available [1.1.0] + libfoo available [1.1.0] 1.0.0 + EOO + } + } + + : 3-configs + : + { + +$clone_root_cfg && $rep_add $rep/t4c && $rep_fetch + + : baz + : + { + uuid = '28f48b4b-b5d9-4712-b98c-1930df1c4228'; + + $clone_cfg; + $cfg_create -d cfg-bar &cfg-bar/***; + $cfg_create -d cfg-foo --uuid $uuid &cfg-foo/***; + + $cfg_link -d cfg cfg-bar; + $cfg_link -d cfg-bar cfg-foo; + + test.arguments = $regex.apply($test.arguments, cfg, cfg-bar); + + $* libbar@"$rep/t4b" ?libfoo +{ --config-id 2 } --trust-yes 2>>~%EOE%; + added pkg:build2.org/pkg-build/t4b + fetching pkg:build2.org/pkg-build/t4b + fetching pkg:build2.org/pkg-build/t4a (prerequisite of pkg:build2.org/pkg-build/t4b) + %fetched libfoo/1.1.0 \[cfg-foo.\]% + %unpacked libfoo/1.1.0 \[cfg-foo.\]% + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + %configured libfoo/1.1.0 \[cfg-foo.\]% + configured libbar/1.1.0 + %info: cfg-bar.+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + test.arguments = $regex.apply($test.arguments, cfg-bar, cfg); + + $* libfoo --config-uuid $uuid 2>>~%EOE%; + %info: cfg-foo.+libfoo-1.1.0.+ is up to date% + %updated libfoo/1.1.0 \[cfg-foo.\]% + EOE + + $* libbaz 2>>~%EOE%; + fetched libbaz/1.1.0 + unpacked libbaz/1.1.0 + configured libbaz/1.1.0 + %info: cfg[^-].+libbaz-1.1.0.+ is up to date% + updated libbaz/1.1.0 + EOE + + $pkg_status --link -r >>/EOO; + !libbaz configured 1.1.0 + !libbar [cfg-bar/] configured !1.1.0 + !libfoo [cfg-foo/] configured 1.1.0 + !libfoo [cfg-foo/] configured 1.1.0 + !libbar [cfg-bar/] configured !1.1.0 + !libfoo [cfg-foo/] configured 1.1.0 + !libfoo [cfg-foo/] configured 1.1.0 + EOO + + $pkg_drop libbaz; + + $* ?libfoo --config-uuid $uuid; # Unhold. + + $pkg_status libbaz libbar libfoo >>/EOO; + libbaz available 1.1.0 + !libbar [cfg-bar/] configured !1.1.0 + libfoo [cfg-foo/] configured 1.1.0 + EOO + + $* ?libbar +{ --config-id 1 } <'y' 2>>~%EOE%; + % drop libfoo/1.1.0 \[cfg-foo.\] \(unused\)% + % drop libbar/1.1.0 \[cfg-bar.\] \(unused\)% + %continue\? \[Y/n\] disfigured libbar/1.1.0 \[cfg-bar.\]% + %disfigured libfoo/1.1.0 \[cfg-foo.\]% + %purged libfoo/1.1.0 \[cfg-foo.\]% + %purged libbar/1.1.0 \[cfg-bar.\]% + EOE + + $pkg_status libbar libfoo >>/EOO + libbar available [1.1.0] + libfoo available [1.1.0] 1.0.0 + EOO + } + } + + : buildtime-dep + : + { + +$clone_root_cfg && $rep_add $rep/t7a && $rep_fetch + + : external-config + : + { + +$clone_cfg + +$cfg_create -d cfg2 --type host --name cfg2 &cfg2/*** + +$cfg_link -d cfg cfg2 + + : downgrade-dependency + : + { + $clone_cfg; + cp -pr ../cfg2 ./; + + $* libbar <'y' 2>>~%EOE%; + % new libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(required by foo \[cfg2.\]\)% + % new libbaz/1.0.0 \[cfg2.\] \(required by foo \[cfg2.\]\)% + % new foo/1.0.0 \[cfg2.\] \(required by libbar\)% + % new libbaz/1.0.0 \(required by libbar\)% + new libbar/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[cfg2.\]% + %unpacked libbaz/1.0.0 \[cfg2.\]% + %fetched foo/1.0.0 \[cfg2.\]% + %unpacked foo/1.0.0 \[cfg2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg2.\]% + %configured foo/1.0.0 \[cfg2.\]% + configured libbaz/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 + foo [cfg2/] configured 1.0.0 + libbaz [cfg2/] configured 1.0.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + # While at it, make sure that from several available host + # configurations the selected package configuration is chosen and we + # don't fail with the 'multiple possible host configurations' + # diagnostics. + # + $cfg_create -d cfg3 --type host &cfg3/***; + $cfg_link -d cfg cfg3; + + $rep_add $rep/t7b && $rep_fetch; + + $* libbar <'y' 2>>~%EOE%; + % 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 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.\]% + %fetched foo/1.1.0 \[cfg2.\]% + %unpacked foo/1.1.0 \[cfg2.\]% + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + %configured libbaz/1.1.0 \[cfg2.\]% + %configured foo/1.1.0 \[cfg2.\]% + 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 + foo [cfg2/] configured 1.1.0 + libbaz [cfg2/] configured 1.1.0 + libbaz configured 1.0.0 available 1.1.0 + EOO + + $* libbar/1.0.0 ?foo/1.0.0 +{ --config-name cfg2 } \ + ?libbaz/1.0.0 +{ --config-id 1 } <'y' &cfg2/.bpkg/build2/*** 2>>~%EOE%; + % new libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(required by foo \[cfg2.\]\)% + % downgrade libbaz/1.0.0 \[cfg2.\]% + % downgrade foo/1.0.0 \[cfg2.\]% + downgrade libbar/1.0.0 + continue? [Y/n] disfigured libbar/1.1.0 + %disfigured foo/1.1.0 \[cfg2.\]% + %disfigured libbaz/1.1.0 \[cfg2.\]% + %fetched libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[cfg2.\]% + %unpacked libbaz/1.0.0 \[cfg2.\]% + %fetched foo/1.0.0 \[cfg2.\]% + %unpacked foo/1.0.0 \[cfg2.\]% + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg2.\]% + %configured foo/1.0.0 \[cfg2.\]% + configured libbar/1.0.0 + %info: cfg.+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.1.0 + foo [cfg2/] configured !1.0.0 available 1.1.0 + libbaz [cfg2/] configured !1.0.0 available 1.1.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 available 1.1.0 + EOO + + $pkg_drop libbar libbaz + } + + : resolve-host-config + : + { + $clone_cfg; + cp -pr ../cfg2 ./; + + $cfg_create -d cfg3 --type host &cfg3/***; + $cfg_link -d cfg cfg3; + + $* libbar 2>>/~%EOE% != 0; + error: multiple possible host configurations for build-time dependency (foo ^1.0.0) + info: cfg2/ + info: cfg3/ + info: use --config-* to select the configuration + %info: while satisfying libbar.1.0.0% + EOE + + $* libbar ?foo +{ --config-id 2 } --yes 2>!; + + $pkg_status -r libbar >>/EOO; + !libbar configured 1.0.0 + foo [cfg3/] configured 1.0.0 + libbaz [cfg3/] configured 1.0.0 + libbuild2-bar [cfg3/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbar + } + + : 3-configs + : + { + $clone_cfg; + cp -pr ../cfg2 ./; + + $cfg_create -d cfg3 --type host &cfg3/***; + $cfg_link -d cfg2 cfg3; + + $rep_add -d cfg3 $rep/t7a && $rep_fetch -d cfg3; + + test.arguments = $regex.apply($test.arguments, cfg, cfg2); + + $* libbaz +{ --config-id 2 } 2>!; + + test.arguments = $regex.apply($test.arguments, cfg2, cfg); + + $* libbar --yes &cfg2/.bpkg/build2/*** 2>>~%EOE%; + %fetched libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %fetched foo/1.0.0 \[cfg2.\]% + %unpacked foo/1.0.0 \[cfg2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %configured foo/1.0.0 \[cfg2.\]% + configured libbaz/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 + foo [cfg2/] configured 1.0.0 + !libbaz [cfg3/] configured 1.0.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbar + } + } + + : private-config + : + { + $clone_cfg; + + $* libbar <'y' 2>>~%EOE% &cfg/.bpkg/host/*** &cfg/.bpkg/build2/***; + % new libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new libbaz/1.0.0 \[cfg..bpkg.host.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new foo/1.0.0 \[cfg..bpkg.host.\] \(required by libbar\)% + % new libbaz/1.0.0 \(required by libbar\)% + new libbar/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[cfg..bpkg.host.\]% + %unpacked libbaz/1.0.0 \[cfg..bpkg.host.\]% + %fetched foo/1.0.0 \[cfg..bpkg.host.\]% + %unpacked foo/1.0.0 \[cfg..bpkg.host.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg..bpkg.host.\]% + %configured foo/1.0.0 \[cfg..bpkg.host.\]% + configured libbaz/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 + foo [cfg/.bpkg/host/] configured 1.0.0 + libbaz [cfg/.bpkg/host/] configured 1.0.0 + libbuild2-bar [cfg/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $rep_add $rep/t7b && $rep_fetch; + + $* libbar <'y' 2>>~%EOE%; + % 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 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.\]% + %fetched foo/1.1.0 \[cfg..bpkg.host.\]% + %unpacked foo/1.1.0 \[cfg..bpkg.host.\]% + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + %configured libbaz/1.1.0 \[cfg..bpkg.host.\]% + %configured foo/1.1.0 \[cfg..bpkg.host.\]% + 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 + foo [cfg/.bpkg/host/] configured 1.1.0 + libbaz [cfg/.bpkg/host/] configured 1.1.0 + libbaz configured 1.0.0 available 1.1.0 + EOO + + $pkg_drop libbar + } + + : self-hosted-config + : + { + $cfg_create -d cfg --type host &cfg/***; + $rep_add $rep/t7a && $rep_fetch; + + $* libbar <'y' 2>>~%EOE%; + % new libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\] \(required by foo\)% + new libbaz/1.0.0 (required by foo, libbar) + new foo/1.0.0 (required by libbar) + new libbar/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + configured libbaz/1.0.0 + configured foo/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 + foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [cfg/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $rep_add $rep/t7b && $rep_fetch; + + $* libbar <'y' 2>>~%EOE%; + % 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 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 + fetched foo/1.1.0 + unpacked foo/1.1.0 + fetched libbar/1.1.0 + unpacked libbar/1.1.0 + configured libbaz/1.1.0 + configured foo/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 + foo configured 1.1.0 + libbaz configured 1.1.0 + libbaz configured 1.1.0 + EOO + + $pkg_drop libbar + } + } + + : verify-dependencies + : + { + +$clone_root_cfg && $rep_add $rep/t7a && $rep_fetch + + : fail + : + { + $cfg_create -d cfg2 &cfg2/***; + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + $cfg_create -d cfg3 &cfg3/***; + $rep_add -d cfg3 $rep/t7a && $rep_fetch -d cfg3; + + test.arguments = $regex.apply($test.arguments, cfg, cfg2); + + $* --yes libbar 2>!; + + test.arguments = $regex.apply($test.arguments, cfg2, cfg3); + + $* --yes libbox 2>!; + + $clone_cfg; + $cfg_link -d cfg cfg2; + $cfg_link -d cfg cfg3; + + test.arguments = $regex.apply($test.arguments, cfg3, cfg); + + $* libfix --yes 2>>~%EOE% != 0 + error: package libbaz indirectly required by libfix/1.0.0 is configured in multiple configurations + % info: libbaz/1.0.0 \[cfg3.\]% + % info: libbaz/1.0.0 \[cfg2.\]% + EOE + } + + : succeed + : + { + $cfg_create -d cfg2 &cfg2/***; + $rep_add -d cfg2 $rep/t7b && $rep_fetch -d cfg2; + + $cfg_create -d cfg3 &cfg3/***; + $rep_add -d cfg3 $rep/t7b && $rep_fetch -d cfg3; + + test.arguments = $regex.apply($test.arguments, cfg, cfg2); + + $* --yes libbar 2>!; + + test.arguments = $regex.apply($test.arguments, cfg2, cfg3); + + $* --yes libbox 2>!; + + $clone_cfg; + $cfg_link -d cfg cfg2; + $cfg_link -d cfg cfg3; + + test.arguments = $regex.apply($test.arguments, cfg3, cfg); + + $* libfix --yes 2>>~%EOE%; + fetched libfax/1.0.0 + unpacked libfax/1.0.0 + fetched libfix/1.0.0 + unpacked libfix/1.0.0 + configured libfax/1.0.0 + configured libfix/1.0.0 + %info: .+libfix-1.0.0.+ is up to date% + updated libfix/1.0.0 + EOE + + $pkg_drop libfix + } + } + + : change-config + : + { + : copy + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbaz --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbaz configured 1.0.0 + EOO + + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + $* libbaz +{ --config-name t2 } 2>>~%EOE%; + %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% + %updated libbaz/1.0.0 \[t2.\]% + EOE + + $pkg_status -d t1 --link -r >>/EOO + !libbaz configured 1.0.0 + !libbaz [t2/] configured 1.0.0 + EOO + } + + : copy-unhold + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbaz --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbaz configured 1.0.0 + EOO + + $* ?libbaz +{ --config-name t2 }; + + $pkg_status -d t1 -r >>/EOO + !libbaz configured 1.0.0 + EOO + } + + : copy-point + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbaz --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbaz configured 1.0.0 + EOO + + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + $* foo libbaz +{ --config-name t2 } <<EOI 2>>~%EOE%; + y + EOI + % new libbuild2-bar/1.0.0 \[t1..bpkg.build2.\] \(required by foo\)% + % new libbaz/1.0.0 \[t2.\]% + new foo/1.0.0 + %continue\? \[Y.n\] fetched libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[t2.\]% + %unpacked libbaz/1.0.0 \[t2.\]% + fetched foo/1.0.0 + unpacked foo/1.0.0 + %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 + + $pkg_status -d t1 --link -r >>/EOO + !libbaz configured 1.0.0 + !foo configured 1.0.0 + !libbaz [t2/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + !libbaz [t2/] configured 1.0.0 + EOO + } + + : copy-unhold-point + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbaz --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbaz configured 1.0.0 + EOO + + $* foo ?libbaz +{ --config-name t2 } <<EOI 2>>~%EOE%; + y + EOI + % new libbuild2-bar/1.0.0 \[t1..bpkg.build2.\] \(required by foo\)% + % new libbaz/1.0.0 \[t2.\] \(required by foo\)% + % new foo/1.0.0% + %continue\? \[Y.n\] fetched libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[t2.\]% + %unpacked libbaz/1.0.0 \[t2.\]% + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %configured libbaz/1.0.0 \[t2.\]% + configured foo/1.0.0 + %info: t1.+foo-1.0.0.+ is up to date% + updated foo/1.0.0 + EOE + + $pkg_status -d t1 -r >>/EOO + !libbaz configured 1.0.0 + !foo configured 1.0.0 + libbaz [t2/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + EOO + } + + : copy-repoint + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_create -d h1 --type host --name h1 &h1/***; + $cfg_create -d h2 --type host --name h2 &h2/***; + + $cfg_link -d t1 h1; + $cfg_link -d t1 h2; + + $cfg_link -d t2 h1; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbar ?foo +{ --config-name h1 } <<EOI 2>>~%EOE%; + y + EOI + % new libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(required by foo \[h1.\]\)% + % new libbaz/1.0.0 \[h1.\] \(required by foo \[h1.\]\)% + % new foo/1.0.0 \[h1.\] \(required by libbar\)% + new libbaz/1.0.0 (required by libbar) + new libbar/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[h1.\]% + %unpacked libbaz/1.0.0 \[h1.\]% + %fetched foo/1.0.0 \[h1.\]% + %unpacked foo/1.0.0 \[h1.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + %configured libbaz/1.0.0 \[h1.\]% + %configured foo/1.0.0 \[h1.\]% + configured libbaz/1.0.0 + configured libbar/1.0.0 + %info: t1.+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -d t1 -r >>/EOO; + !libbar configured 1.0.0 + foo [h1/] configured 1.0.0 + libbaz [h1/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + test.arguments = $regex.apply($test.arguments, t1, t2); + + $* libbox ?foo +{ --config-name h1 } <<EOI 2>>~%EOE%; + y + EOI + % update foo/1.0.0 \[h1.\]% + new libbaz/1.0.0 (required by libbox) + new libbox/1.0.0 + continue? [Y/n] fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + configured libbaz/1.0.0 + configured libbox/1.0.0 + %info: t2.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -d t2 -r >>/EOO; + !libbox configured 1.0.0 + foo [h1/] configured 1.0.0 + libbaz [h1/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + test.arguments = $regex.apply($test.arguments, t2, t1); + + $* ?foo +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + y + EOI + % new libbuild2-bar/1.0.0 \[h2..bpkg.build2.\] \(required by foo \[h2.\]\)% + % new libbaz/1.0.0 \[h2.\] \(required by foo \[h2.\]\)% + % new foo/1.0.0 \[h2.\] \(required by libbar\)% + % reconfigure libbar/1.0.0 \(dependent of foo \[h2.\]\)% + continue? [Y/n] update dependent packages? [Y/n] disfigured libbar/1.0.0 + %fetched libbuild2-bar/1.0.0 \[h2..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h2..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[h2.\]% + %unpacked libbaz/1.0.0 \[h2.\]% + %fetched foo/1.0.0 \[h2.\]% + %unpacked foo/1.0.0 \[h2.\]% + %configured libbuild2-bar/1.0.0 \[h2..bpkg.build2.\]% + %configured libbaz/1.0.0 \[h2.\]% + %configured foo/1.0.0 \[h2.\]% + configured libbar/1.0.0 + %info: t1.+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -d t1 -r >>/EOO; + !libbar configured 1.0.0 + foo [h2/] configured 1.0.0 + libbaz [h2/] configured 1.0.0 + libbuild2-bar [h2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_status -d t2 -r >>/EOO + !libbox configured 1.0.0 + foo [h1/] configured 1.0.0 + libbaz [h1/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + } + + : copy-repoint-drop + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* foo --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + EOO + + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + $* libbaz +{ --config-name t2 } <<EOI 2>>~%EOE%; + y + y + EOI + 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.\]% + %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 + + $pkg_status -d t1 --link -r >>/EOO + !foo configured 1.0.0 + !libbaz [t2/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + !libbaz [t2/] configured 1.0.0 + EOO + } + + : drop-repointed + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* foo --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + EOO + + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + $* ?foo libbaz +{ --config-name t2 } --verbose 5 <<EOI 2>>~%EOE%; + y + EOI + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + %trace: collect_build: add libbaz/1.0.0 \[t2.\]% + %trace: collect_build_prerequisites: begin libbaz/1.0.0 \[t2.\]% + %trace: collect_build_prerequisites: end libbaz/1.0.0 \[t2.\]% + %.* + trace: collect_build_prerequisites: begin foo/1.0.0 + %.* + %trace: collect_build_prerequisites: no cfg-clause for dependency libbaz/1.0.0 \[t2.\] of dependent foo/1.0.0% + trace: collect_build_prerequisites: end foo/1.0.0 + %.* + trace: execute_plan: simulate: yes + %.* + trace: evaluate_dependency: libbaz/1.0.0: unused + %.* + trace: evaluate_dependency: foo/1.0.0: unused + %.* + trace: pkg_build: refine package collection/plan execution + %.* + 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 + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + %trace: collect_build: add libbaz/1.0.0 \[t2.\]% + %trace: collect_build_prerequisites: begin libbaz/1.0.0 \[t2.\]% + %trace: collect_build_prerequisites: end libbaz/1.0.0 \[t2.\]% + trace: collect_build: apply version replacement for foo/1.0.0 + trace: collect_build: replacement: drop + %.* + trace: execute_plan: simulate: yes + %.* + %trace: evaluate_dependency: libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]: unused% + %.* + trace: pkg_build: refine package collection/plan execution + %.* + trace: execute_plan: simulate: yes + %.* + % 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 + %.* + disfigured libbaz/1.0.0 + %.* + %disfigured libbuild2-bar/1.0.0 \[t1..bpkg.build2.\]% + %.* + %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% + %.* + %updated libbaz/1.0.0 \[t2.\]% + %.* + EOE + + $pkg_status -d t1 --link -r >>/EOO + !libbaz [t2/] configured 1.0.0 + EOO + } + + : dependency-repointed + : + { + $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/t7a && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* foo --yes 2>!; + + $pkg_status -d h1 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO + + $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; + + $* libbar libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + EOI + 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.\]% + 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.+libbar-1.0.0.+ is up to date% + %updated libbaz/1.0.0 \[h2.\]% + updated libbar/1.0.0 + EOE + + $pkg_status -d h1 --link -r >>/EOO + !foo configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + EOO + } + + : dependency-repointed-system + : + { + $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/t7a && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* foo --yes 2>!; + + $pkg_status -d h1 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO + + $* libbar '?sys:foo/1.2.0' +{ --config-name h1 } \ + ?libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + EOI + % 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.\]% + %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 sys:foo/1.2.0 + %configured libbaz/1.0.0 \[h2.\]% + configured libbar/1.0.0 + %info: h1.+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -d h1 -r >>/EOO; + !libbar configured 1.0.0 + foo configured,system !1.2.0 + libbaz [h2/] configured 1.0.0 + EOO + + $* ?foo ?libbaz <<EOI 2>>~%EOE%; + y + y + EOI + % drop libbaz/1.0.0 \[h2.\] \(unused\)% + % new libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(required by foo\)% + new libbaz/1.0.0 (required by foo, libbar) + downgrade foo/1.0.0 + reconfigure libbar/1.0.0 (dependent of libbaz) + continue? [Y/n] update dependent packages? [Y/n] disfigured libbar/1.0.0 + purged foo/1.2.0 + %disfigured libbaz/1.0.0 \[h2.\]% + %purged libbaz/1.0.0 \[h2.\]% + %fetched libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + configured libbaz/1.0.0 + configured foo/1.0.0 + configured libbar/1.0.0 + %info: h1.+libbar-1.0.0.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -d h1 -r >>/EOO + !libbar configured 1.0.0 + foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + } + + : orphan-repointed + : + { + $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_remove -d h1 $rep/t7b; + $rep_add -d h1 $rep/t7a && $rep_fetch -d h1; + + $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; + + $* 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 + : + { + $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/t7a && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* foo --yes 2>!; + + $pkg_status -d h1 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO + + $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; + + $* libbar ?foo libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + EOI + 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.\]% + 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.+libbar-1.0.0.+ is up to date% + %updated libbaz/1.0.0 \[h2.\]% + updated libbar/1.0.0 + EOE + + $pkg_status -d h1 --link -r >>/EOO + !libbar configured 1.0.0 + foo configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + !libbaz [h2/] configured 1.0.0 + EOO + } + + : satisfy + : + { + $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 h2 $rep/t7b && $rep_fetch -d h2; + + test.arguments = $regex.apply($test.arguments, cfg, h2); + + $* foo --yes 2>!; + + $rep_add -d h1 $rep/t7a && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, h2, h1); + + $* foo ?libbaz <<EOI 2>>~%EOE%; + y + EOI + % new libbuild2-bar/1.0.0 \[h1..bpkg.build2.\] \(required by foo\)% + new libbaz/1.0.0 (required by foo) + new foo/1.0.0 + %continue\? \[Y.n\] fetched libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1..bpkg.build2.\]% + configured libbaz/1.0.0 + configured foo/1.0.0 + %info: h1.+foo-1.0.0.+ is up to date% + updated foo/1.0.0 + EOE + + $pkg_status -d h1 --link -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + !foo [h2/] configured 1.1.0 + libbaz [h2/] configured 1.1.0 + EOO + + $* ?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 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 + + $* ?libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + n + EOI + 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 + EOE + + $pkg_status -d h1 --link -r >>/EOO + !foo configured 1.0.0 + libbaz [h2/] configured 1.1.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + !foo [h2/] configured 1.1.0 + libbaz [h2/] configured 1.1.0 + EOO + } + + : upgrade-repointed + : + { + $cfg_create -d t1 --name t1 &t1/***; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbar --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbar configured 1.0.0 + foo [t1/.bpkg/host/] configured 1.0.0 + libbaz [t1/.bpkg/host/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $cfg_create -d h1 --type host --name h1 &h1/***; + + $cfg_link -d t1 h1 2>!; + + $rep_add -d t1 $rep/t7b && $rep_fetch -d t1; + + $* libbar ?foo +{ --config-name h1 } <<EOI 2>>~%EOE%; + y + EOI + % 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.\]% + 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: t1.+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -d t1 -r >>/EOO + !libbar configured 1.1.0 + foo [h1/] configured 1.1.0 + libbaz [h1/] configured 1.1.0 + libbaz configured 1.0.0 available 1.1.0 + EOO + } + + : upgrade-repointed-dependency + : + { + $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/t7a && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* libbar --yes 2>!; + + $pkg_status -d h1 -r >>/EOO; + !libbar configured 1.0.0 + foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $rep_add -d h1 $rep/t7b && $rep_fetch -d h1; + + $* libbar ?foo ?libbaz +{ --config-name h2 } <<EOI 2>>~%EOE%; + y + y + EOI + % 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.\]% + %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 + unpacked libbar/1.1.0 + %configured libbaz/1.1.0 \[h2.\]% + configured foo/1.1.0 + configured libbar/1.1.0 + %info: h1.+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -d h1 -r >>/EOO + !libbar configured 1.1.0 + foo configured 1.1.0 + libbaz [h2/] configured 1.1.0 + libbaz [h2/] configured 1.1.0 + EOO + } + + : upgrade-prerequisite-replacement + : + { + $cfg_create -d t1 --name t1 &t1/***; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbar --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbar configured 1.0.0 + foo [t1/.bpkg/host/] configured 1.0.0 + libbaz [t1/.bpkg/host/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $cfg_create -d t2 --name t2 &t2/***; + + $rep_add -d t2 $rep/t7a && $rep_fetch -d t2; + + test.arguments = $regex.apply($test.arguments, t1, t2); + + $* libbaz --yes 2>!; + + $cfg_link -d t1 t2 2>!; + + $rep_add -d t2 $rep/t7b && $rep_fetch -d t2; + + test.arguments = $regex.apply($test.arguments, t2, t1); + + $* libbaz +{ --config-name t2 } <<EOI 2>>~%EOE%; + y + y + EOI + 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 \[t2.\]% + disfigured libbaz/1.0.0 + purged libbaz/1.0.0 + %fetched libbaz/1.1.0 \[t2.\]% + %unpacked libbaz/1.1.0 \[t2.\]% + %configured libbaz/1.1.0 \[t2.\]% + configured libbar/1.0.0 + %info: t2.+libbaz-1.1.0.+ is up to date% + %info: t1.+libbar-1.0.0.+ is up to date% + %updated libbaz/1.1.0 \[t2.\]% + updated libbar/1.0.0 + EOE + + $pkg_status -d t1 --link -r >>/EOO + !libbar configured 1.0.0 + foo [t1/.bpkg/host/] configured 1.0.0 + libbaz [t1/.bpkg/host/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + !libbaz [t2/] configured 1.1.0 + !libbaz [t2/] configured 1.1.0 + EOO + } + + : copy-upgrade-dependency-tree + : + { + $cfg_create -d t1 --name t1 &t1/***; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libbar --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libbar configured 1.0.0 + foo [t1/.bpkg/host/] configured 1.0.0 + libbaz [t1/.bpkg/host/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $cfg_create -d t2 --name t2 &t2/***; + + $cfg_link -d t1 t2 2>!; + + $rep_add -d t2 $rep/t7b && $rep_fetch -d t2; + + $* libbar +{ --config-name t2 } <<EOI 2>>~%EOE%; + y + EOI + % new libbaz/1.1.0 \[t2..bpkg.host.\] \(required by foo \[t2..bpkg.host.\]\)% + % new foo/1.1.0 \[t2..bpkg.host.\] \(required by libbar \[t2.\]\)% + % new libbaz/1.1.0 \[t2.\] \(required by libbar \[t2.\]\)% + % new libbar/1.1.0 \[t2.\]% + %continue\? \[Y/n\] fetched libbaz/1.1.0 \[t2..bpkg.host.\]% + %unpacked libbaz/1.1.0 \[t2..bpkg.host.\]% + %fetched foo/1.1.0 \[t2..bpkg.host.\]% + %unpacked foo/1.1.0 \[t2..bpkg.host.\]% + %fetched libbaz/1.1.0 \[t2.\]% + %unpacked libbaz/1.1.0 \[t2.\]% + %fetched libbar/1.1.0 \[t2.\]% + %unpacked libbar/1.1.0 \[t2.\]% + %configured libbaz/1.1.0 \[t2..bpkg.host.\]% + %configured foo/1.1.0 \[t2..bpkg.host.\]% + %configured libbaz/1.1.0 \[t2.\]% + %configured libbar/1.1.0 \[t2.\]% + %info: t2.+libbar-1.1.0.+ is up to date% + %updated libbar/1.1.0 \[t2.\]% + EOE + + $pkg_status -d t1 --link -r >>/EOO + !libbar configured 1.0.0 + foo [t1/.bpkg/host/] configured 1.0.0 + libbaz [t1/.bpkg/host/] configured 1.0.0 + libbuild2-bar [t1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + !libbar [t2/] configured 1.1.0 + foo [t2/.bpkg/host/] configured 1.1.0 + libbaz [t2/.bpkg/host/] configured 1.1.0 + libbaz [t2/] configured 1.1.0 + EOO + } + + : repointed-dependent-indirect-dependency-upgrade + : + { + $cfg_create -d t1 --name t1 &t1/***; + $cfg_create -d t2 --name t2 &t2/***; + $cfg_create -d h1 --name h1 --type host &h1/***; + + $cfg_link -d t1 t2 2>!; + $cfg_link -d t1 h1 2>!; + $cfg_link -d t2 h1 2>!; + + $rep_add -d t1 $rep/t7a && $rep_fetch -d t1; + + test.arguments = $regex.apply($test.arguments, cfg, t1); + + $* libfix --yes 2>!; + + $pkg_status -d t1 -r >>/EOO; + !libfix configured 1.0.0 + libbar configured 1.0.0 + foo [h1/] configured 1.0.0 + libbaz [h1/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + libbox configured 1.0.0 + foo [h1/] configured 1.0.0 + libbaz [h1/] configured 1.0.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + libfax configured 1.0.0 + EOO + + $rep_add -d t1 $rep/t7b && $rep_fetch -d t1; + $rep_add -d t2 $rep/t7b && $rep_fetch -d t2; + $rep_add -d h1 $rep/t7b && $rep_fetch -d h1; + + $* libfix libfax +{ --config-name t2 } foo +{ --config-name h1 } <<EOI 2>>~%EOE%; + y + y + EOI + % drop libfax/1.0.0 \(unused\)% + % new libfax/1.0.0 \[t2.\]% + % 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 libbar \(dependent of foo \[h1.\]\)% + % 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 libbox/1.0.0 + disfigured libbar/1.0.0 + %disfigured foo/1.0.0 \[h1.\]% + %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.\]% + %fetched foo/1.1.0 \[h1.\]% + %unpacked foo/1.1.0 \[h1.\]% + %configured libfax/1.0.0 \[t2.\]% + %configured libbaz/1.1.0 \[h1.\]% + %configured foo/1.1.0 \[h1.\]% + 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.+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 libbar/1.0.0 + updated libbox/1.0.0 + EOE + + $pkg_status -d t1 --link -r >>/EOO + !libfix configured 1.0.0 + libbar configured 1.0.0 available 1.1.0 + !foo [h1/] configured 1.1.0 + libbaz [h1/] configured 1.1.0 + libbaz configured 1.0.0 available 1.1.0 + libbox configured 1.0.0 available 1.1.0 + !foo [h1/] configured 1.1.0 + libbaz [h1/] configured 1.1.0 + libbaz configured 1.0.0 available 1.1.0 + !libfax [t2/] configured 1.0.0 + !libfax [t2/] configured 1.0.0 + !foo [h1/] configured 1.1.0 + libbaz [h1/] configured 1.1.0 + EOO + } + } + + : build2-module-dep + : + { + +$clone_root_cfg && $rep_add $rep/t7a && $rep_fetch + + : private-config + : + { + $clone_cfg; + + $* libbiz <<EOI 2>>~%EOE% &cfg/.bpkg/build2/*** &cfg/.bpkg/host/***; + y + EOI + % new libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new libbaz/1.0.0 \[cfg..bpkg.host.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new foo/1.0.0 \[cfg..bpkg.host.\] \(required by libbiz\)% + % new libbaz/1.0.0 \[cfg..bpkg.build2.\] \(required by libbuild2-foo \[cfg..bpkg.build2.\]\)% + % new libbuild2-foo/1.0.0 \[cfg..bpkg.build2.\] \(required by libbiz\)% + new libbaz/1.0.0 (required by libbiz) + new libbiz/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[cfg..bpkg.host.\]% + %unpacked libbaz/1.0.0 \[cfg..bpkg.host.\]% + %fetched foo/1.0.0 \[cfg..bpkg.host.\]% + %unpacked foo/1.0.0 \[cfg..bpkg.host.\]% + %fetched libbaz/1.0.0 \[cfg..bpkg.build2.\]% + %unpacked libbaz/1.0.0 \[cfg..bpkg.build2.\]% + %fetched libbuild2-foo/1.0.0 \[cfg..bpkg.build2.\]% + %unpacked libbuild2-foo/1.0.0 \[cfg..bpkg.build2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg..bpkg.host.\]% + %configured foo/1.0.0 \[cfg..bpkg.host.\]% + %configured libbaz/1.0.0 \[cfg..bpkg.build2.\]% + %configured libbuild2-foo/1.0.0 \[cfg..bpkg.build2.\]% + configured libbaz/1.0.0 + configured libbiz/1.0.0 + %info: cfg.+libbiz-1.0.0.+ is up to date% + updated libbiz/1.0.0 + EOE + + $pkg_status -d cfg -r >>/EOO; + !libbiz configured 1.0.0 + foo [cfg/.bpkg/host/] configured 1.0.0 + libbaz [cfg/.bpkg/host/] configured 1.0.0 + libbuild2-bar [cfg/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-foo [cfg/.bpkg/build2/] configured 1.0.0 + libbaz [cfg/.bpkg/build2/] configured 1.0.0 + EOO + + $pkg_drop libbiz + } + + : external-config + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type build2 --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $cfg_create -d cfg3 --type host --name cfg3 &cfg3/***; + $cfg_link -d cfg cfg3; + + $* libbiz <<EOI 2>>~%EOE%; + y + EOI + % new libbuild2-bar/1.0.0 \[cfg3..bpkg.build2.\] \(required by foo \[cfg3.\]\)% + % new libbaz/1.0.0 \[cfg3.\] \(required by foo \[cfg3.\]\)% + % new foo/1.0.0 \[cfg3.\] \(required by libbiz\)% + % new libbaz/1.0.0 \[cfg2.\] \(required by libbuild2-foo \[cfg2.\]\)% + % new libbuild2-foo/1.0.0 \[cfg2.\] \(required by libbiz\)% + new libbaz/1.0.0 (required by libbiz) + new libbiz/1.0.0 + %continue\? \[Y/n\] fetched libbuild2-bar/1.0.0 \[cfg3..bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg3..bpkg.build2.\]% + %fetched libbaz/1.0.0 \[cfg3.\]% + %unpacked libbaz/1.0.0 \[cfg3.\]% + %fetched foo/1.0.0 \[cfg3.\]% + %unpacked foo/1.0.0 \[cfg3.\]% + %fetched libbaz/1.0.0 \[cfg2.\]% + %unpacked libbaz/1.0.0 \[cfg2.\]% + %fetched libbuild2-foo/1.0.0 \[cfg2.\]% + %unpacked libbuild2-foo/1.0.0 \[cfg2.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbiz/1.0.0 + unpacked libbiz/1.0.0 + %configured libbuild2-bar/1.0.0 \[cfg3..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg3.\]% + %configured foo/1.0.0 \[cfg3.\]% + %configured libbaz/1.0.0 \[cfg2.\]% + %configured libbuild2-foo/1.0.0 \[cfg2.\]% + configured libbaz/1.0.0 + configured libbiz/1.0.0 + %info: cfg.+libbiz-1.0.0.+ is up to date% + updated libbiz/1.0.0 + EOE + + $pkg_status -d cfg -r >>/EOO; + !libbiz configured 1.0.0 + foo [cfg3/] configured 1.0.0 + libbaz [cfg3/] configured 1.0.0 + libbuild2-bar [cfg3/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-foo [cfg2/] configured 1.0.0 + libbaz [cfg2/] configured 1.0.0 + EOO + + $pkg_drop libbiz + } + + : build2-config + : + { + $cfg_create -d cfg --type build2 &cfg/***; + $rep_add $rep/t7a && $rep_fetch; + + $* libbiz 2>>EOE != 0 + error: build-time dependency foo in build system module configuration + info: build system modules cannot have build-time dependencies + info: while satisfying libbiz/1.0.0 + EOE + } + + : duplicates + : + { + $cfg_create -d cfg &cfg/***; + + $cfg_create -d cfg2 --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $cfg_create -d cfg3 --name cfg3 &cfg3/***; + $cfg_link -d cfg cfg3; + + $* "libbiz@$rep/t7a" +{ --config-name cfg2 } --yes --trust-yes 2>!; + $* "libbuz@$rep/t7a" +{ --config-name cfg3 } --yes --trust-yes 2>!; + + $* "libbix@$rep/t7a" --trust-yes 2>>/~%EOE% != 0 + %(added|fetching).+%{2} + error: building build system module libbuild2-bar in multiple configurations + % info: cfg(2|3)/.bpkg/build2/%{2} + EOE + } + } + + : multiple-configs + : + { + cfg_uuid = '18f48b4b-b5d9-4712-b98c-1930df1c4228' + cfg2_uuid = '28f48b4b-b5d9-4712-b98c-1930df1c4228' + cfg3_uuid = '38f48b4b-b5d9-4712-b98c-1930df1c4228' + cfg4_uuid = '48f48b4b-b5d9-4712-b98c-1930df1c4228' + cfg5_uuid = '58f48b4b-b5d9-4712-b98c-1930df1c4228' + + : 2-current-configs + : + { + $cfg_create -d cfg --uuid $cfg_uuid &cfg/***; + $cfg_create -d cfg2 --uuid $cfg2_uuid &cfg2/***; + $cfg_create -d cfg3 --uuid $cfg3_uuid --type build2 &cfg3/***; + + $cfg_link -d cfg cfg3; + $cfg_link -d cfg2 cfg3; + + $rep_add $rep/t7a && $rep_fetch; + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + test.arguments += -d cfg2; # Now refers 2 current dirs: cfg/ and cfg2/. + + # While at it, make sure --config-uuid is only allowed for multiple + # current configurations. + # + $* foo +{ --config-id 1 } 2>>EOE != 0; + error: --config-id specified for multiple current configurations + info: use --config-uuid to specify configurations in this mode + info: while validating options for foo + EOE + + $* foo +{ --config-name cfg2 } 2>>EOE != 0; + error: --config-name specified for multiple current configurations + info: use --config-uuid to specify configurations in this mode + info: while validating options for foo + EOE + + # While at it, make sure a package must have the configuration + # specified. + # + $* foo 2>>EOE != 0; + error: no configuration specified for foo + info: configuration must be explicitly specified for each package in multi-configurations mode + info: use --config-uuid to specify its configuration + EOE + + # Build foo in cfg/ and cfg2/ with its libbaz dependency colocated and + # libbuild2-bar dependency shared in cfg3/. + # + $* foo +{ --config-uuid $cfg_uuid --config-uuid $cfg2_uuid } <<EOI 2>>~%EOE%; + y + EOI + % new libbaz/1.0.0 \[cfg.\] \(required by foo \[cfg.\]\)% + % new libbuild2-bar/1.0.0 \[cfg3.\] \(required by foo \[cfg.\], foo \[cfg2.\]\)% + % new foo/1.0.0 \[cfg.\]% + % new libbaz/1.0.0 \[cfg2.\] \(required by foo \[cfg2.\]\)% + % new foo/1.0.0 \[cfg2.\]% + %continue\? \[Y/n\] fetched libbaz/1.0.0 \[cfg.\]% + %unpacked libbaz/1.0.0 \[cfg.\]% + %fetched libbuild2-bar/1.0.0 \[cfg3.\]% + %unpacked libbuild2-bar/1.0.0 \[cfg3.\]% + %fetched foo/1.0.0 \[cfg.\]% + %unpacked foo/1.0.0 \[cfg.\]% + %fetched libbaz/1.0.0 \[cfg2.\]% + %unpacked libbaz/1.0.0 \[cfg2.\]% + %fetched foo/1.0.0 \[cfg2.\]% + %unpacked foo/1.0.0 \[cfg2.\]% + %configured libbaz/1.0.0 \[cfg.\]% + %configured libbuild2-bar/1.0.0 \[cfg3.\]% + %configured foo/1.0.0 \[cfg.\]% + %configured libbaz/1.0.0 \[cfg2.\]% + %configured foo/1.0.0 \[cfg2.\]% + %info: cfg.+foo-1.0.0.+ is up to date% + %info: cfg2.+foo-1.0.0.+ is up to date% + %updated foo/1.0.0 \[cfg.\]% + %updated foo/1.0.0 \[cfg2.\]% + EOE + + $pkg_status -d cfg -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [cfg3/] configured 1.0.0 + EOO + + $pkg_status -d cfg2 -r >>/EOO; + !foo configured 1.0.0 + libbaz configured 1.0.0 + libbuild2-bar [cfg3/] configured 1.0.0 + EOO + + # Move libbuild2-bar to cfg4/ and libbaz to cfg5/. + # + $cfg_create -d cfg4 --uuid $cfg4_uuid --type build2 &cfg4/***; + $cfg_create -d cfg5 --uuid $cfg5_uuid &cfg5/***; + + $cfg_link -d cfg cfg4; + $cfg_link -d cfg2 cfg4; + $cfg_link -d cfg cfg5; + $cfg_link -d cfg2 cfg5; + + $* ?libbuild2-bar +{ --config-uuid $cfg4_uuid } \ + ?libbaz +{ --config-uuid $cfg5_uuid } <<EOI 2>>~%EOE%; + y + y + EOI + % drop libbaz/1.0.0 \[cfg2.\] \(unused\)% + % drop libbuild2-bar/1.0.0 \[cfg3.\] \(unused\)% + % 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 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.\]% + %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: cfg2.+foo-1.0.0.+ is up to date% + %info: cfg.+foo-1.0.0.+ is up to date% + %updated foo/1.0.0 \[cfg2.\]% + %updated foo/1.0.0 \[cfg.\]% + EOE + + $pkg_status -d cfg -r >>/EOO; + !foo configured 1.0.0 + libbaz [cfg5/] configured 1.0.0 + libbuild2-bar [cfg4/] configured 1.0.0 + EOO + + $pkg_status -d cfg2 -r >>/EOO; + !foo configured 1.0.0 + libbaz [cfg5/] configured 1.0.0 + libbuild2-bar [cfg4/] configured 1.0.0 + EOO + + $rep_add $rep/t7b && $rep_fetch; + + $* foo ?libbaz --config-uuid $cfg_uuid <<EOI 2>>~%EOE%; + y + EOI + % new libbaz/1.1.0 \[cfg.\] \(required by foo \[cfg.\]\)% + % upgrade foo/1.1.0 \[cfg.\]% + %continue\? \[Y/n\] disfigured foo/1.0.0 \[cfg.\]% + %fetched libbaz/1.1.0 \[cfg.\]% + %unpacked libbaz/1.1.0 \[cfg.\]% + %fetched foo/1.1.0 \[cfg.\]% + %unpacked foo/1.1.0 \[cfg.\]% + %configured libbaz/1.1.0 \[cfg.\]% + %configured foo/1.1.0 \[cfg.\]% + %info: cfg.+foo-1.1.0.+ is up to date% + %updated foo/1.1.0 \[cfg.\]% + EOE + + $pkg_status -d cfg -r >>/EOO; + !foo configured 1.1.0 + libbaz configured 1.1.0 + EOO + + $pkg_status -d cfg2 -r >>/EOO; + !foo configured 1.0.0 + libbaz [cfg5/] configured 1.0.0 + libbuild2-bar [cfg4/] configured 1.0.0 + EOO + + $rep_add -d cfg2 $rep/t7b && $rep_fetch -d cfg2; + + $* --no-move foo +{ --config-uuid $cfg2_uuid } \ + ?libbaz +{ --config-uuid $cfg5_uuid } <<EOI 2>>~%EOE%; + y + EOI + % 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 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.\]% + %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: cfg2.+foo-1.1.0.+ is up to date% + %updated foo/1.1.0 \[cfg2.\]% + EOE + + $pkg_status -d cfg2 -r >>/EOO + !foo configured 1.1.0 + libbaz [cfg5/] configured 1.1.0 + EOO + } + + : variable + : + { + $cfg_create -d cfg --uuid $cfg_uuid &cfg/***; + $cfg_create -d cfg2 --uuid $cfg2_uuid &cfg2/***; + $cfg_create -d cfg3 --uuid $cfg3_uuid --type host &cfg3/***; + + $cfg_link -d cfg cfg3; + $cfg_link -d cfg2 cfg3; + + $rep_add $rep/t7a && $rep_fetch; + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + test.arguments += -d cfg2; # Now refers 2 current dirs: cfg/ and cfg2/. + + $* --configure-only \ + { --config-uuid $cfg_uuid config.libbaz=true }+ libbaz \ + { --config-uuid $cfg2_uuid }+ libbaz 2>!; + + sed -n -e 's/^config.libbaz = (.+)$/\1/p' \ + cfg/libbaz-1.0.0/build/config.build >'true'; + + sed -n -e 's/^config.libbaz = (.+)$/\1/p' \ + cfg2/libbaz-1.0.0/build/config.build >'false' + } + + : system-dependency + : + { + $cfg_create -d cfg --uuid $cfg_uuid &cfg/***; + $cfg_create -d cfg2 --uuid $cfg2_uuid &cfg2/***; + $cfg_create -d cfg3 --uuid $cfg3_uuid --type host &cfg3/***; + + $cfg_link -d cfg cfg3; + $cfg_link -d cfg2 cfg3; + + $rep_add $rep/t7a && $rep_fetch; + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + test.arguments += -d cfg2; # Now refers 2 current dirs: cfg/ and cfg2/. + + $* libbox +{ --config-uuid $cfg_uuid --config-uuid $cfg2_uuid } \ + '?sys:foo' <<EOI 2>>~%EOE%; + y + EOI + % new libbaz/1.0.0 \[cfg.\] \(required by libbox \[cfg.\]\)% + % configure sys:foo/\* \[cfg3.\] \(required by libbox \[cfg.\], libbox \[cfg2.\]\)% + % new libbox/1.0.0 \[cfg.\]% + % new libbaz/1.0.0 \[cfg2.\] \(required by libbox \[cfg2.\]\)% + % new libbox/1.0.0 \[cfg2.\]% + %continue\? \[Y/n\] fetched libbaz/1.0.0 \[cfg.\]% + %unpacked libbaz/1.0.0 \[cfg.\]% + %fetched libbox/1.0.0 \[cfg.\]% + %unpacked libbox/1.0.0 \[cfg.\]% + %fetched libbaz/1.0.0 \[cfg2.\]% + %unpacked libbaz/1.0.0 \[cfg2.\]% + %fetched libbox/1.0.0 \[cfg2.\]% + %unpacked libbox/1.0.0 \[cfg2.\]% + %configured libbaz/1.0.0 \[cfg.\]% + %configured sys:foo/\* \[cfg3.\]% + %configured libbox/1.0.0 \[cfg.\]% + %configured libbaz/1.0.0 \[cfg2.\]% + %configured libbox/1.0.0 \[cfg2.\]% + %info: cfg.+libbox-1.0.0.+ is up to date% + %info: cfg2.+libbox-1.0.0.+ is up to date% + %updated libbox/1.0.0 \[cfg.\]% + %updated libbox/1.0.0 \[cfg2.\]% + EOE + + $pkg_status -d cfg -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg3/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_status -d cfg2 -r >>/EOO + !libbox configured 1.0.0 + foo [cfg3/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + } + + : build2-module-different-clusters + : + : Test that the same module can successfully be built in 2 configurations + : if they belong to different linked configuration clusters. + : + { + $cfg_create -d cfg --uuid $cfg_uuid &cfg/***; + $cfg_create -d cfg2 --uuid $cfg2_uuid &cfg2/***; + + test.arguments += -d cfg2; # Now refers 2 current dirs: cfg/ and cfg2/. + + $* "libbiz@$rep/t7a" +{ --config-uuid $cfg_uuid } \ + "libbuz@$rep/t7a" +{ --config-uuid $cfg2_uuid } --yes --trust-yes 2>>~%EOE% + %(added|fetching) .+%{4} + %(fetched|unpacked) .+%{26} + %configured .+%{13} + %info: .+ is up to date%{2} + %updated .+%{2} + EOE + } + } + + : system + : + { + +$clone_root_cfg && $rep_add $rep/t7a && $rep_fetch + + : no-config + : + { + +$clone_cfg + + : linked + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* libbox '?sys:foo' <<EOI 2>>~%EOE%; + y + EOI + % configure sys:foo/\* \[cfg2.\] \(required by libbox\)% + new libbaz/1.0.0 (required by libbox) + new libbox/1.0.0 + continue? [Y/n] fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + %configured sys:foo/\* \[cfg2.\]% + configured libbaz/1.0.0 + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : private-host + : + { + $clone_cfg; + + $* libbox '?sys:foo' &cfg/.bpkg/host/*** <<EOI 2>>~%EOE%; + y + EOI + % configure sys:foo/\* \[cfg..bpkg.host.\] \(required by libbox\)% + new libbaz/1.0.0 (required by libbox) + new libbox/1.0.0 + continue? [Y/n] fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + %configured sys:foo/\* \[cfg..bpkg.host.\]% + configured libbaz/1.0.0 + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg/.bpkg/host/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : private-module + : + { + $clone_cfg; + + $* libbox '?sys:libbuild2-bar' &cfg/.bpkg/host/*** &cfg/.bpkg/build2/*** <<EOI 2>>~%EOE%; + y + EOI + % configure sys:libbuild2-bar/\* \[cfg..bpkg.build2.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new libbaz/1.0.0 \[cfg..bpkg.host.\] \(required by foo \[cfg..bpkg.host.\]\)% + % new foo/1.0.0 \[cfg..bpkg.host.\] \(required by libbox\)% + new libbaz/1.0.0 (required by libbox) + new libbox/1.0.0 + %continue\? \[Y/n\] fetched libbaz/1.0.0 \[cfg..bpkg.host.\]% + %unpacked libbaz/1.0.0 \[cfg..bpkg.host.\]% + %fetched foo/1.0.0 \[cfg..bpkg.host.\]% + %unpacked foo/1.0.0 \[cfg..bpkg.host.\]% + fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + %configured sys:libbuild2-bar/\* \[cfg..bpkg.build2.\]% + %configured libbaz/1.0.0 \[cfg..bpkg.host.\]% + %configured foo/1.0.0 \[cfg..bpkg.host.\]% + configured libbaz/1.0.0 + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg/.bpkg/host/] configured 1.0.0 + libbaz [cfg/.bpkg/host/] configured 1.0.0 + libbuild2-bar [cfg/.bpkg/build2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + } + + : config + : + { + +$clone_cfg + + : linked + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $cfg_create -d cfg3 --type host --name cfg3 &cfg3/***; + $cfg_link -d cfg cfg3; + + $* libbox '?sys:foo' +{ --config-name cfg3 } <<EOI 2>>~%EOE%; + y + EOI + % configure sys:foo/\* \[cfg3.\] \(required by libbox\)% + new libbaz/1.0.0 (required by libbox) + new libbox/1.0.0 + continue? [Y/n] fetched libbaz/1.0.0 + unpacked libbaz/1.0.0 + fetched libbox/1.0.0 + unpacked libbox/1.0.0 + %configured sys:foo/\* \[cfg3.\]% + configured libbaz/1.0.0 + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg3/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : src-sys + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* libbox --yes 2>!; + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured 1.0.0 + libbaz [cfg2/] configured 1.0.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $* '?sys:foo' <<EOI 2>>~%EOE%; + y + y + EOI + % drop libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(unused\)% + % drop libbaz/1.0.0 \[cfg2.\] \(unused\)% + % reconfigure sys:foo/\* \[cfg2.\]% + % reconfigure libbox \(dependent of foo \[cfg2.\]\)% + continue? [Y/n] update dependent packages? [Y/n] disfigured libbox/1.0.0 + %disfigured foo/1.0.0 \[cfg2.\]% + %disfigured libbaz/1.0.0 \[cfg2.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbaz/1.0.0 \[cfg2.\]% + %purged foo/1.0.0 \[cfg2.\]% + %configured sys:foo/\* \[cfg2.\]% + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : src-sys-upgrade + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $* libbox --yes 2>!; + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured 1.0.0 + libbaz [cfg2/] configured 1.0.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $* '?sys:foo/1.1.0' <<EOI 2>>~%EOE%; + y + y + EOI + % drop libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(unused\)% + % drop libbaz/1.0.0 \[cfg2.\] \(unused\)% + % reconfigure sys:foo/1.1.0 \[cfg2.\]% + % reconfigure libbox \(dependent of foo \[cfg2.\]\)% + continue? [Y/n] update dependent packages? [Y/n] disfigured libbox/1.0.0 + %disfigured foo/1.0.0 \[cfg2.\]% + %disfigured libbaz/1.0.0 \[cfg2.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbaz/1.0.0 \[cfg2.\]% + %purged foo/1.0.0 \[cfg2.\]% + %configured sys:foo/1.1.0 \[cfg2.\]% + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured,system !1.1.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : src-sys-unhold + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + $* libbox foo +{ --config-name cfg2 } --yes 2>!; + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + !foo [cfg2/] configured 1.0.0 + libbaz [cfg2/] configured 1.0.0 + libbuild2-bar [cfg2/.bpkg/build2/] configured 1.0.0 + libbaz configured 1.0.0 + EOO + + $* '?sys:foo' <<EOI 2>>~%EOE%; + y + y + EOI + % drop libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\] \(unused\)% + % drop libbaz/1.0.0 \[cfg2.\] \(unused\)% + % reconfigure/unhold sys:foo/\* \[cfg2.\]% + % reconfigure libbox \(dependent of foo \[cfg2.\]\)% + continue? [Y/n] update dependent packages? [Y/n] disfigured libbox/1.0.0 + %disfigured foo/1.0.0 \[cfg2.\]% + %disfigured libbaz/1.0.0 \[cfg2.\]% + %disfigured libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbuild2-bar/1.0.0 \[cfg2..bpkg.build2.\]% + %purged libbaz/1.0.0 \[cfg2.\]% + %purged foo/1.0.0 \[cfg2.\]% + %configured sys:foo/\* \[cfg2.\]% + configured libbox/1.0.0 + %info: cfg.+libbox-1.0.0.+ is up to date% + updated libbox/1.0.0 + EOE + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + + : sys-unhold + : + { + $clone_cfg; + + $cfg_create -d cfg2 --type host --name cfg2 &cfg2/***; + $cfg_link -d cfg cfg2; + + $rep_add -d cfg2 $rep/t7a && $rep_fetch -d cfg2; + + $* libbox 'sys:foo' +{ --config-name cfg2 } --yes 2>!; + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + !foo [cfg2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $* '?sys:foo'; + + $pkg_status -r >>/EOO; + !libbox configured 1.0.0 + foo [cfg2/] configured,system !* available 1.0.0 + libbaz configured 1.0.0 + EOO + + $pkg_drop libbox + } + } + } +} + +: 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 + } + } + } } |