From 1086739bca164d5fe9fd97eb5d7f7aefe3b42206 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 12 May 2022 18:22:33 +0300 Subject: Review-inspired changes --- bpkg/pkg-build.cxx | 255 ++++++++++++++++---- tests/pkg-build.testscript | 581 ++++++++++++++++++--------------------------- 2 files changed, 437 insertions(+), 399 deletions(-) diff --git a/bpkg/pkg-build.cxx b/bpkg/pkg-build.cxx index aee216a..e7a50f2 100644 --- a/bpkg/pkg-build.cxx +++ b/bpkg/pkg-build.cxx @@ -1459,6 +1459,36 @@ namespace bpkg return false; } + // Return true if the specified cluster is a subset of the shadow cluster, + // if present. + // + // Specifically, being a subset means that each dependent of the specified + // cluster is present in the shadow cluster and all its dependency + // positions are present in the respective shadow dependent's positions + // set. + // + bool + contains_in_shadow_cluster (const postponed_configuration& c) const + { + for (const auto& d: c.dependents) + { + auto i (shadow_cluster.find (d.first)); + + if (i == shadow_cluster.end ()) + return false; + + const positions& ps (i->second); + + for (const auto& dp: d.second.dependencies) + { + if (find (ps.begin (), ps.end (), dp.position) == ps.end ()) + return false; + } + } + + return true; + } + bool existing_dependent (const config_package& cp) const { @@ -1627,11 +1657,11 @@ namespace bpkg { postponed_configuration& c1 (*ri); - bool r (false); iterator j (i); // Merge the intersecting configurations. // + bool merged (false); for (++i; i != e; ++i) { postponed_configuration& c2 (*i); @@ -1652,7 +1682,7 @@ namespace bpkg l5 ([&]{trace << "merge " << c1 << " into " << c2;}); c2.merge (move (c1)); - // Mark configuration as the one being moved from for + // Mark configuration as the one being merged from for // subsequent erasing from the list. // c1.dependencies.clear (); @@ -1666,10 +1696,10 @@ namespace bpkg assert (!shadow_based || (c2.negotiated && *c2.negotiated)); c1.merge (move (c2)); - c2.dependencies.clear (); // Mark as moved from (see above). + c2.dependencies.clear (); // Mark as merged from (see above). } - r = true; + merged = true; if (single) break; @@ -1678,11 +1708,11 @@ namespace bpkg // Erase configurations which we have merged from. // - if (r) + if (merged) { i = j; - for (++i; i != end (); ) + for (++i; i != e; ) { if (!i->dependencies.empty ()) { @@ -1693,8 +1723,6 @@ namespace bpkg i = erase_after (j); } } - - return r; }; // Try to add based on the shadow cluster. @@ -1705,7 +1733,7 @@ namespace bpkg { postponed_configuration& c (*i); - if (c.contains_shadow_cluster (dependent, position)) + if (c.contains_in_shadow_cluster (dependent, position)) { postponed_configuration tc (move (dependent), existing, @@ -3923,6 +3951,13 @@ namespace bpkg postponed_deps, postponed_cfgs); } + else + l5 ([&]{trace << "dependency " + << b->available_name_version_db () + << " of dependent " + << pkg.available_name_version_db () + << " is already (being) recursively " + << "collected, skipping";}); } return true; @@ -4803,22 +4838,49 @@ namespace bpkg // Note: not recursive. // - collect_build (o, - move (p), - fdb, - rpt_depts, - apc, - true /* initial_collection */, - replaced_vers); + build_package* b (collect_build (o, + move (p), + fdb, + rpt_depts, + apc, + true /* initial_collection */, + replaced_vers)); + + assert (b != nullptr); // @@ Re-evaluate up-to the cluster's dependencies. // @@ TMP // - postponed_cfgs.add (move (cp), - true /* existing */, - make_pair (1, 1), - move (ds)); + { + b->dependencies = dependencies (); + + optional src_root (b->external_dir ()); + + optional out_root ( + src_root && !b->disfigure + ? dir_path (b->db.get ().config) /= b->name ().string () + : optional ()); + + b->skeleton = package_skeleton (o, + b->db, + *b->available, + b->config_vars, + move (src_root), + move (out_root)); + + build_package::dependency_alternatives_refs edas; + + edas.push_back ( + make_pair (ref (b->available->dependencies[0][0]), 0)); + + b->postponed_dependency_alternatives = move (edas); + + postponed_cfgs.add (move (cp), + true /* existing */, + make_pair (1, 1), + move (ds)); + } } } } @@ -4900,19 +4962,93 @@ namespace bpkg for (const auto& p: dependents) { - // @@ Can't we use the fact that we are past the last depends value - // to skip? - + // Select the dependency alternative for which configuration has + // been negotiated and collect this dependent starting from the next + // depends value. + // build_package* b (entered_build (p)); - assert (b != nullptr); // @@ TMP - //assert (b != nullptr && b->postponed_dependency_alternatives); - build_package_refs dep_chain; + // We should have been started recursively collecting the dependent + // and it should have been postponed. + // + assert (b != nullptr && + b->available != nullptr && + b->dependencies && + b->skeleton && + b->postponed_dependency_alternatives); + + // Select the dependency alternative (evaluate reflect if present, + // etc) and position to the next depends value (see + // collect_build_prerequisites() for details). + // + { + const bpkg::dependencies& deps (b->available->dependencies); + bpkg::dependencies& sdeps (*b->dependencies); + + size_t di (sdeps.size ()); + + // Skip the dependent if it has been already collected as some + // package's dependency or some such. + // + if (di == deps.size ()) + l5 ([&]{trace << "dependent " << b->available_name_version_db () + << " is already recursively collected, skipping";}); + + l5 ([&]{trace << "select cfg-negotiated dependency alternative " + << "for dependent " + << b->available_name_version_db ();}); + + // Find the postponed dependency alternative. + // + auto i (pcfg->dependents.find (p)); + + assert (i != pcfg->dependents.end () && + i->second.dependencies.size () == 1); + + const pair& dp ( + i->second.dependencies[0].position); + + assert (dp.first == sdeps.size () + 1); + + build_package::dependency_alternatives_refs pdas ( + move (*b->postponed_dependency_alternatives)); + + b->postponed_dependency_alternatives = nullopt; + + auto j (find_if (pdas.begin (), pdas.end (), + [&dp] (const auto& da) + { + return da.second + 1 == dp.second; + })); + + assert (j != pdas.end ()); + + const dependency_alternative& da (j->first); + + // Select the dependency alternative and position to the next + // depends value. + // + const dependency_alternatives_ex& das (deps[di]); + dependency_alternatives_ex sdas (das.buildtime, das.comment); + + sdas.emplace_back (nullopt /* enable */, + nullopt /* reflect */, + da.prefer, + da.accept, + da.require, + da /* dependencies */); + + sdeps.push_back (move (sdas)); - // @@ Need to evaluate reflects for the current position. + // Evaluate reflect, if present. + // + if (da.reflect) + b->skeleton->evaluate_reflect (*da.reflect, di); + } - // @@ Need to continue collecting this dependent from the next - // depends position. Increment something in build package. + // Continue recursively collecting the dependent. + // + build_package_refs dep_chain; collect_build_prerequisites ( o, @@ -4925,8 +5061,7 @@ namespace bpkg dep_chain, &postponed_repo, &postponed_alts, - numeric_limits::max (), // @@ TMP - // b->postponed_dependency_alternatives->size (), + 0 /* max_alt_index */, postponed_deps, postponed_cfgs); } @@ -5001,9 +5136,9 @@ namespace bpkg // list entries we cannot iterate using the iterator here. Also note // that the list size may not change during iterating. // - for (size_t i (0); i != postponed_cfgs.size (); ++i) + for (size_t ci (0); ci != postponed_cfgs.size (); ++ci) { - postponed_configuration* pc (&postponed_cfgs[i]); + postponed_configuration* pc (&postponed_cfgs[ci]); // Find the next configuration to try to negotiate, skipping the // already negotiated ones. @@ -5067,7 +5202,7 @@ namespace bpkg postponed_deps, postponed_cfgs); - pc = &postponed_cfgs[i]; + pc = &postponed_cfgs[ci]; l5 ([&]{trace << "cfg-negotiation of " << *pc << " failed due " << "to dependent " << e.dependent << ", adding " @@ -5104,21 +5239,55 @@ namespace bpkg postponed_deps, postponed_cfgs); - pc = &postponed_cfgs[i]; + pc = &postponed_cfgs[ci]; + + assert (!pc->negotiated); l5 ([&]{trace << "cfg-negotiation of " << *pc << " failed due " << "to non-negotiated clusters, force-merging " << "based on shadow cluster " << shadow;}); - pc->shadow (move (shadow)); + pc->set_shadow_cluster (move (shadow)); - // @@ TODO: Here we also need to go through all the - // non-negotiated clusters (the negotiated member is absent) - // and force-merge into this cluster those of them, which are - // subsets of the shadow cluster. Being a subset means that - // each its dependent is present in the shadow cluster with - // all its dependency positions being a subset of those for - // the respective dependent in the shadow cluster. + // Force-merge into this cluster those non-negotiated clusters + // which are subsets of the shadow cluster. + // + for (postponed_configuration& c: postponed_cfgs) + { + if (&c != pc && + !c.negotiated && + pc->contains_in_shadow_cluster (c)) + { + pc->merge (move (c)); + + // Mark configuration as the one being merged from for + // subsequent erasing from the list. + // + c.dependencies.clear (); + } + } + + // Erase clusters which we have merged from. Also re-translate + // the current cluster address into index which may change as a + // result of the merge. + // + auto i (postponed_cfgs.begin ()); + auto j (postponed_cfgs.before_begin ()); // Precedes iterator i. + + for (size_t k (0); i != postponed_cfgs.end (); ) + { + if (!i->dependencies.empty ()) + { + if (&*i == pc) + ci = k; + + ++i; + ++j; + ++k; + } + else + i = postponed_cfgs.erase_after (j); + } } } } diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index ebe41d1..2410214 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -4762,79 +4762,11 @@ test.options += --no-progress 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: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 - trace: postponed_configurations::add: add {foo | libfoo->{foo/1,1}} to {foo fox | libfoo->{foo/1,1 fox/1,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent foo/1.0.0 involves 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 fox | libfoo->{foo/1,1 fox/1,1}} failed due to dependent foo, adding shadow dependent and re-negotiating - trace: collect_build_postponed (1): begin - %.* - 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_prerequisites: resume 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 | libfoo->{foo/1,1}} to {foo fox | libfoo->{foo/1,1 fox/1,1}}? - trace: collect_build_prerequisites: dependent foo/1.0.0 is a shadow dependent for {foo fox | libfoo->{foo/1,1 fox/1,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent foo/1.0.0 involves non-negotiated configurations and results in {foo fox | libfoo->{foo/1,1 fox/1,1}}?, throwing merge_configuration - trace: collect_build_postponed (0): cfg-negotiation of {foo fox | libfoo->{foo/1,1 fox/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {foo fox | libfoo->{foo/1,1 fox/1,1}}? - trace: collect_build_postponed (1): begin - %.* - 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_prerequisites: resume 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 | libfoo->{foo/1,1}} to {foo fox | libfoo->{foo/1,1 fox/1,1}}? (shadow) - trace: collect_build_prerequisites: dependent foo/1.0.0 is a shadow dependent for {foo fox | libfoo->{foo/1,1 fox/1,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent foo/1.0.0 involves non-negotiated configurations and results in {foo fox | libfoo->{foo/1,1 fox/1,1}}?, throwing merge_configuration - ........... - EOE -#\ - $* foo fox fux 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 | libfoo->{fox/1,1}} to {foo | libfoo->{foo/1,1}} - trace: collect_build_prerequisites: postpone fox/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin - %.* - 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_prerequisites: resume foo/1.0.0 - %.* - trace: collect_build_prerequisites: skip being cfg-negotiated dependency libfoo/1.0.0 of dependent 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: skip being cfg-negotiated dependency libfoo/1.0.0 of dependent 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 @@ -4842,7 +4774,7 @@ test.options += --no-progress trace: execute_plan: simulate: yes %.* EOE -#\ + $pkg_status -r >>EOO; !foo configured 1.0.0 libfoo configured 1.0.0 @@ -5132,8 +5064,6 @@ test.options += --no-progress { $clone_cfg; - $* fux foo fix 2>!; -#\ $* fux foo fix 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -5191,6 +5121,7 @@ test.options += --no-progress trace: collect_build_prerequisites: postpone fix/1.0.0 trace: pkg_build: erase bogus postponement libfoo trace: pkg_build: bogus postponements erased, throwing + trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -5267,9 +5198,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency foo/1.0.0 of dependent 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 @@ -5279,9 +5209,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency libfoo/1.0.0 of dependent 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 @@ -5290,7 +5219,7 @@ test.options += --no-progress trace: execute_plan: simulate: yes %.* EOE -#\ + $pkg_status -r >>EOO; !fux configured 1.0.0 libfoo configured 1.0.0 @@ -5307,7 +5236,6 @@ test.options += --no-progress : existing : - if false { +$clone_cfg @@ -5318,36 +5246,34 @@ test.options += --no-progress $* libfoo 2>!; - $* foo 2>!; -#\ $* foo 2>>~%EOE%; %.* - trace: pkg_build: refine execution plan from scratch + 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} + 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 - trace: collect_build_postponed (1): cfg-negotiate begin {foo | 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: 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: skip cfg-negotiated dependency libfoo/1.0.0 of dependent foo/1.0.0 trace: collect_build_prerequisites: end foo/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo} + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* EOE -#\ + $pkg_status -r >>EOO; !libfoo configured 1.0.0 !foo configured 1.0.0 @@ -5371,21 +5297,20 @@ test.options += --no-progress %.* 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/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: skip cfg-negotiated dependency libfoo/1.0.0 of dependent 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}} + trace: collect_build_postponed (1): cfg-negotiate end {foo | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes @@ -5411,19 +5336,17 @@ test.options += --no-progress %.* trace: collect_build_postponed (1): re-evaluate existing dependents for { | libfoo->{}} trace: collect_build: add foo/1.0.0 - trace: postponed_configurations::add: add {foo | libfoo->{foo/1}} to { | libfoo->{}} - trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1}} + trace: postponed_configurations::add: add {foo^ | libfoo->{foo/1,1}} to { | 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/1.0.0 %.* - trace: collect_build_prerequisites: begin foo/1.0.0 - %.* - trace: collect_build: pick libfoo/0.1.0 over libfoo/1.0.0 - trace: collect_build_prerequisites: skip cfg-negotiated dependency libfoo/0.1.0 of 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}} + trace: collect_build_postponed (1): cfg-negotiate end {foo^ | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end %.* @@ -5446,17 +5369,16 @@ test.options += --no-progress %.* trace: collect_build_postponed (1): re-evaluate existing dependents for { | libfoo->{}} trace: collect_build: add foo/1.0.0 - trace: postponed_configurations::add: add {foo | libfoo->{foo/1}} to { | libfoo->{}} - trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1}} + trace: postponed_configurations::add: add {foo^ | libfoo->{foo/1,1}} to { | 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: 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: begin foo/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libfoo/0.1.0 of 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}} + trace: collect_build_postponed (1): cfg-negotiate end {foo^ | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end %.* @@ -5484,19 +5406,17 @@ test.options += --no-progress trace: collect_build_postponed (1): begin %.* trace: collect_build_postponed (1): re-evaluate existing dependents for { | libfoo->{}} - trace: postponed_configurations::add: add {foo | libfoo->{foo/1}} to { | libfoo->{}} - trace: collect_build_postponed (1): cfg-negotiate begin {foo | libfoo->{foo/1}} + trace: postponed_configurations::add: add {foo^ | libfoo->{foo/1,1}} to { | 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/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: begin foo/1.0.0 - %.* - trace: collect_build: pick libfoo/1.0.0 over libfoo/0.1.0 - trace: collect_build_prerequisites: skip cfg-negotiated dependency libfoo/1.0.0 of 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}} + trace: collect_build_postponed (1): cfg-negotiate end {foo^ | libfoo->{foo/1,1}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end %.* @@ -5512,13 +5432,14 @@ test.options += --no-progress trace: pkg_build: refine package collection/plan execution from scratch %.* trace: collect_build: add libfoo/1.0.0 - trace: pkg_build: dep-postpone user-specified libfoo + %.* + 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: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libfoo - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch trace: pkg_build: erase bogus version replacement foo + trace: pkg_build: bogus version replacement erased, throwing + trace: pkg_build: collection failed due to bogus version replacement cancellation, retry from scratch %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -5536,7 +5457,7 @@ test.options += --no-progress 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): cfg-negotiate end { | libfoo->{}} + trace: collect_build_postponed (1): cfg-negotiate end { | libfoo->{}}! trace: collect_build_postponed (1): end trace: collect_build_postponed (0): end %.* @@ -5554,7 +5475,6 @@ test.options += --no-progress : postponed-collection : - if false { +$clone_cfg @@ -5602,9 +5522,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency libfoo/1.0.0 of dependent 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 @@ -5614,9 +5533,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency libbar/1.0.0 of dependent 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 @@ -5635,9 +5553,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency libfoo/1.0.0 of dependent 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 @@ -5647,9 +5564,8 @@ test.options += --no-progress 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: skip being cfg-negotiated dependency libbar/1.0.0 of dependent 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 @@ -5659,6 +5575,10 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 trace: postponed_configurations::add: add {box | libbar->{box/1,1} libfoo->{box/1,1}} to {foo | libfoo->{foo/1,1}}! trace: postponed_configurations::add: merge {bar | libbar->{bar/1,1}}! into {box foo | libbar->{box/1,1} libfoo->{box/1,1 foo/1,1}}! + trace: collect_build_prerequisites: dependent box/1.0.0 is a shadow dependent for {bar box foo | libbar->{bar/1,1 box/1,1} libfoo->{box/1,1 foo/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 trace: collect_build_postponed (1): end @@ -6032,8 +5952,24 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 trace: postponed_configurations::add: add {bar | libbar->{bar/1,1}} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow) trace: collect_build_prerequisites: dependent bar/1.0.0 is a shadow dependent for {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent bar/1.0.0 involves non-negotiated configurations and results in {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}?, throwing merge_configuration - trace: collect_build_postponed (0): cfg-negotiation of {bix | bar->{bix/1,1} libbar->{bix/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bar/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 bar/1.0.0 + trace: collect_build_postponed (1): dependency libbar/1.0.0 is already (being) recursively collected, skipping + 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 | libbar->{bux/1,1}} to {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? + trace: collect_build_prerequisites: cfg-postponing dependent bux/1.0.0 involves negotiated configurations and results in {bar bix bux | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/1,1}}?, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bix | bar->{bix/1,1} libbar->{bix/1,1}} failed due to dependent bux, adding shadow dependent and re-negotiating trace: collect_build_postponed (1): begin %.* trace: collect_build_postponed (1): cfg-negotiate begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} @@ -6043,8 +5979,60 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 trace: postponed_configurations::add: add {bar | libbar->{bar/1,1}} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow) trace: collect_build_prerequisites: dependent bar/1.0.0 is a shadow dependent for {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? - trace: collect_build_prerequisites: cfg-postponing dependent bar/1.0.0 involves non-negotiated configurations and results in {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}?, throwing merge_configuration - ... + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bar/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 bar/1.0.0 + trace: collect_build_postponed (1): dependency libbar/1.0.0 is already (being) recursively collected, skipping + 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 | libbar->{bux/1,1}} to {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? + trace: collect_build_prerequisites: dependent bux/1.0.0 is a shadow dependent for {bar bix bux | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/1,1}}? + trace: collect_build_prerequisites: cfg-postponing dependent bux/1.0.0 involves non-negotiated configurations and results in {bar bix bux | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/1,1}}?, throwing merge_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bix | bar->{bix/1,1} libbar->{bix/1,1}} failed due to non-negotiated clusters, force-merging based on shadow cluster {bar bix bux | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/1,1}}? + trace: collect_build_postponed (1): begin + %.* + trace: collect_build_postponed (1): cfg-negotiate begin {bix | bar->{bix/1,1} libbar->{bix/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 | libbar->{bar/1,1}} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow) + trace: collect_build_prerequisites: dependent bar/1.0.0 is a shadow dependent for {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: collecting cfg-postponed dependency libbar/1.0.0 of dependent bar/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 bar/1.0.0 + trace: collect_build_postponed (1): dependency libbar/1.0.0 is already (being) recursively collected, skipping + 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 | libbar->{bux/1,1}} to {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? (shadow) + trace: collect_build_prerequisites: dependent bux/1.0.0 is a shadow dependent for {bar bix bux | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/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 | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1 bux/1,1}}! + trace: collect_build_postponed (1): end + trace: collect_build_postponed (0): end + trace: execute_plan: simulate: yes + %.* EOE #\ @@ -6644,56 +6632,48 @@ test.options += --no-progress %.* 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}} + 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}} + 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent tax/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: recursively collect dependency libfoo/1.0.0 of dependent tax/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}} + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {toz | libbaz->{toz/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: skip cfg-negotiated dependency libbaz/1.0.0 of dependent toz/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent toz/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: being negotiated: {toz | libbaz->{toz/1}} - trace: postponed_configurations::add: create {toz | libfoo->{toz/2}} - trace: collect_build_prerequisites: verifying {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {toz | libbaz->{toz/1}} - trace: collect_build_prerequisites: no configuration cycle, throwing + 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 @@ -6705,62 +6685,59 @@ test.options += --no-progress %.* 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}} + 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}} + 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {toz | libbaz->{toz/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: skip cfg-negotiated dependency libbaz/1.0.0 of dependent 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}} + 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}} + trace: collect_build_postponed (2): cfg-negotiate end {toz | libbaz->{toz/1,1}}! trace: collect_build_postponed (3): begin %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tez | libbox->{tez/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_prerequisites: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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 @@ -6776,7 +6753,7 @@ test.options += --no-progress %.* 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}} + 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 @@ -6784,42 +6761,34 @@ test.options += --no-progress %.* 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/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: skip cfg-negotiated dependency libbox/1.0.0 of dependent tez/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency toz/0.1.0 of dependent tez/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: being negotiated: {tez | libbox->{tez/1}} - trace: postponed_configurations::add: create {tez | toz->{tez/2}} - trace: collect_build_prerequisites: verifying {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: no configuration cycle, throwing + 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 @@ -6833,152 +6802,103 @@ test.options += --no-progress %.* 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}} + 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/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: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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}} + 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}} + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! trace: collect_build_postponed (3): begin %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tez | toz->{tez/2}} + 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: skip cfg-negotiated dependency toz/0.1.0 of dependent tez/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: negotiated: {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: being negotiated: {tez | toz->{tez/2}} - trace: postponed_configurations::add: add {tez | libbar->{tez/3}} to {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {tax tez | libbar->{tax/1 tez/3}} - trace: collect_build_prerequisites: verifying {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: verifying {tez | toz->{tez/2}} - trace: collect_build_prerequisites: no configuration cycle, throwing - trace: collect_build_postponed (0): cfg-negotiation of {tax | libbar->{tax/1}} failed due to dependency libbar, try next + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent tez/1.0.0 involves negotiated configurations and results in {tax tez | libbar->{tax/1,1 tez/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tax | libbar->{tax/1,1}} failed due to dependent tez, adding shadow dependent and re-negotiating trace: collect_build_postponed (1): begin %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/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 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_prerequisites: resume tez/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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}} - trace: collect_build_prerequisites: postpone tez/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1}} - trace: collect_build_postponed (2): begin - %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tax | libbar->{tax/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 (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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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 (2): cfg-negotiate end {tax | libbar->{tax/1}} - trace: collect_build_postponed (3): begin - %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tez | toz->{tez/2}} - 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_prerequisites: resume tez/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency toz/0.1.0 of dependent tez/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: negotiated: {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: being negotiated: {tez | toz->{tez/2}} - trace: postponed_configurations::add: add {tez | libbar->{tez/3}} to {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {tax tez | libbar->{tax/1 tez/3}} - trace: collect_build_prerequisites: verifying {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: verifying {tez | toz->{tez/2}} - trace: collect_build_prerequisites: no configuration cycle, throwing - trace: collect_build_postponed (1): cfg-negotiation of {tax | libbar->{tax/1}} failed due to dependency libbar, try next + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2}} + 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 toz/0.1.0 - trace: collect_build_prerequisites: end toz/0.1.0 + 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: skip cfg-negotiated dependency toz/0.1.0 of dependent 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 | libbar->{tez/3}} to {tax | libbar->{tax/1}} + 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 | toz->{tez/2}} + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! trace: collect_build_postponed (3): begin %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tax tez | libbar->{tax/1 tez/3}} + 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 libbar/1.0.0 - trace: collect_build_prerequisites: end libbar/1.0.0 + 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_prerequisites: resume tax/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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 (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: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: collect_build_prerequisites: dependent tez/1.0.0 is a shadow dependent for {tax tez | libbar->{tax/1,1 tez/3,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 {tax tez | libbar->{tax/1 tez/3}} + 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 @@ -6994,158 +6914,107 @@ test.options += --no-progress %.* 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}} + 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}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tax | libbar->{tax/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent tax/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: recursively collect dependency libfoo/1.0.0 of dependent tax/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}} + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tez | libbox->{tez/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: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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}} + 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}} + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! trace: collect_build_postponed (3): begin %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tez | toz->{tez/2}} + 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: skip cfg-negotiated dependency toz/0.1.0 of dependent tez/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: negotiated: {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: being negotiated: {tez | toz->{tez/2}} - trace: postponed_configurations::add: add {tez | libbar->{tez/3}} to {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {tax tez | libbar->{tax/1 tez/3}} - trace: collect_build_prerequisites: verifying {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: verifying {tez | toz->{tez/2}} - trace: collect_build_prerequisites: no configuration cycle, throwing - trace: collect_build_postponed (0): cfg-negotiation of {tax | libbar->{tax/1}} failed due to dependency libbar, try next + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 + trace: postponed_configurations::add: add {tez | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent tez/1.0.0 involves negotiated configurations and results in {tax tez | libbar->{tax/1,1 tez/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tax | libbar->{tax/1,1}} failed due to dependent tez, adding shadow dependent and re-negotiating trace: collect_build_postponed (1): begin %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tez | libbox->{tez/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 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_prerequisites: resume tez/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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}} - trace: collect_build_prerequisites: postpone tez/1.0.0 - trace: collect_build_postponed (1): cfg-negotiate end {tez | libbox->{tez/1}} - trace: collect_build_postponed (2): begin - %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tax | libbar->{tax/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 (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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent tax/1.0.0 - %.* trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: recursively collect dependency libfoo/1.0.0 of dependent tax/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 (2): cfg-negotiate end {tax | libbar->{tax/1}} - trace: collect_build_postponed (3): begin - %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tez | toz->{tez/2}} - 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_prerequisites: resume tez/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency toz/0.1.0 of dependent tez/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libbar/1.0.0 of dependent tez/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: negotiated: {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: being negotiated: {tez | toz->{tez/2}} - trace: postponed_configurations::add: add {tez | libbar->{tez/3}} to {tax | libbar->{tax/1}} - trace: collect_build_prerequisites: verifying {tax tez | libbar->{tax/1 tez/3}} - trace: collect_build_prerequisites: verifying {tez | libbox->{tez/1}} - trace: collect_build_prerequisites: verifying {tez | toz->{tez/2}} - trace: collect_build_prerequisites: no configuration cycle, throwing - trace: collect_build_postponed (1): cfg-negotiation of {tax | libbar->{tax/1}} failed due to dependency libbar, try next + trace: collect_build_postponed (1): cfg-negotiate end {tax | libbar->{tax/1,1}}! trace: collect_build_postponed (2): begin - %.* - trace: collect_build_postponed (2): cfg-negotiate begin {tez | toz->{tez/2}} + trace: pkg_build: SELECT "pp"."package", "pp"."min_version_epoch", "pp"."min_version_canonical_upstream", "pp"."min_version_canonical_release", "pp"."min_version_revision", "pp"."min_version_iteration", "pp"."min_version_upstream", "pp"."min_version_release", "pp"."max_version_epoch", "pp"."max_version_canonical_upstream", "pp"."max_version_canonical_release", "pp"."max_version_revision", "pp"."max_version_iteration", "pp"."max_version_upstream", "pp"."max_version_release", "pp"."min_open", "pp"."max_open" FROM "main"."selected_package_prerequisites" AS "pp" WHERE prerequisite = ? AND configuration = ? + 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 toz/0.1.0 - trace: collect_build_prerequisites: end toz/0.1.0 + 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: skip cfg-negotiated dependency toz/0.1.0 of dependent 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 | libbar->{tez/3}} to {tax | libbar->{tax/1}} + 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 | toz->{tez/2}} + trace: collect_build_postponed (2): cfg-negotiate end {tez | libbox->{tez/1,1}}! trace: collect_build_postponed (3): begin %.* - trace: collect_build_postponed (3): cfg-negotiate begin {tax tez | libbar->{tax/1 tez/3}} + 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 libbar/1.0.0 - trace: collect_build_prerequisites: end libbar/1.0.0 + 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_prerequisites: resume tax/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent tax/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: recursively collect 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 (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: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: collect_build_prerequisites: dependent tez/1.0.0 is a shadow dependent for {tax tez | libbar->{tax/1,1 tez/3,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 {tax tez | libbar->{tax/1 tez/3}} + trace: collect_build_postponed (3): cfg-negotiate end {tez | toz->{tez/2,1}}! trace: collect_build_postponed (3): end trace: collect_build_postponed (2): end trace: collect_build_postponed (1): end -- cgit v1.1