aboutsummaryrefslogtreecommitdiff
path: root/tests/pkg-build.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pkg-build.testscript')
-rw-r--r--tests/pkg-build.testscript30903
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
+ }
+ }
+ }
}