diff options
-rw-r--r-- | bpkg/pkg-build.cxx | 264 | ||||
-rw-r--r-- | tests/pkg-build.testscript | 897 |
2 files changed, 815 insertions, 346 deletions
diff --git a/bpkg/pkg-build.cxx b/bpkg/pkg-build.cxx index ab73ee3..8d125ce 100644 --- a/bpkg/pkg-build.cxx +++ b/bpkg/pkg-build.cxx @@ -1259,28 +1259,61 @@ namespace bpkg // Add dependencies of a new dependent. // - postponed_configuration (config_package&& dependent, + postponed_configuration (size_t i, + config_package&& dependent, bool existing, - const pair<size_t, size_t>& position, + pair<size_t, size_t> position, packages&& deps) + : id (i) { - assert (position.first != 0 && position.second != 0); - - dependencies.insert (deps.begin (), deps.end ()); - - small_vector<dependency, 1> ds ({dependency (position, move (deps))}); - - dependents.emplace (move (dependent), - dependent_info {existing, move (ds)}); + add (move (dependent), existing, position, move (deps)); } // Add dependency of an existing dependent. // - postponed_configuration (config_package&& dependency) + postponed_configuration (size_t i, config_package&& dependency) + : id (i) { dependencies.emplace (move (dependency)); } + void + add (config_package&& dependent, + bool existing, + pair<size_t, size_t> position, + packages&& deps) + { + assert (position.first != 0 && position.second != 0); + + dependencies.insert (deps.begin (), deps.end ()); + + auto i (dependents.find (dependent)); + + if (i != dependents.end ()) + { + dependent_info& ddi (i->second); + + const dependency* dep (ddi.find_dependency (position)); + + if (dep == nullptr) + ddi.dependencies.push_back (dependency (position, move (deps))); + else + // If present, must contain the same dependency packages. + // + assert (static_cast<const packages&> (*dep) == deps); + + if (!ddi.existing) + ddi.existing = existing; + } + else + { + small_vector<dependency, 1> ds ({dependency (position, move (deps))}); + + dependents.emplace (move (dependent), + dependent_info {existing, move (ds)}); + } + } + // Return true if any of the new or existing dependents depend on the // specified package. // @@ -1325,6 +1358,10 @@ namespace bpkg void merge (postponed_configuration&& c) { + assert (c.id != id); // Can't merge to itself. + + merged_ids.push_back (c.id); + // Merge dependents. // for (auto& d: c.dependents) @@ -1465,36 +1502,6 @@ 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 { @@ -1731,6 +1738,29 @@ namespace bpkg } }; + auto trace_add = [&trace, &dependent, existing, position, &dependencies] + (const postponed_configuration& c, bool shadow) + { + if (verb >= 5) + { + diag_record dr (trace); + dr << "add {" << dependent; + + if (existing) + dr << '^'; + + dr << ' ' << position.first << ',' << position.second << ':'; + + for (const auto& d: dependencies) + dr << ' ' << d; + + dr << "} to " << c; + + if (shadow) + dr << " (shadow cluster-based)"; + } + }; + // Try to add based on the shadow cluster. // { @@ -1741,14 +1771,9 @@ namespace bpkg if (c.contains_in_shadow_cluster (dependent, position)) { - postponed_configuration tc (move (dependent), - existing, - position, - move (dependencies)); - - l5 ([&]{trace << "add " << tc << " to " << c << " (shadow)";}); + trace_add (c, true /* shadow */); - c.merge (move (tc)); + c.add (move (dependent), existing, position, move (dependencies)); break; } } @@ -1778,14 +1803,9 @@ namespace bpkg if (c.contains_dependency (dependencies)) { - postponed_configuration tc (move (dependent), - existing, - position, - move (dependencies)); + trace_add (c, false /* shadow */); - l5 ([&]{trace << "add " << tc << " to " << c;}); - - c.merge (move (tc)); + c.add (move (dependent), existing, position, move (dependencies)); break; } } @@ -1796,6 +1816,7 @@ namespace bpkg // ri = insert_after (j, postponed_configuration ( + next_id_++, move (dependent), existing, position, @@ -1837,11 +1858,25 @@ namespace bpkg for (auto j (begin ()); j != end (); ++i, ++j) assert (!j->contains_dependency (dependency)); - i = insert_after (i, postponed_configuration (move (dependency))); + i = insert_after (i, + postponed_configuration (next_id_++, + move (dependency))); l5 ([&]{trace << "create " << *i;}); } + postponed_configuration* + find (size_t id) + { + for (postponed_configuration& cfg: *this) + { + if (cfg.id == id) + return &cfg; + } + + return nullptr; + } + // Return address of the cluster the dependency belongs to and NULL if it // doesn't belong to any cluster. // @@ -2561,7 +2596,11 @@ namespace bpkg postponed_packages* postponed_alts, size_t max_alt_index, postponed_dependencies& postponed_deps, - postponed_configurations& postponed_cfgs) + postponed_configurations& postponed_cfgs, + // + // @@ TMP This will probably be gone (see below). + // + bool force_configured = false) { tracer trace ("collect_build_prerequisites"); @@ -2597,7 +2636,12 @@ namespace bpkg postponed_cfgs.find_dependency (cp) == nullptr) { vector<existing_dependent> eds ( - query_existing_dependents (trace, options, pdb, nm, replaced_vers)); + query_existing_dependents (trace, + options, + pdb, + nm, + replaced_vers, + postponed_deps)); if (!eds.empty ()) { @@ -2649,7 +2693,13 @@ namespace bpkg rpt_prereq_flags == nullptr && (pkg.config_vars.empty () || !has_buildfile_clause (ap->dependencies)) && - !postponed_cfgs.existing_dependent (cp)) + !postponed_cfgs.existing_dependent (cp) && + // + // @@ TMP This will probably be gone when we implement complete + // negotiation implementation since we will recognize that by + // the presence of the respective config vars, etc. + // + !force_configured) { l5 ([&]{trace << "skip configured " << pkg.available_name_version_db ();}); @@ -4725,7 +4775,11 @@ namespace bpkg string t ("collect_build_postponed (" + to_string (depth) + ")"); tracer trace (t.c_str ()); - l5 ([&]{trace << "begin";}); + string trace_suffix (verb >= 5 && pcfg != nullptr + ? " " + pcfg->string () + : ""); + + l5 ([&]{trace << "begin" << trace_suffix;}); if (pcfg != nullptr) { @@ -4794,7 +4848,8 @@ namespace bpkg o, p.db, p.name, - replaced_vers)) + replaced_vers, + postponed_deps)) { config_package cp (ed.db, ed.selected->name); @@ -4862,6 +4917,40 @@ namespace bpkg // @@ TMP: need proper implementation. // { + // @@ This emulates collect_build_prerequisites() called for + // the first time and postponing the first dependency + // alternative. + // + if (postponed_cfgs.find_dependency (cp) == nullptr) + { + vector<existing_dependent> eds ( + query_existing_dependents (trace, + o, + b->db, + b->name (), + replaced_vers, + postponed_deps)); + + if (!eds.empty ()) + { + existing_dependent& ed (eds.front ()); + + l5 ([&]{trace << "cfg-postpone dependency " + << b->available_name_version_db () + << " of existing dependent " << *ed.selected + << ed.db;}); + + postponed_cfgs.add (cp); + + // @@ Note that collect_build_prerequisites() returns here + // while we continue. Is that right? + // + //return; + } + } + + b->recursive_collection = true; + b->dependencies = dependencies (); optional<dir_path> src_root (b->external_dir ()); @@ -4957,7 +5046,8 @@ namespace bpkg &postponed_alts, 0 /* max_alt_index */, postponed_deps, - postponed_cfgs); + postponed_cfgs, + true /* force_configured */); } else l5 ([&]{trace << "dependency " << b->available_name_version_db () @@ -5188,7 +5278,7 @@ namespace bpkg postponed_alts.empty () && !postponed_deps.has_bogus ()); - l5 ([&]{trace << "end";}); + l5 ([&]{trace << "end" << trace_suffix;}); return; } @@ -5254,25 +5344,26 @@ namespace bpkg << "to non-negotiated clusters, force-merging " << "based on shadow cluster " << shadow;}); - pc->set_shadow_cluster (move (shadow)); - // Pre-merge into this cluster those non-negotiated clusters - // which are subsets of the shadow cluster. - // - // @@ TODO: use cluster ids instead. + // which were merged into the shadow cluster. // - for (postponed_configuration& c: postponed_cfgs) + for (size_t id: shadow.merged_ids) { - if (&c != pc && - !c.negotiated && - pc->contains_in_shadow_cluster (c)) + postponed_configuration* c (postponed_cfgs.find (id)); + + if (c != nullptr) { - pc->merge (move (c)); + // Otherwise we would be handling the exception in the + // higher stack frame. + // + assert (!c->negotiated); + + pc->merge (move (*c)); // Mark configuration as the one being merged from for // subsequent erasing from the list. // - c.dependencies.clear (); + c->dependencies.clear (); } } @@ -5297,6 +5388,8 @@ namespace bpkg else i = postponed_cfgs.erase_after (j); } + + pc->set_shadow_cluster (move (shadow)); } } } @@ -5480,7 +5573,7 @@ namespace bpkg assert (postponed_cfgs.negotiated ()); - l5 ([&]{trace << "end";}); + l5 ([&]{trace << "end" << trace_suffix;}); } // Order the previously-collected package with the specified name @@ -5832,7 +5925,8 @@ namespace bpkg const pkg_build_options& options, database& db, const package_name& name, - const replaced_versions& replaced_vers) + const replaced_versions& replaced_vers, + postponed_dependencies& /*postponed_deps*/) { vector<existing_dependent> r; @@ -5924,6 +6018,24 @@ namespace bpkg continue; } + // @@ Note that at this point we actually don't know for sure if + // this dependency is configured by the dependent or not. Thus, + // we don't how which flag to set. Seems we shouldn't skip it + // here and check during existing dependent re-evaluation or + // smth. + // +#if 0 + auto pi (postponed_deps.find (cp)); + if (pi != postponed_deps.end ()) + { + l5 ([&]{trace << "skip dep-postponed existing dependent " << cp + << " of dependency " << name << db;}); + + pi->second.wout_config = true; + + continue; + } +#endif r.push_back (existing_dependent {ddb, move (dsp), move (dap), diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index 2410214..a961977 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -4748,14 +4748,14 @@ test.options += --no-progress 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: postponed_configurations::add: add {fox 1,1: libfoo} to {foo | libfoo->{foo/1,1}} trace: collect_build_prerequisites: postpone fox/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 %.* trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 trace: collect_build_prerequisites: end fux/1.0.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): 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 @@ -4769,7 +4769,7 @@ test.options += --no-progress 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 + 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 %.* @@ -5025,7 +5025,7 @@ test.options += --no-progress trace: postponed_configurations::add: add {fox | libfoo} to {foo | libfoo} trace: collect_build_prerequisites: postpone fox/1.0.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin {foo, fox | libfoo} trace: collect_build_postponed (1): cfg-negotiate begin {foo, fox | libfoo} trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 @@ -5040,7 +5040,7 @@ test.options += --no-progress trace: collect_build_prerequisites: skip 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} - trace: collect_build_postponed (1): end + trace: collect_build_postponed (1): end {foo, fox | libfoo} trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* @@ -5142,7 +5142,7 @@ test.options += --no-progress 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 + 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 @@ -5188,7 +5188,7 @@ test.options += --no-progress 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 + 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 @@ -5202,7 +5202,7 @@ test.options += --no-progress 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 + 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 @@ -5213,8 +5213,8 @@ test.options += --no-progress 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 - trace: collect_build_postponed (1): end + 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 %.* @@ -5258,17 +5258,18 @@ 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 (0): begin - trace: collect_build_postponed (1): 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_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 + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* @@ -5300,7 +5301,7 @@ 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 (0): begin - trace: collect_build_postponed (1): 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 @@ -5311,7 +5312,7 @@ test.options += --no-progress 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 + trace: collect_build_postponed (1): end {foo | libfoo->{foo/1,1}} trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* @@ -5332,22 +5333,22 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 trace: postponed_configurations::add: create { | libfoo->{}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin { | libfoo->{}} %.* 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,1}} to { | libfoo->{}} + %.* + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} 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: 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 + trace: collect_build_postponed (1): end { | libfoo->{}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes @@ -5365,21 +5366,22 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libfoo/0.1.0 of existing dependent foo/1.0.0 trace: postponed_configurations::add: create { | libfoo->{}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin { | libfoo->{}} %.* 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,1}} to { | libfoo->{}} + %.* + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} 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_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 + trace: collect_build_postponed (1): end { | libfoo->{}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes @@ -5403,21 +5405,21 @@ test.options += --no-progress trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of existing dependent foo/1.0.0 trace: postponed_configurations::add: create { | libfoo->{}} trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin { | libfoo->{}} %.* trace: collect_build_postponed (1): re-evaluate existing dependents for { | libfoo->{}} - trace: postponed_configurations::add: add {foo^ | libfoo->{foo/1,1}} to { | libfoo->{}} + %.* + trace: postponed_configurations::add: add {foo^ 1,1: libfoo} 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: 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 + trace: collect_build_postponed (1): end { | libfoo->{}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes @@ -5449,7 +5451,7 @@ test.options += --no-progress trace: postponed_configurations::add: create { | libfoo->{}} trace: collect_drop: overwrite foo trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin { | libfoo->{}} %.* trace: collect_build_postponed (1): skip being dropped existing dependent foo of dependency libfoo trace: collect_build_postponed (1): cfg-negotiate begin { | libfoo->{}} @@ -5458,7 +5460,7 @@ test.options += --no-progress 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): end + trace: collect_build_postponed (1): end { | libfoo->{}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes @@ -5515,7 +5517,7 @@ test.options += --no-progress } trace: collect_build_prerequisites: postpone box/1.0.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): 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 @@ -5526,7 +5528,7 @@ test.options += --no-progress 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 + 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 @@ -5542,11 +5544,11 @@ test.options += --no-progress %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 - trace: postponed_configurations::add: add {box | libbar->{box/1,1} libfoo->{box/1,1}} to {foo | libfoo->{foo/1,1}}! + 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 | libbar->{box/1,1} libfoo->{box/1,1 foo/1,1}}! trace: collect_build_prerequisites: cfg-postponing dependent box/1.0.0 involves negotiated configurations and results in {bar box foo | libbar->{bar/1,1 box/1,1} libfoo->{box/1,1 foo/1,1}}!, throwing retry_configuration trace: collect_build_postponed (0): cfg-negotiation of {foo | libfoo->{foo/1,1}} failed due to dependent box, adding shadow dependent and re-negotiating - trace: collect_build_postponed (1): 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 @@ -5557,7 +5559,7 @@ test.options += --no-progress 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 + 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 @@ -5573,15 +5575,15 @@ test.options += --no-progress %.* trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent box/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent box/1.0.0 - trace: postponed_configurations::add: add {box | libbar->{box/1,1} libfoo->{box/1,1}} to {foo | libfoo->{foo/1,1}}! + 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 | 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 + 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 %.* @@ -5922,35 +5924,35 @@ test.options += --no-progress trace: postponed_configurations::add: create {bix | bar->{bix/1,1} libbar->{bix/1,1}} trace: collect_build_prerequisites: postpone bix/1.0.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} %.* 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}}? + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? trace: collect_build_prerequisites: cfg-postponing dependent bar/1.0.0 involves negotiated configurations and results in {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/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 bar, adding shadow dependent and re-negotiating - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} %.* 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}}? + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? 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_postponed (1): begin + trace: collect_build_postponed (1): begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} %.* 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: postponed_configurations::add: add {bar 1,1: libbar} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow cluster-based) 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 @@ -5967,17 +5969,17 @@ test.options += --no-progress 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: postponed_configurations::add: add {bux 1,1: libbar} 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): begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} %.* 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: postponed_configurations::add: add {bar 1,1: libbar} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow cluster-based) 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 @@ -5994,18 +5996,18 @@ test.options += --no-progress 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: postponed_configurations::add: add {bux 1,1: libbar} 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): begin {bix | bar->{bix/1,1} libbar->{bix/1,1}} %.* 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: postponed_configurations::add: add {bar 1,1: libbar} to {bix | bar->{bix/1,1} libbar->{bix/1,1}}? (shadow cluster-based) 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 @@ -6022,14 +6024,14 @@ test.options += --no-progress 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: postponed_configurations::add: add {bux 1,1: libbar} to {bar bix | bar->{bix/1,1} libbar->{bar/1,1 bix/1,1}}? (shadow cluster-based) 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 (1): end {bix | bar->{bix/1,1} libbar->{bix/1,1}} trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* @@ -6647,7 +6649,7 @@ test.options += --no-progress 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): 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 @@ -6663,7 +6665,7 @@ test.options += --no-progress 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 + 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 @@ -6700,7 +6702,7 @@ test.options += --no-progress 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): 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 @@ -6714,7 +6716,7 @@ test.options += --no-progress 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 + 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 @@ -6728,7 +6730,7 @@ test.options += --no-progress 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 + 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 @@ -6764,7 +6766,7 @@ test.options += --no-progress 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): 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 @@ -6778,7 +6780,7 @@ test.options += --no-progress 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 + 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 @@ -6812,7 +6814,7 @@ test.options += --no-progress 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): 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 @@ -6826,7 +6828,7 @@ test.options += --no-progress 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 + 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 @@ -6840,7 +6842,7 @@ test.options += --no-progress 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 + 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 @@ -6851,10 +6853,10 @@ test.options += --no-progress 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: postponed_configurations::add: add {tez 3,1: libbar} 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): 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 @@ -6868,7 +6870,7 @@ test.options += --no-progress 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 + 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 @@ -6882,7 +6884,7 @@ test.options += --no-progress 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 + 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 @@ -6893,7 +6895,7 @@ test.options += --no-progress 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: postponed_configurations::add: add {tez 3,1: libbar} 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 @@ -6924,7 +6926,7 @@ test.options += --no-progress 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): 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 @@ -6940,7 +6942,7 @@ test.options += --no-progress 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 + 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 @@ -6954,7 +6956,7 @@ test.options += --no-progress 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 + 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 @@ -6965,10 +6967,10 @@ test.options += --no-progress 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: postponed_configurations::add: add {tez 3,1: libbar} 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): 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 @@ -6984,8 +6986,8 @@ test.options += --no-progress 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 - 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): 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 @@ -6998,7 +7000,7 @@ test.options += --no-progress 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 + 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 @@ -7009,15 +7011,15 @@ test.options += --no-progress 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 | libbar->{tez/3,1}} to {tax | libbar->{tax/1,1}}! + trace: postponed_configurations::add: add {tez 3,1: libbar} 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 {tez | toz->{tez/2,1}}! - trace: collect_build_postponed (3): end - trace: collect_build_postponed (2): end - trace: collect_build_postponed (1): end + 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 %.* @@ -7040,7 +7042,6 @@ test.options += --no-progress : cycle : - if false { +$clone_cfg @@ -7051,6 +7052,7 @@ test.options += --no-progress : args-tex-tix : + if false { $clone_cfg; @@ -7062,15 +7064,7 @@ test.options += --no-progress # tix: depends: libbar(c) # depends: tex(c) # - # Configuration clusters: - # - # {tex tix | libbar->{tex/1 tix/1}} - # - # Fail at: - # - # tix -> tex - # - $* tex tix 2>>~%EOE% != 0 + $* tex tix 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -7080,42 +7074,136 @@ 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 tex/1.0.0 - trace: postponed_configurations::add: create {tex | libbar->{tex/1}} + 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 | libbar->{tix/1}} to {tex | libbar->{tex/1}} + 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 %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tex tix | libbar->{tex/1 tix/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_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + 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: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: being negotiated: {tex tix | libbar->{tex/1 tix/1}} - trace: postponed_configurations::add: create {tix | tex->{tix/2}} - trace: collect_build_prerequisites: verifying {tex tix | libbar->{tex/1 tix/1}} - error: package tix/1.0.0 negotiates configuration of libbar/1.0.0 before its (potentially indirect) dependency tex/1.0.0 negotiates configuration of libbar/1.0.0 - info: consider reordering dependencies of tix/1.0.0 - info: while satisfying tix/1.0.0 + 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 + %.* + 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 + %.* + 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: cfg-postponing dependent tex/1.0.0 involves negotiated configurations and results in {tex tix | libbar->{tex/1,1 tix/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tix | libbar->{tix/1,1}} failed due to dependent tex, adding shadow dependent and re-negotiating + trace: collect_build_postponed (1): begin + %.* + 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 + %.* + 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: dependent tex/1.0.0 is a shadow dependent for {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: 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 + %.* + 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 + trace: collect_build_postponed (2): end + trace: collect_build_postponed (1): end + 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 @@ -7123,6 +7211,7 @@ test.options += --no-progress : As above but with the different command-line arguments which results : in the different cluster list at the moment of the cycle detection. : + if false { $clone_cfg; @@ -7209,6 +7298,7 @@ test.options += --no-progress : Note that tiz is a correct version of tix, which fixes the : configuration cycle. : + if false { $clone_cfg; @@ -7328,6 +7418,7 @@ test.options += --no-progress : Note that tiz is a correct version of tix, which fixes the : configuration cycle. : + if false { $clone_cfg; @@ -7423,6 +7514,7 @@ test.options += --no-progress : existing : + if false { +$clone_cfg @@ -7441,15 +7533,7 @@ test.options += --no-progress # $* tex 2>!; - # Configuration clusters: - # - # {tex tix | libbar->{tex/1 tix/1}} - # - # Fail at: - # - # tix -> tex - # - $* tix 2>>~%EOE% != 0; + $* tix 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -7458,150 +7542,173 @@ 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 tix/1.0.0 - trace: postponed_configurations::add: create {tix | libbar->{tix/1}} + 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 + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {tix | libbar->{tix/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: postponed_configurations::add: add {tex | libbar->{tex/1}} to {tix | libbar->{tix/1}} - trace: collect_build_postponed (1): cfg-negotiate begin {tex tix | libbar->{tex/1 tix/1}} + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tix | libbar->{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: skip configured libbar/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 tex/1.0.0 %.* - trace: collect_build_prerequisites: begin tex/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of 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}} + 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: skip cfg-negotiated dependency libbar/1.0.0 of dependent tix/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/1.0.0 of dependent tix/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: being negotiated: {tex tix | libbar->{tex/1 tix/1}} - trace: postponed_configurations::add: create {tix | tex->{tix/2}} - trace: collect_build_prerequisites: verifying {tex tix | libbar->{tex/1 tix/1}} - error: package tix/1.0.0 negotiates configuration of libbar/1.0.0 before its (potentially indirect) dependency tex/1.0.0 negotiates configuration of libbar/1.0.0 - info: consider reordering dependencies of tix/1.0.0 - %.* - EOE - - # @@ These tests fail complaining on tix/1.0.0->tex/1.0.0 cycle. - # However, we downgrade tex to 0.1.0 or 0.2.0 for which there - # is no cycle (0.2.0 depends on libbar without config clause and - # 0.1.0 doesn't depend at all). - # - #$* tix ?tex/0.1.0 2>|; - #$* tix ?tex/0.2.0 2>|; - - $* tix tex/0.1.0 2>>~%EOE%; + 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: add tex/0.1.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}} + trace: postponed_configurations::add: create {tix | libbar->{tix/1,1}} trace: collect_build_prerequisites: postpone tix/1.0.0 - %.* - 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}} - trace: collect_build_prerequisites: postpone tex/0.1.0 trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + 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_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: skip cfg-negotiated dependency libbar/1.0.0 of dependent tix/1.0.0 - %.* - trace: collect_build: pick tex/0.1.0 over tex/1.0.0 - trace: collect_build_prerequisites: cannot cfg-postpone dependency tex/0.1.0 of dependent tix/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: being negotiated: {tix | libbar->{tix/1}} - trace: postponed_configurations::add: create {tix | tex->{tix/2}} - trace: collect_build_prerequisites: verifying {tix | libbar->{tix/1}} - trace: collect_build_prerequisites: no configuration cycle, throwing - trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + 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: pkg_build: refine package collection/plan execution from scratch + 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: add tix/1.0.0 - trace: collect_build: add tex/0.1.0 - trace: collect_build_prerequisites: begin tix/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: cfg-postponing dependent tex/1.0.0 involves negotiated configurations and results in {tex tix | libbar->{tex/1,1 tix/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tix | libbar->{tix/1,1}} failed due to dependent tex, adding shadow dependent and re-negotiating + trace: collect_build_postponed (1): begin {tix | libbar->{tix/1,1}} %.* - 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}} - trace: collect_build_prerequisites: postpone tix/1.0.0 - trace: pkg_build: dep-postpone user-specified tex - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin - %.* - trace: collect_build_postponed (1): cfg-negotiate begin {tix | libbar->{tix/1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + 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_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: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + 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}} - trace: collect_build_postponed (2): begin + 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}} + 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_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: dependent tex/1.0.0 is a shadow dependent for {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: 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}} - trace: collect_build_prerequisites: postpone tex/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: pick tex/0.1.0 over tex/1.0.0 - trace: collect_build_prerequisites: skip cfg-negotiated dependency tex/0.1.0 of dependent 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}} - trace: collect_build_postponed (3): begin + 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/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_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_prerequisites: resume tex/0.1.0 + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: skip configured 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 + + # @@ This looks wrong since configured tix hasn't been negotiating + # configuration for tex. Seems that 'skip being built existing + # dependent tix of dependency tex' was a wrong decision. We + # probably need to only skip if there is not just a build in + # the map but it is also recursively collectible (being + # upgraded, etc). + # + $* 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: skip cfg-negotiated dependency libfoo/1.0.0 of dependent tex/0.1.0 + trace: collect_build_prerequisites: skip being built existing dependent tix of dependency tex + 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 (0): begin + trace: collect_build_postponed (1): begin {tex | libfoo->{tex/1,1}} + %.* + trace: collect_build_postponed (1): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (1): cfg-negotiate begin {tex | libfoo->{tex/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 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}} - trace: collect_build_postponed (3): end - trace: collect_build_postponed (2): end - trace: collect_build_postponed (1): end + trace: collect_build_postponed (1): cfg-negotiate end {tex | libfoo->{tex/1,1}}! + trace: collect_build_postponed (1): end {tex | libfoo->{tex/1,1}} trace: collect_build_postponed (0): end %.* trace: execute_plan: simulate: yes %.* EOE + # @@ Should we also test the following commands instead of the + # previous? + # + #$* tix ?tex/0.1.0 2>|; + #$* tix ?tex/0.2.0 2>|; + $pkg_drop tex tix } } @@ -7614,6 +7721,7 @@ test.options += --no-progress : args-tax-dex-dix : + if false { $clone_cfg; @@ -7808,6 +7916,7 @@ test.options += --no-progress : As above but with the different command-line arguments which results : in the different cluster list at the moment of the cycle detection. : + if false { $clone_cfg; @@ -7938,6 +8047,7 @@ test.options += --no-progress : Note that diz is a correct version of dix, which fixes the : configuration cycle. : + if false { $clone_cfg; @@ -8431,6 +8541,7 @@ test.options += --no-progress : Note that diz is a correct version of dix, which fixes the : configuration cycle. : + if false { $clone_cfg; @@ -8585,11 +8696,16 @@ test.options += --no-progress : existing : + : false + : { +$clone_cfg + # @@ Cycles. + # : negotiate : + if false { $clone_cfg; @@ -8608,19 +8724,9 @@ test.options += --no-progress # $* dex 2>!; - # Configuration clusters: - # - # {bar dix | libbar->{bar/1 dix/1}} - # {dex | bar->{dex/1}} - # {dix | libbox->{dix/2}} - # {dex | libfoo->{dex/2}} - # {dix | dox->{dix/3}} - # - # Fail at: + # @@ Review output. # - # dox -> dex - # - $* dix 2>>~%EOE% != 0; + $* dix 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch %.* @@ -8629,104 +8735,355 @@ 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 dix/1.0.0 - trace: postponed_configurations::add: create {dix | libbar->{dix/1}} + 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 + trace: collect_build_postponed (1): begin {dix | libbar->{dix/1,1}} %.* - trace: collect_build_postponed (1): re-evaluate existing dependents for {dix | libbar->{dix/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: postponed_configurations::add: add {bar | libbar->{bar/1}} to {dix | libbar->{dix/1}} - trace: collect_build_postponed (1): cfg-negotiate begin {bar dix | libbar->{bar/1 dix/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_prerequisites: cfg-postpone dependency bar/1.0.0 of existing dependent dex/1.0.0 + trace: collect_build_postponed (1): cfg-postpone dependency bar/1.0.0 of existing dependent dex/1.0.0 trace: postponed_configurations::add: create { | bar->{}} + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {dix | libbar->{dix/1,1}} + 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: 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 dix/1.0.0 trace: collect_build_prerequisites: resume dix/1.0.0 %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency libbar/1.0.0 of dependent 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}} + 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 dix/1}} - trace: collect_build_postponed (2): begin + trace: collect_build_postponed (1): cfg-negotiate end {bar^ dix | libbar->{bar/1,1 dix/1,1}}! + trace: collect_build_postponed (2): begin { | bar->{}} %.* trace: collect_build_postponed (2): re-evaluate existing dependents for { | bar->{}} trace: collect_build: add dex/1.0.0 - trace: postponed_configurations::add: add {dex | bar->{dex/1}} to { | bar->{}} - trace: collect_build_postponed (2): cfg-negotiate begin {dex | bar->{dex/1}} - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin bar/1.0.0 %.* - trace: collect_build_prerequisites: dependency libbar/1.0.0 of existing dependent bar/1.0.0 is already collected, checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {bar dix | libbar->{bar/1 dix/1}} - trace: collect_build_prerequisites: being negotiated: {dex | bar->{dex/1}} - trace: collect_build_prerequisites: verifying {bar dix | libbar->{bar/1 dix/1}} - trace: collect_build_prerequisites: verifying {dex | bar->{dex/1}} - trace: collect_build_prerequisites: no configuration cycle, skipping collected dependency - trace: collect_build_prerequisites: end bar/1.0.0 + trace: postponed_configurations::add: add {dex^ 1,1: bar} to { | bar->{}} + 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_postponed (2): dependency bar/1.0.0 is already (being) recursively collected, skipping trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - %.* - trace: collect_build_prerequisites: begin dex/1.0.0 - %.* - trace: collect_build_prerequisites: skip cfg-negotiated dependency bar/1.0.0 of dependent dex/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: 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}} + 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}} - trace: collect_build_postponed (3): begin + 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}} + 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_prerequisites: skip cfg-negotiated dependency libbox/1.0.0 of dependent 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}} + 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}} - trace: collect_build_postponed (4): begin + 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}} + trace: collect_build_postponed (4): skip being built existing dependent dex of dependency libfoo + 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: skip configured libfoo/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 (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: skip cfg-negotiated dependency libfoo/1.0.0 of dependent 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}} - trace: collect_build_postponed (5): begin + 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 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): re-evaluate existing dependents for {dix | libbar->{dix/1,1}} + trace: collect_build: add bar/1.0.0 + %.* + trace: collect_build_postponed (1): skip dep-postponed existing dependent dex of dependency bar + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {dix | libbar->{dix/1,1}} + 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: 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 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: pkg_build: BEGIN EXCLUSIVE + 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): skip dep-postponed existing dependent bar of dependency libbar + 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 {dix | dox->{dix/3}} + 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: cfg-postponing dependent bar/1.0.0 involves negotiated configurations and results in {bar dix | libbar->{bar/1,1 dix/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {dix | libbar->{dix/1,1}} failed due to dependent bar, adding shadow dependent and re-negotiating + trace: collect_build_postponed (1): begin {dix | libbar->{dix/1,1}} + %.* + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + 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_prerequisites: cannot cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 (collected prematurely), checking for configuration cycle - trace: collect_build_prerequisites: negotiated: {bar dix | libbar->{bar/1 dix/1}} - trace: collect_build_prerequisites: negotiated: {dex | bar->{dex/1}} - trace: collect_build_prerequisites: negotiated: {dix | libbox->{dix/2}} - trace: collect_build_prerequisites: negotiated: {dex | libfoo->{dex/2}} - trace: collect_build_prerequisites: being negotiated: {dix | dox->{dix/3}} - trace: postponed_configurations::add: create {dox | dex->{dox/1}} - trace: collect_build_prerequisites: verifying {bar dix | libbar->{bar/1 dix/1}} - error: package dix/1.0.0 negotiates configuration of libbar/1.0.0 before its (potentially indirect) dependency bar/1.0.0 negotiates configuration of libbar/1.0.0 - info: consider reordering dependencies of dix/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): 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: dependent bar/1.0.0 is a shadow dependent for {bar dix | libbar->{bar/1,1 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: skip configured dex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,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_drop dex + $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 } } } |