diff options
-rw-r--r-- | bpkg/pkg-build-collect.cxx | 270 | ||||
-rw-r--r-- | bpkg/pkg-build-collect.hxx | 39 | ||||
-rw-r--r-- | bpkg/pkg-build.cxx | 139 | ||||
-rw-r--r-- | tests/pkg-build.testscript | 1992 |
4 files changed, 1917 insertions, 523 deletions
diff --git a/bpkg/pkg-build-collect.cxx b/bpkg/pkg-build-collect.cxx index 2c89a1c..ec95e7c 100644 --- a/bpkg/pkg-build-collect.cxx +++ b/bpkg/pkg-build-collect.cxx @@ -1145,7 +1145,6 @@ namespace bpkg replaced_versions& replaced_vers, postponed_configurations& postponed_cfgs, build_package_refs* dep_chain, - bool initial_collection, const function<find_database_function>& fdb, const function<add_priv_cfg_function>& apc, const repointed_dependents* rpt_depts, @@ -1485,7 +1484,6 @@ namespace bpkg collect_build_prerequisites (options, p, *dep_chain, - initial_collection, fdb, apc, *rpt_depts, @@ -1506,7 +1504,6 @@ namespace bpkg collect_build_prerequisites (const pkg_build_options& options, build_package& pkg, build_package_refs& dep_chain, - bool initial_collection, const function<find_database_function>& fdb, const function<add_priv_cfg_function>& apc, const repointed_dependents& rpt_depts, @@ -1600,27 +1597,23 @@ namespace bpkg replaced_vers, postponed_cfgs); - // Indicate that the dependent with configuration clauses is - // present. + // If the dependency collection has already been postponed, then + // indicate that the dependent with configuration clauses is also + // present and thus the postponement is not bogus. But only add + // the new entry to postponed_deps and throw the + // postpone_dependency exception if the dependency is already + // collected. Note that adding the new entry unconditionally would + // be a bad idea, since by postponing the dependency collection we + // may not see its existing dependent with a configuration + // clauses, end up with a bogus postponement, and start + // yo-yoing. In other words, we add the entry only if absolutely + // necessary (who knows, maybe the existing dependent will be + // dropped before we try to collect it recursively). // - { - auto i (postponed_deps.find (dep)); + auto i (postponed_deps.find (dep)); - // Do not override postponements recorded during postponed - // collection phase with those recorded during initial - // phase. - // - if (i == postponed_deps.end ()) - { - postponed_deps.emplace (dep, - postponed_dependency { - false /* without_config */, - true /* with_config */, - initial_collection}); - } - else - i->second.with_config = true; - } + if (i != postponed_deps.end ()) + i->second.with_config = true; // Prematurely collected before we saw any config clauses. // @@ -1632,6 +1625,14 @@ namespace bpkg << " (collected prematurely), " << "throwing postpone_dependency";}); + if (i == postponed_deps.end ()) + { + postponed_deps.emplace (dep, + postponed_dependency { + false /* without_config */, + true /* with_config */}); + } + // Don't print the "while satisfying..." chain. // dep_chain.clear (); @@ -2917,7 +2918,6 @@ namespace bpkg &fdb, &rpt_depts, &apc, - initial_collection, &replaced_vers, &dep_chain, postponed_repo, @@ -2953,6 +2953,19 @@ namespace bpkg postponed_configuration::packages cfg_deps; + // Remove the temporary dependency collection postponements (see + // below for details). + // + postponed_configuration::packages temp_postponements; + + auto g ( + make_guard ( + [&temp_postponements, &postponed_deps] () + { + for (const package_key& d: temp_postponements) + postponed_deps.erase (d); + })); + for (prebuild& b: bs) { build_package bpk { @@ -3101,7 +3114,6 @@ namespace bpkg replaced_vers, postponed_cfgs, nullptr /* dep_chain */, - false /* initial_collection */, nullptr /* fdb */, nullptr /* apc */, nullptr /* rpt_depts */, @@ -3143,9 +3155,9 @@ namespace bpkg // Do not recursively collect a dependency of a dependent with // configuration clauses, which could be this or some other - // (indicated by the presence in postponed_deps) dependent. In the - // former case if the prerequisites were prematurely collected, - // throw postpone_dependency. + // (indicated by the presence in postponed_deps or postponed_cfgs) + // dependent. In the former case if the prerequisites were + // prematurely collected, throw postpone_dependency. // // Note that such a dependency will be recursively collected // directly right after the configuration negotiation (rather than @@ -3154,27 +3166,37 @@ namespace bpkg { if (da.prefer || da.require) { - // Indicate that the dependent with configuration clauses is - // present. + // If the dependency collection has already been postponed, + // then indicate that the dependent with configuration clauses + // is also present and thus the postponement is not bogus. + // Otherwise, if the dependency is already recursively + // collected (and we are not up-negotiating; see below) then + // add the new entry to postponed_deps and throw the + // postpone_dependency exception. Otherwise, temporarily add + // the new entry for the duration of the dependency collection + // loop to prevent recursive collection of this dependency via + // some other dependent. When out of the loop, we will add the + // dependency into some configuration cluster, effectively + // moving the dependency postponement information from + // postponed_deps to postponed_cfgs. Note that generally we + // add new entries to postponed_deps only if absolutely + // necessary to avoid yo-yoing (see the initial part of the + // collect_build_prerequisites() function for details). // - { - auto i (postponed_deps.find (dpk)); + auto i (postponed_deps.find (dpk)); - // Do not override postponements recorded during postponed - // collection phase with those recorded during initial - // phase. - // - if (i == postponed_deps.end ()) - { - postponed_deps.emplace (dpk, - postponed_dependency { - false /* without_config */, - true /* with_config */, - initial_collection}); - } - else - i->second.with_config = true; + bool new_postponement (false); + + if (i == postponed_deps.end ()) + { + postponed_deps.emplace (dpk, + postponed_dependency { + false /* without_config */, + true /* with_config */}); + new_postponement = true; } + else + i->second.with_config = true; // Throw postpone_dependency if the dependency is prematurely // collected before we saw any config clauses. @@ -3189,19 +3211,16 @@ namespace bpkg const postponed_configuration* pcfg ( postponed_cfgs.find_dependency (dpk)); - // Note that it may well happen that a dependency was added - // to a not-yet (being) negotiated cluster at the initial - // collection phase, then the dependency was recursively - // collected via some different dependent without - // configuration clause during the postponed collection - // phase (which was not prevented since its entry was - // removed from postponed_deps at the end of the initial - // collection phase), and now we are trying to collect this - // dependency via some third dependent with the - // configuration clause during the postponed collection - // phase. If that's the case, we will throw - // postpone_dependency and this is the reason why we check - // if the cluster is (being) negotiated. + // Can it happen that an already recursively collected + // dependency (recursive_collection is true) belongs to a + // non (being) negotiated cluster? Yes, if, in particular, + // this dependency is an already re-evaluated existing + // dependent and we are currently re-evaluating its own + // existing dependent and its (as a dependency) cluster is + // not being negotiated yet (is in the existing dependents + // re-evaluation phase). See the + // pkg-build/.../collected-dependency-non-negotiated-cluster + // test for an example. // if (!(pcfg != nullptr && pcfg->negotiated)) { @@ -3232,6 +3251,9 @@ namespace bpkg } } + if (new_postponement) + temp_postponements.push_back (dpk); + if (!reeval) { // Postpone until (re-)negotiation. @@ -3265,10 +3287,26 @@ namespace bpkg } else { - l5 ([&]{trace << "no cfg-clause for dependency " - << p->available_name_version_db () - << " of dependent " - << pkg.available_name_version_db ();}); + const postponed_configuration* pcfg ( + postponed_cfgs.find_dependency (dpk)); + + if (pcfg != nullptr) + { + l5 ([&]{trace << "dep-postpone dependency " + << p->available_name_version_db () + << " of dependent " + << pkg.available_name_version_db () + << " since already in cluster " << *pcfg;}); + + collect_prereqs = false; + } + else + { + l5 ([&]{trace << "no cfg-clause for dependency " + << p->available_name_version_db () + << " of dependent " + << pkg.available_name_version_db ();}); + } } } } @@ -3277,7 +3315,6 @@ namespace bpkg collect_build_prerequisites (options, *p, dep_chain, - initial_collection, fdb, apc, rpt_depts, @@ -3732,7 +3769,6 @@ namespace bpkg collect_build_prerequisites (options, *b, dep_chain, - initial_collection, fdb, apc, rpt_depts, @@ -4329,7 +4365,6 @@ namespace bpkg collect_build_prerequisites (const pkg_build_options& o, database& db, const package_name& name, - bool initial_collection, const function<find_database_function>& fdb, const function<add_priv_cfg_function>& apc, const repointed_dependents& rpt_depts, @@ -4351,7 +4386,6 @@ namespace bpkg collect_build_prerequisites (o, mi->second.package, dep_chain, - initial_collection, fdb, apc, rpt_depts, @@ -4454,7 +4488,6 @@ namespace bpkg replaced_vers, postponed_cfgs, &dep_chain, - true /* initial_collection */, fdb, apc, &rpt_depts, @@ -4509,28 +4542,28 @@ namespace bpkg build_package p { build_package::drop, - db, - move (sp), - nullptr, - nullptr, - nullopt, // Dependencies. - nullopt, // Dependencies alternatives. - nullopt, // Package skeleton. - nullopt, // Postponed dependency alternatives. - false, // Recursive collection. - nullopt, // Hold package. - nullopt, // Hold version. - {}, // Constraints. - false, // System package. - false, // Keep output directory. - false, // Disfigure (from-scratch reconf). - false, // Configure-only. - nullopt, // Checkout root. - false, // Checkout purge. - strings (), // Configuration variables. - {}, // Required by. - false, // Required by dependents. - 0}; // State flags. + db, + move (sp), + nullptr, + nullptr, + nullopt, // Dependencies. + nullopt, // Dependencies alternatives. + nullopt, // Package skeleton. + nullopt, // Postponed dependency alternatives. + false, // Recursive collection. + nullopt, // Hold package. + nullopt, // Hold version. + {}, // Constraints. + false, // System package. + false, // Keep output directory. + false, // Disfigure (from-scratch reconf). + false, // Configure-only. + nullopt, // Checkout root. + false, // Checkout purge. + strings (), // Configuration variables. + {}, // Required by. + false, // Required by dependents. + 0}; // State flags. auto i (map_.find (pk)); @@ -4976,7 +5009,6 @@ namespace bpkg collect_build_prerequisites (o, *b, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5215,7 +5247,6 @@ namespace bpkg collect_build_prerequisites (o, *b, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5359,7 +5390,6 @@ namespace bpkg collect_build_prerequisites (o, *b, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5413,7 +5443,6 @@ namespace bpkg collect_build_prerequisites (o, *p, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5463,7 +5492,6 @@ namespace bpkg collect_build_prerequisites (o, *p, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5770,7 +5798,6 @@ namespace bpkg collect_build_prerequisites (o, *p, dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5828,7 +5855,7 @@ namespace bpkg // re-doing from scratch feels more correct (i.e., we may end up doing // it earlier which will affect dependency alternatives). // - postponed_deps.cancel_bogus (trace, false /* initial_collection */); + postponed_deps.cancel_bogus (trace); } // Check if any negotiatiated configurations ended up with any bogus @@ -5974,7 +6001,6 @@ namespace bpkg collect_build_prerequisites (o, **postponed_repo.begin (), dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -5998,7 +6024,6 @@ namespace bpkg collect_build_prerequisites (o, **postponed_alts.begin (), dep_chain, - false /* initial_collection */, fdb, apc, rpt_depts, @@ -6355,7 +6380,49 @@ namespace bpkg // replaced_versions for details). Before that the whole dependency // trees from the being replaced dependent stayed in the map. // - assert (bp.action.has_value () == (i != end ())); + if (bp.action.has_value () != (i != end ())) + { + diag_record dr (info); + + if (!bp.action) + { + dr << "pre-entered builds must never be ordered" << + info << "ordered pre-entered " << b.first; + } + else + { + dr << "build actions must be ordered" << + info << "unordered "; + + switch (*bp.action) + { + case build_package::build: + { + dr << "build " << bp.available_name_version_db () << + info << "flags 0x" << hex << uppercase << bp.flags; + break; + } + case build_package::drop: + { + dr << "drop " << *bp.selected << bp.db; + break; + } + case build_package::adjust: + { + dr << "adjustment " << *bp.selected << bp.db << + info << "flags 0x" << hex << uppercase << bp.flags; + break; + } + } + } + + dr << info + << "please report in https://github.com/build2/build2/issues/318"; + + dr.flush (); + + assert (bp.action.has_value () == (i != end ())); + } } } @@ -6518,15 +6585,10 @@ namespace bpkg unacceptable_alternatives unacceptable_alts; replaced_versions replaced_vers; - // Note: the initial_collection value is meaningless since we don't - // perform the actual prerequisites collection in the - // pre-reevaluation mode. - // optional<vector<postponed_configuration::dependency>> deps ( collect_build_prerequisites (o, p, dep_chain, - false /* initial_collection */, fdb, nullptr /* add_priv_cfg_function */, rpt_depts, diff --git a/bpkg/pkg-build-collect.hxx b/bpkg/pkg-build-collect.hxx index a91d2df..3621732 100644 --- a/bpkg/pkg-build-collect.hxx +++ b/bpkg/pkg-build-collect.hxx @@ -472,20 +472,16 @@ namespace bpkg // (e.g., because postponement caused cross-talk between dependency // alternatives). Thus we keep flags that indicate whether we have seen each // type of dependent and then just process dependencies that have the first - // (without config) but not the second (with config). We also need to track - // at which phase of collection an entry has been added to process the bogus - // entries accordingly. + // (without config) but not the second (with config). // struct postponed_dependency { bool wout_config; // Has dependent without config. bool with_config; // Has dependent with config. - bool initial_collection; - postponed_dependency (bool woc, bool wic, bool ic) + postponed_dependency (bool woc, bool wic) : wout_config (woc), - with_config (wic), - initial_collection (ic) {} + with_config (wic) {} bool bogus () const {return wout_config && !with_config;} @@ -516,14 +512,14 @@ namespace bpkg }; void - cancel_bogus (tracer& trace, bool initial_collection) + cancel_bogus (tracer& trace) { bool bogus (false); for (auto i (begin ()); i != end (); ) { const postponed_dependency& d (i->second); - if (d.bogus () && (!initial_collection || d.initial_collection)) + if (d.bogus ()) { bogus = true; @@ -1133,7 +1129,6 @@ namespace bpkg replaced_versions&, postponed_configurations&, build_package_refs* dep_chain = nullptr, - bool initial_collection = false, const function<find_database_function>& = nullptr, const function<add_priv_cfg_function>& = nullptr, const repointed_dependents* = nullptr, @@ -1199,17 +1194,17 @@ namespace bpkg // details). // // Always postpone recursive collection of dependencies for a dependent - // with configuration clauses, recording them in postponed_deps (see - // postponed_dependencies for details) and also recording the dependent in - // postponed_cfgs (see postponed_configurations for details). If it turns - // out that some dependency of such a dependent has already been collected - // via some other dependent without configuration clauses, then throw the - // postpone_dependency exception. This exception is handled via - // re-collecting packages from scratch, but now with the knowledge about - // premature dependency collection. If some dependency already belongs to - // some non or being negotiated cluster then throw merge_configuration. - // If some dependency configuration has already been negotiated between - // some other dependents, then up-negotiate the configuration and throw + // with configuration clauses, recording them together with the dependent + // in postponed_cfgs (see postponed_configurations for details). If it + // turns out that some dependency of such a dependent has already been + // collected via some other dependent without configuration clauses, then + // record it in postponed_deps and throw the postpone_dependency + // exception. This exception is handled via re-collecting packages from + // scratch, but now with the knowledge about premature dependency + // collection. If some dependency already belongs to some non or being + // negotiated cluster then throw merge_configuration. If some dependency + // configuration has already been negotiated between some other + // dependents, then up-negotiate the configuration and throw // retry_configuration exception so that the configuration refinement can // be performed. See the collect lambda implementation for details on the // configuration refinement machinery. @@ -1287,7 +1282,6 @@ namespace bpkg collect_build_prerequisites (const pkg_build_options&, build_package&, build_package_refs& dep_chain, - bool initial_collection, const function<find_database_function>&, const function<add_priv_cfg_function>&, const repointed_dependents&, @@ -1306,7 +1300,6 @@ namespace bpkg collect_build_prerequisites (const pkg_build_options&, database&, const package_name&, - bool initial_collection, const function<find_database_function>&, const function<add_priv_cfg_function>&, const repointed_dependents&, diff --git a/bpkg/pkg-build.cxx b/bpkg/pkg-build.cxx index 02ced21..1554f01 100644 --- a/bpkg/pkg-build.cxx +++ b/bpkg/pkg-build.cxx @@ -4251,27 +4251,7 @@ namespace bpkg auto i (postponed_deps.find (pk)); - if (i == postponed_deps.end ()) - { - pkgs.collect_build_prerequisites ( - o, - p.db, - p.name (), - true /* initial_collection */, - find_prereq_database, - add_priv_cfg, - rpt_depts, - replaced_vers, - postponed_repo, - postponed_alts, - 0 /* max_alt_index */, - postponed_recs, - postponed_edeps, - postponed_deps, - postponed_cfgs, - unacceptable_alts); - } - else + if (i != postponed_deps.end ()) { // Even though the user selection may have a configuration, we // treat it as a dependent without any configuration because @@ -4282,6 +4262,36 @@ namespace bpkg l5 ([&]{trace << "dep-postpone user-specified " << pk;}); } + else + { + const postponed_configuration* pcfg ( + postponed_cfgs.find_dependency (pk)); + + if (pcfg != nullptr) + { + l5 ([&]{trace << "dep-postpone user-specified " << pk + << " since already in cluster " << *pcfg;}); + } + else + { + pkgs.collect_build_prerequisites ( + o, + p.db, + p.name (), + find_prereq_database, + add_priv_cfg, + rpt_depts, + replaced_vers, + postponed_repo, + postponed_alts, + 0 /* max_alt_index */, + postponed_recs, + postponed_edeps, + postponed_deps, + postponed_cfgs, + unacceptable_alts); + } + } } // Note that we need to collect unheld after prerequisites, not to @@ -4398,63 +4408,60 @@ namespace bpkg // is postponed (see above for details). // auto i (postponed_deps.find (pk)); - if (i == postponed_deps.end ()) + if (i != postponed_deps.end ()) { - build_package_refs dep_chain; + i->second.wout_config = true; - // Note: recursive. + // Note: not recursive. // - pkgs.collect_build (o, - move (p), - replaced_vers, - postponed_cfgs, - &dep_chain, - true /* initial_collection */, - find_prereq_database, - add_priv_cfg, - &rpt_depts, - &postponed_repo, - &postponed_alts, - &postponed_recs, - &postponed_edeps, - &postponed_deps, - &unacceptable_alts); + pkgs.collect_build (o, move (p), replaced_vers, postponed_cfgs); + + l5 ([&]{trace << "dep-postpone user-specified dependency " + << pk;}); } else { - i->second.wout_config = true; + const postponed_configuration* pcfg ( + postponed_cfgs.find_dependency (pk)); - l5 ([&]{trace << "dep-postpone user-specified dependency " - << pk;}); + if (pcfg != nullptr) + { + // Note: not recursive. + // + pkgs.collect_build (o, + move (p), + replaced_vers, + postponed_cfgs); + + l5 ([&]{trace << "dep-postpone user-specified dependency " + << pk << " since already in cluster " + << *pcfg;}); + } + else + { + build_package_refs dep_chain; - // Note: not recursive. - // - pkgs.collect_build (o, move (p), replaced_vers, postponed_cfgs); + // Note: recursive. + // + pkgs.collect_build (o, + move (p), + replaced_vers, + postponed_cfgs, + &dep_chain, + find_prereq_database, + add_priv_cfg, + &rpt_depts, + &postponed_repo, + &postponed_alts, + &postponed_recs, + &postponed_edeps, + &postponed_deps, + &unacceptable_alts); + } } } } - // Erase the bogus postponements and re-collect from scratch, if any - // (see postponed_dependencies for details). - // - // Note that we used to re-collect such postponements in-place but - // re-doing from scratch feels more correct (i.e., we may end up - // doing it earlier which will affect dependency alternatives). - // - postponed_deps.cancel_bogus (trace, true /* initial_collection */); - - // Now remove all the dependencies postponed during the initial - // collection since all this information is already in - // postponed_cfgs. - // - for (auto i (postponed_deps.begin ()); i != postponed_deps.end (); ) - { - if (i->second.initial_collection) - i = postponed_deps.erase (i); - else - ++i; - } - // Handle the (combined) postponed collection. // if (find_if (postponed_recs.begin (), postponed_recs.end (), diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index 70ca6e9..de37b1e 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -5729,6 +5729,14 @@ test.arguments += --sys-no-query { $clone_cfg; + # Dependencies: + # + # foo: depends: libfoo(c) + # + # fox: depends: libfoo(c) + # + # fux: depends: libfoo + # $* foo fox fux 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -5749,7 +5757,7 @@ test.arguments += --sys-no-query trace: collect_build_prerequisites: postpone fox/1.0.0 trace: collect_build_prerequisites: begin fux/1.0.0 %.* - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 since already in cluster {foo fox | libfoo->{foo/1,1 fox/1,1}} trace: collect_build_prerequisites: end fux/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {foo fox | libfoo->{foo/1,1 fox/1,1}} @@ -6071,6 +6079,14 @@ test.arguments += --sys-no-query { $clone_cfg; + # Dependencies: + # + # fux: depends: libfoo + # + # foo: depends: libfoo(c) + # + # fix: depends: foo(c) + # $* fux foo fix 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -6126,75 +6142,6 @@ test.arguments += --sys-no-query trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} trace: collect_build_prerequisites: postpone fix/1.0.0 - trace: pkg_build: erase bogus postponement libfoo - trace: pkg_build: bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: no cfg-clause for dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: begin libfoo/1.0.0 - trace: collect_build_prerequisites: end libfoo/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: pkg_build: dep-postpone user-specified foo - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 - trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} - trace: collect_build_prerequisites: postpone fix/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {fix | foo->{fix/1,1}} - %.* - trace: collect_build_postponed (1): cfg-negotiate begin {fix | foo->{fix/1,1}} - %.* - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin foo/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (libfoo), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: collect_build_prerequisites: begin foo/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent foo/1.0.0 - trace: postponed_configurations::add: create {foo | libfoo->{foo/1,1}} - trace: collect_build_prerequisites: postpone foo/1.0.0 - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (foo), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fux/1.0.0 - trace: collect_build: add foo/1.0.0 - trace: collect_build: add fix/1.0.0 - trace: collect_build_prerequisites: begin fux/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: dep-postpone dependency libfoo/1.0.0 of dependent fux/1.0.0 - trace: collect_build_prerequisites: end fux/1.0.0 - trace: pkg_build: dep-postpone user-specified foo - trace: collect_build_prerequisites: begin fix/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency foo/1.0.0 of dependent fix/1.0.0 - trace: postponed_configurations::add: create {fix | foo->{fix/1,1}} - trace: collect_build_prerequisites: postpone fix/1.0.0 trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {fix | foo->{fix/1,1}} %.* @@ -6228,6 +6175,15 @@ test.arguments += --sys-no-query trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* + build plan: + new libfoo/1.0.0 (required by foo, fux) + config.libfoo.extras=true (set by foo) + new fux/1.0.0 + new foo/1.0.0 + config.foo.extras=true (set by fix) + new fix/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -6532,16 +6488,6 @@ test.arguments += --sys-no-query trace: pkg_build: refine package collection/plan execution from scratch %.* trace: collect_build: add libfoo/1.0.0 - trace: pkg_build: dep-postpone user-specified libfoo - trace: collect_drop: overwrite foo - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libfoo - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libfoo/1.0.0 %.* trace: collect_build_prerequisites: skip expected to be dropped existing dependent foo of dependency libfoo trace: collect_build_prerequisites: begin libfoo/1.0.0 @@ -6705,6 +6651,8 @@ test.arguments += --sys-no-query # # fix: depends: foo == 0.1.0 # + # biz/0.1.0: depends: libbiz == 0.1.0 + # # libbiz/1.0.0: depends: libbar # libbiz/0.1.0: # @@ -6761,29 +6709,6 @@ test.arguments += --sys-no-query %.* trace: collect_build: add foo/0.1.0 info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 - trace: collect_build_prerequisites: dep-postpone dependency foo/0.1.0 of dependent fix/0.1.0 - trace: collect_build_prerequisites: end fix/0.1.0 - trace: collect_build_prerequisites: begin libbiz/0.1.0 - trace: collect_build_prerequisites: end libbiz/0.1.0 - trace: collect_build_prerequisites: begin biz/0.1.0 - %.* - trace: collect_build_prerequisites: no cfg-clause for dependency libbiz/0.1.0 of dependent biz/0.1.0 - trace: collect_build_prerequisites: end biz/0.1.0 - trace: pkg_build: erase bogus postponement foo - trace: pkg_build: bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add fix/0.1.0 - trace: collect_build: apply version replacement for libbiz/1.0.0 - trace: collect_build: replacement: libbiz/0.1.0 - trace: collect_build: add libbiz/0.1.0 - trace: collect_build: add biz/0.1.0 - trace: collect_build_prerequisites: begin fix/0.1.0 - %.* - trace: collect_build: add foo/0.1.0 - info: package fix dependency on (foo == 0.1.0) is forcing downgrade of foo/1.0.0 to 0.1.0 trace: collect_build_prerequisites: no cfg-clause for dependency foo/0.1.0 of dependent fix/0.1.0 %.* trace: collect_build_prerequisites: pre-reeval bus/0.1.0 @@ -6994,7 +6919,7 @@ test.arguments += --sys-no-query trace: collect_build: pick libbar/0.1.0 over libbar/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/0.1.0 of existing dependent tex/1.0.0 due to dependency libfoo/0.1.0 trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} - trace: pkg_build: dep-postpone user-specified libbar + trace: pkg_build: dep-postpone user-specified libbar since already in cluster {tex^ | libbar->{tex/1,1}} trace: collect_build_postponed (0): begin trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} %.* @@ -7599,6 +7524,16 @@ test.arguments += --sys-no-query # $* bax baz 2>!; + $pkg_status -r >>EOO; + !bax configured 1.0.0 + libbar configured 1.0.0 + libbox configured 1.0.0 + libfoo configured 1.0.0 + !baz configured 1.0.0 + libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + $* libbox/0.1.0 ?baz 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -7713,16 +7648,6 @@ test.arguments += --sys-no-query trace: pkg_build: refine package collection/plan execution from scratch %.* trace: collect_build: add libbox/0.1.0 - trace: pkg_build: dep-postpone user-specified libbox - trace: collect_drop: overwrite baz - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libbox - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbox/0.1.0 %.* trace: collect_build_prerequisites: pre-reeval bax/1.0.0 %.* @@ -8345,163 +8270,13 @@ test.arguments += --sys-no-query trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 trace: collect_build_prerequisites: resume bix/1.0.0 %.* - trace: collect_build_prerequisites: no cfg-clause for dependency bux/1.0.0 of dependent bix/1.0.0 - trace: collect_build_prerequisites: begin bux/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bux/1.0.0 - trace: postponed_configurations::add: add {bux 1,1: libbar} to {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}? - %.* - trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent 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 bas bix bux | libbar->{bar/1,1 bas/1,1 bix/1,1 bux/1,1} bar->{bix/1,1}}! - trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} - %.* - trace: collect_build_postponed (2): cfg-negotiate begin {bax buc | libfoo->{bax/1,1 buc/1,1}} - %.* - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin libfoo/1.0.0 - trace: collect_build_prerequisites: end libfoo/1.0.0 - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 - trace: collect_build_prerequisites: resume bax/1.0.0 - %.* - trace: collect_build: add libbox/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 - trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bar bas bix bux | libbar->{bar/1,1 bas/1,1 bix/1,1 bux/1,1} bar->{bix/1,1}}! - %.* - trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bar bas bax bix bux | libbar->{bar/1,1 bas/1,1 bax/2,1 bix/1,1 bux/1,1} bar->{bix/1,1} libbox->{bax/2,1}}!, throwing retry_configuration - trace: collect_build_postponed (0): cfg-negotiation of {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} failed due to dependent bax, refining configuration - trace: collect_build_postponed (1): begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} - %.* - trace: collect_build_postponed (1): cfg-negotiate begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin libbar/1.0.0 - trace: collect_build_prerequisites: end libbar/1.0.0 - trace: collect_build_prerequisites: begin bar/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 - trace: postponed_configurations::add: add {bar 1,1: libbar} to {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}}? - trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated - trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping - trace: collect_build_prerequisites: end bar/1.0.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 - trace: collect_build_prerequisites: resume bas/1.0.0 - %.* - trace: collect_build: add bus/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 - trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} - trace: collect_build_prerequisites: postpone bas/1.0.0 - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 - trace: collect_build_prerequisites: resume bix/1.0.0 - %.* - trace: collect_build_prerequisites: no cfg-clause for dependency bux/1.0.0 of dependent bix/1.0.0 - trace: collect_build_prerequisites: begin bux/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bux/1.0.0 - trace: postponed_configurations::add: add {bux 1,1: libbar} to {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}? - trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent 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 bas bix bux | libbar->{bar/1,1 bas/1,1 bix/1,1 bux/1,1} bar->{bix/1,1}}! - trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} - %.* - trace: collect_build_postponed (2): cfg-negotiate begin {bax buc | libfoo->{bax/1,1 buc/1,1}} - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin libfoo/1.0.0 - trace: collect_build_prerequisites: end libfoo/1.0.0 - trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent bax/1.0.0 - trace: collect_build_prerequisites: resume bax/1.0.0 - %.* - trace: collect_build: add libbox/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 - trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bar bas bix bux | libbar->{bar/1,1 bas/1,1 bix/1,1 bux/1,1} bar->{bix/1,1}}! - trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bax/1.0.0 is negotiated - trace: collect_build_prerequisites: collecting cfg-postponed dependency libbox/1.0.0 of dependent bax/1.0.0 - trace: collect_build_prerequisites: begin libbox/1.0.0 - trace: collect_build_prerequisites: end libbox/1.0.0 - trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bax/1.0.0 is already (being) recursively collected, skipping - trace: collect_build_prerequisites: end bax/1.0.0 - trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent buc/1.0.0 - trace: collect_build_prerequisites: resume buc/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency bux/1.0.0 of dependent buc/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (bux), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add bas/1.0.0 - trace: collect_build: add bax/1.0.0 - trace: collect_build: add bix/1.0.0 - trace: collect_build: add buz/1.0.0 - trace: collect_build: add buc/1.0.0 - trace: collect_build_prerequisites: begin bas/1.0.0 - %.* - trace: collect_build: add libbar/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bas/1.0.0 - trace: postponed_configurations::add: create {bas | libbar->{bas/1,1}} - trace: collect_build_prerequisites: postpone bas/1.0.0 - trace: collect_build_prerequisites: begin bax/1.0.0 - %.* - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent bax/1.0.0 - trace: postponed_configurations::add: create {bax | libfoo->{bax/1,1}} - trace: collect_build_prerequisites: postpone bax/1.0.0 - trace: collect_build_prerequisites: begin bix/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bix/1.0.0 - trace: collect_build: add bar/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent bix/1.0.0 - trace: postponed_configurations::add: add {bix 1,1: libbar bar} to {bas | libbar->{bas/1,1}} - trace: collect_build_prerequisites: postpone bix/1.0.0 - trace: collect_build_prerequisites: begin buz/1.0.0 - %.* - trace: collect_build: add bux/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency bux/1.0.0 of dependent buz/1.0.0 - trace: postponed_configurations::add: create {buz | bux->{buz/1,1}} - trace: collect_build_prerequisites: postpone buz/1.0.0 - trace: collect_build_prerequisites: begin buc/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent buc/1.0.0 - trace: postponed_configurations::add: add {buc 1,1: libfoo} to {bax | libfoo->{bax/1,1}} - trace: collect_build_prerequisites: postpone buc/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (1): begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} - %.* - trace: collect_build_postponed (1): cfg-negotiate begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies - trace: collect_build_prerequisites: begin libbar/1.0.0 - trace: collect_build_prerequisites: end libbar/1.0.0 - trace: collect_build_prerequisites: begin bar/1.0.0 - %.* - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 - trace: postponed_configurations::add: add {bar 1,1: libbar} to {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}}? - trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated - trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping - trace: collect_build_prerequisites: end bar/1.0.0 - trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bas/1.0.0 - trace: collect_build_prerequisites: resume bas/1.0.0 - %.* - trace: collect_build: add bus/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency bus/1.0.0 of dependent bas/1.0.0 - trace: postponed_configurations::add: create {bas | bus->{bas/2,1}} - trace: collect_build_prerequisites: postpone bas/1.0.0 - trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 - trace: collect_build_prerequisites: resume bix/1.0.0 - %.* - trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 since already in cluster {buz | bux->{buz/1,1}} trace: collect_build_prerequisites: end bix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} %.* trace: collect_build_postponed (2): cfg-negotiate begin {bax buc | libfoo->{bax/1,1 buc/1,1}} + %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -8513,6 +8288,7 @@ test.arguments += --sys-no-query trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent bax/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bax/1.0.0 trace: postponed_configurations::add: add {bax 2,1: libbox libbar} to {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! + %.* trace: collect_build_prerequisites: cfg-postponing dependent bax/1.0.0 involves (being) negotiated configurations and results in {bar bas bax bix | libbar->{bar/1,1 bas/1,1 bax/2,1 bix/1,1} bar->{bix/1,1} libbox->{bax/2,1}}!, throwing retry_configuration trace: collect_build_postponed (0): cfg-negotiation of {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} failed due to dependent bax, refining configuration trace: collect_build_postponed (1): begin {bas bix | libbar->{bas/1,1 bix/1,1} bar->{bix/1,1}} @@ -8539,7 +8315,7 @@ test.arguments += --sys-no-query trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bix/1.0.0 trace: collect_build_prerequisites: resume bix/1.0.0 %.* - trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 + trace: collect_build_prerequisites: dep-postpone dependency bux/1.0.0 of dependent bix/1.0.0 since already in cluster {buz | bux->{buz/1,1}} trace: collect_build_prerequisites: end bix/1.0.0 trace: collect_build_postponed (1): cfg-negotiate end {bar bas bix | libbar->{bar/1,1 bas/1,1 bix/1,1} bar->{bix/1,1}}! trace: collect_build_postponed (2): begin {bax buc | libfoo->{bax/1,1 buc/1,1}} @@ -10950,7 +10726,7 @@ test.arguments += --sys-no-query trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin tex/0.2.0 %.* - trace: collect_build_prerequisites: dep-postpone dependency libbar/1.0.0 of dependent tex/0.2.0 + trace: collect_build_prerequisites: dep-postpone dependency libbar/1.0.0 of dependent tex/0.2.0 since already in cluster {tix^ | libbar->{tix/1,1}}! %.* trace: collect_build: add libfoo/1.0.0 trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/0.2.0 @@ -11968,11 +11744,11 @@ test.arguments += --sys-no-query # dex: depends: bar(c) # depends: libfoo(c) # - # bux: depends: libbar(c) - # # buc: depends: libfoo(c) # depends: bux(c) # + # bux: depends: libbar(c) + # $* bar dex buc bux 2>>~%EOE%; %.* trace: pkg_build: refine package collection/plan execution from scratch @@ -12055,23 +11831,6 @@ test.arguments += --sys-no-query trace: collect_build: add dex/1.0.0 trace: collect_build: add buc/1.0.0 trace: collect_build: add bux/1.0.0 - trace: collect_build_prerequisites: begin bar/1.0.0 - %.* - trace: collect_build: add libbar/1.0.0 - trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 - trace: postponed_configurations::add: create {bar | libbar->{bar/1,1}} - trace: collect_build_prerequisites: postpone bar/1.0.0 - trace: collect_build_prerequisites: begin dex/1.0.0 - %.* - trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency - trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add bar/1.0.0 - trace: collect_build: add dex/1.0.0 - trace: collect_build: add buc/1.0.0 - trace: collect_build: add bux/1.0.0 trace: pkg_build: dep-postpone user-specified bar trace: collect_build_prerequisites: begin dex/1.0.0 %.* @@ -12089,7 +11848,6 @@ test.arguments += --sys-no-query trace: collect_build_postponed (1): begin {dex | bar->{dex/1,1}} %.* trace: collect_build_postponed (1): cfg-negotiate begin {dex | bar->{dex/1,1}} - %.* trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin bar/1.0.0 %.* @@ -12108,7 +11866,6 @@ test.arguments += --sys-no-query trace: collect_build_postponed (2): begin {buc dex | libfoo->{buc/1,1 dex/2,1}} %.* trace: collect_build_postponed (2): cfg-negotiate begin {buc dex | libfoo->{buc/1,1 dex/2,1}} - %.* trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies trace: collect_build_prerequisites: begin libfoo/1.0.0 trace: collect_build_prerequisites: end libfoo/1.0.0 @@ -12159,6 +11916,19 @@ test.arguments += --sys-no-query trace: collect_build_postponed (0): end trace: execute_plan: simulate: yes %.* + build plan: + new libfoo/1.0.0 (required by buc, dex) + config.libfoo.extras=true (set by buc) + new libbar/1.0.0 (required by bar, bux) + config.libbar.extras=true (set by bar) + new bar/1.0.0 + config.bar.extras=true (set by dex) + new dex/1.0.0 + new bux/1.0.0 + config.bux.extras=true (set by buc) + new buc/1.0.0 + trace: execute_plan: simulate: no + %.* EOE $pkg_status -r >>EOO; @@ -13171,17 +12941,6 @@ test.arguments += --sys-no-query %.* trace: collect_build: add tix/1.0.0 trace: collect_build_prerequisites: skip configured tix/1.0.0 - trace: pkg_build: dep-postpone user-specified dependency libfoo - trace: collect_build: add libfoo/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libfoo - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add tix/1.0.0 - trace: collect_build_prerequisites: skip configured tix/1.0.0 trace: collect_build: add libfoo/1.0.0 %.* trace: collect_build_prerequisites: pre-reeval tex/1.0.0 @@ -13613,17 +13372,6 @@ test.arguments += --sys-no-query %.* trace: collect_build: add libbar/1.0.0 trace: collect_build: add diz/1.0.0 - trace: pkg_build: dep-postpone user-specified libbar - trace: collect_build_prerequisites: skip configured diz/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libbar - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbar/1.0.0 - trace: collect_build: add diz/1.0.0 %.* trace: collect_build_prerequisites: pre-reeval bar/1.0.0 %.* @@ -13837,7 +13585,6 @@ test.arguments += --sys-no-query %.* trace: pkg_build: refine package collection/plan execution %.* - trace: pkg_build: dep-postpone user-specified dependency libbox trace: collect_build: pick libbox/1.0.0 over libbox/0.1.0 trace: collect_build: libbox/0.1.0 package version needs to be replaced with libbox/1.0.0 trace: pkg_build: collection failed due to package version replacement, retry from scratch @@ -13846,22 +13593,6 @@ test.arguments += --sys-no-query %.* trace: collect_build: add libbar/1.0.0 trace: collect_build: add diz/1.0.0 - trace: pkg_build: dep-postpone user-specified libbar - trace: collect_build_prerequisites: skip configured diz/1.0.0 - trace: pkg_build: dep-postpone user-specified dependency libbox - trace: collect_build: apply version replacement for libbox/1.0.0 - trace: collect_build: replacement: libbox/1.0.0 - trace: collect_build: add libbox/1.0.0 - trace: collect_build_postponed (0): begin - trace: collect_build_postponed (0): erase bogus postponement libbar - trace: collect_build_postponed (0): erase bogus postponement libbox - trace: collect_build_postponed (0): bogus postponements erased, throwing - trace: pkg_build: collection failed due to bogus dependency collection postponement cancellation, retry from scratch - %.* - trace: pkg_build: refine package collection/plan execution from scratch - %.* - trace: collect_build: add libbar/1.0.0 - trace: collect_build: add diz/1.0.0 %.* trace: collect_build_prerequisites: pre-reeval bar/1.0.0 %.* @@ -14116,6 +13847,643 @@ test.arguments += --sys-no-query $pkg_drop diz libbar --drop-dependent } + : multiple-dependency-postpones + : + { + $clone_cfg; + + # Dependencies: + # + # diz: depends: dox(c) + # depends: libbox(c) + # depends: libbar(c) + # + # dox: depends: dex(c) + # + # dex: depends: bar(c) + # depends: libfoo(c) + # + # bar: depends: libbar(c) + # + $* diz dex libbar/0.1.0 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured 1.0.0 + EOO + + $* --upgrade --recursive 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: skip configured dex/1.0.0 + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: reeval bar/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + %.* + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + %.* + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (dex), retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: reeval bar/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {bar^ 1,1: libbar} to {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent bar/1.0.0 results in {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: re-evaluated bar/1.0.0 + trace: collect_build_prerequisites: reeval diz/1.0.0 + %.* + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): select cfg-negotiated dependency alternative for dependent bar/1.0.0 + trace: collect_build_prerequisites: resume bar/1.0.0 + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + %.* + trace: collect_build_prerequisites: cannot cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (bar), retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add dex/1.0.0 + trace: collect_build: add diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent bar/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {bar^ | libbar->{bar/1,1}} + trace: collect_build: add dox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency dox/1.0.0 of existing dependent diz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {diz^ | dox->{diz/1,1}} + trace: pkg_build: dep-postpone user-specified dex + trace: collect_build_prerequisites: skip configured diz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + %.* + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + %.* + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + %.* + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + %.* + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent diz/1.0.0 involves (being) negotiated configurations and results in {bar^ diz | libbar->{bar/1,1 diz/3,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {bar^ | libbar->{bar/1,1}} failed due to dependent diz, refining configuration + trace: collect_build_postponed (1): begin {bar^ | libbar->{bar/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval bar/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated bar/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval diz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated diz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {bar^ | libbar->{bar/1,1}} + trace: collect_build_prerequisites: reeval diz/1.0.0 + %.* + trace: postponed_configurations::add: add {diz^ 1,1: dox} to {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent diz/1.0.0 results in {diz^ | dox->{diz/1,1}} + trace: collect_build_prerequisites: re-evaluated diz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent bar + trace: collect_build_postponed (1): cfg-negotiate end {bar^ | libbar->{bar/1,1}}! + trace: collect_build_postponed (2): begin {diz^ | dox->{diz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent diz of dependency dox + trace: collect_build_postponed (2): cfg-negotiate begin {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dox/1.0.0 + %.* + trace: collect_build_prerequisites: cfg-postpone dependency dex/1.0.0 of dependent dox/1.0.0 + trace: postponed_configurations::add: create {dox | dex->{dox/1,1}} + trace: collect_build_prerequisites: postpone dox/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: add libbox/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbox/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: create {diz | libbox->{diz/2,1}} + trace: collect_build_prerequisites: postpone diz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {diz^ | dox->{diz/1,1}}! + trace: collect_build_postponed (3): begin {dox | dex->{dox/1,1}} + %.* + trace: collect_build_postponed (3): skip being built existing dependent dox of dependency dex + trace: collect_build_postponed (3): cfg-negotiate begin {dox | dex->{dox/1,1}} + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin dex/1.0.0 + %.* + trace: collect_build: add bar/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency bar/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | bar->{dex/1,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent dox/1.0.0 + trace: collect_build_prerequisites: resume dox/1.0.0 + trace: collect_build_prerequisites: end dox/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {dox | dex->{dox/1,1}}! + trace: collect_build_postponed (4): begin {diz | libbox->{diz/2,1}} + %.* + trace: collect_build_postponed (4): skip being built existing dependent diz of dependency libbox + trace: collect_build_postponed (4): cfg-negotiate begin {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libbox/1.0.0 + trace: collect_build_postponed (4): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (4): select cfg-negotiated dependency alternative for dependent diz/1.0.0 + trace: collect_build_prerequisites: resume diz/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent diz/1.0.0 + trace: postponed_configurations::add: add {diz 3,1: libbar} to {bar^ | libbar->{bar/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent diz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent diz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end diz/1.0.0 + trace: collect_build_postponed (4): cfg-negotiate end {diz | libbox->{diz/2,1}}! + trace: collect_build_postponed (5): begin {dex | bar->{dex/1,1}} + %.* + trace: collect_build_postponed (5): skip being built existing dependent dex of dependency bar + trace: collect_build_postponed (5): cfg-negotiate begin {dex | bar->{dex/1,1}} + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin bar/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent bar/1.0.0 + trace: postponed_configurations::add: add {bar 1,1: libbar} to {bar^ diz | libbar->{bar/1,1 diz/3,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent bar/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent bar/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end bar/1.0.0 + trace: collect_build_postponed (5): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (5): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + %.* + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent dex/1.0.0 + trace: postponed_configurations::add: create {dex | libfoo->{dex/2,1}} + trace: collect_build_prerequisites: postpone dex/1.0.0 + trace: collect_build_postponed (5): cfg-negotiate end {dex | bar->{dex/1,1}}! + trace: collect_build_postponed (6): begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (6): skip being built existing dependent dex of dependency libfoo + trace: collect_build_postponed (6): cfg-negotiate begin {dex | libfoo->{dex/2,1}} + %.* + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (6): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (6): select cfg-negotiated dependency alternative for dependent dex/1.0.0 + trace: collect_build_prerequisites: resume dex/1.0.0 + trace: collect_build_prerequisites: end dex/1.0.0 + trace: collect_build_postponed (6): cfg-negotiate end {dex | libfoo->{dex/2,1}}! + trace: collect_build_postponed (6): end {dex | libfoo->{dex/2,1}} + trace: collect_build_postponed (5): end {dex | bar->{dex/1,1}} + trace: collect_build_postponed (4): end {diz | libbox->{diz/2,1}} + trace: collect_build_postponed (3): end {dox | dex->{dox/1,1}} + trace: collect_build_postponed (2): end {diz^ | dox->{diz/1,1}} + trace: collect_build_postponed (1): end {bar^ | libbar->{bar/1,1}} + trace: collect_build_postponed (0): end + %.* + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by diz) + reconfigure/update bar/1.0.0 (required by dex) + config.bar.extras=true (set by dex) + reconfigure/update dex/1.0.0 + config.dex.extras=true (set by dox) + reconfigure/update dox/1.0.0 (required by diz) + config.dox.extras=true (set by diz) + reconfigure/update diz/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + !diz configured 1.0.0 + dox configured 1.0.0 + !dex configured 1.0.0 + bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + !libbar configured 1.0.0 + libbox configured 1.0.0 + EOO + + $pkg_drop diz dex libbar --drop-dependent + } + + : collected-dependency-non-negotiated-cluster + : + { + $clone_cfg; + + # Dependencies: + # + # tiz: depends: tex(c) + # depends: libbar(c) + # + # tex: depends: libbar(c) + # depends: libfoo(c) + # + $* tiz libbar/0.1.0 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured 1.0.0 + EOO + + $* --upgrade --recursive 2>>~%EOE%; + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of existing dependent tiz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: skip configured tiz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tex/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: postponed_configurations::add: add {tex^ 1,1: libbar} to {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tex/1.0.0 results in {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: re-evaluated tex/1.0.0 + trace: collect_build_prerequisites: reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: cannot re-evaluate existing dependent tiz/1.0.0 due to dependency tex/1.0.0 (collected prematurely), throwing postpone_dependency + trace: pkg_build: collection failed due to prematurely collected dependency (tex), retry from scratch + %.* + trace: pkg_build: refine package collection/plan execution from scratch + %.* + trace: collect_build: add libbar/1.0.0 + trace: collect_build: add tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of existing dependent tex/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {tex^ | libbar->{tex/1,1}} + trace: collect_build: add tex/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency tex/1.0.0 of existing dependent tiz/1.0.0 due to dependency libbar/1.0.0 + trace: postponed_configurations::add: create {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: skip configured tiz/1.0.0 + trace: collect_build_postponed (0): begin + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + %.* + trace: postponed_configurations::add: add {tiz^ 1,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + %.* + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: cfg-postponing dependent tex/1.0.0 involves (being) negotiated configurations and results in {tex^ | libbar->{tex/1,1}}!, throwing retry_configuration + trace: collect_build_postponed (0): cfg-negotiation of {tex^ | libbar->{tex/1,1}} failed due to dependent tex, refining configuration + trace: collect_build_postponed (1): begin {tex^ | libbar->{tex/1,1}} + %.* + trace: collect_build_prerequisites: pre-reeval tex/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tex/1.0.0: 1,1 + trace: collect_build_prerequisites: pre-reeval tiz/1.0.0 + %.* + trace: collect_build_prerequisites: pre-reevaluated tiz/1.0.0: 1,1 + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex of dependency libbar + trace: collect_build_postponed (1): re-evaluate existing dependents for {tex^ | libbar->{tex/1,1}} + trace: collect_build_prerequisites: reeval tiz/1.0.0 + %.* + trace: postponed_configurations::add: add {tiz^ 1,1: tex} to {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluating dependent tiz/1.0.0 results in {tiz^ | tex->{tiz/1,1}} + trace: collect_build_prerequisites: re-evaluated tiz/1.0.0 + trace: collect_build_postponed (1): cfg-negotiate begin {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin libbar/1.0.0 + trace: collect_build_prerequisites: end libbar/1.0.0 + trace: collect_build_postponed (1): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (1): skip dep-postponed existing dependent tex + trace: collect_build_postponed (1): cfg-negotiate end {tex^ | libbar->{tex/1,1}}! + trace: collect_build_postponed (2): begin {tiz^ | tex->{tiz/1,1}} + %.* + trace: collect_build_postponed (2): skip being built existing dependent tiz of dependency tex + trace: collect_build_postponed (2): cfg-negotiate begin {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: begin tex/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: add {tex 1,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tex/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tex/1.0.0 is already (being) recursively collected, skipping + %.* + trace: collect_build: add libfoo/1.0.0 + trace: collect_build_prerequisites: cfg-postpone dependency libfoo/1.0.0 of dependent tex/1.0.0 + trace: postponed_configurations::add: create {tex | libfoo->{tex/2,1}} + trace: collect_build_prerequisites: postpone tex/1.0.0 + trace: collect_build_postponed (2): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (2): select cfg-negotiated dependency alternative for dependent tiz/1.0.0 + trace: collect_build_prerequisites: resume tiz/1.0.0 + %.* + trace: collect_build: pick libbar/1.0.0 over libbar/0.1.0 + trace: collect_build_prerequisites: cfg-postpone dependency libbar/1.0.0 of dependent tiz/1.0.0 + trace: postponed_configurations::add: add {tiz 2,1: libbar} to {tex^ | libbar->{tex/1,1}}! + trace: collect_build_prerequisites: configuration for cfg-postponed dependencies of dependent tiz/1.0.0 is negotiated + trace: collect_build_prerequisites: dependency libbar/1.0.0 of dependent tiz/1.0.0 is already (being) recursively collected, skipping + trace: collect_build_prerequisites: end tiz/1.0.0 + trace: collect_build_postponed (2): cfg-negotiate end {tiz^ | tex->{tiz/1,1}}! + trace: collect_build_postponed (3): begin {tex | libfoo->{tex/2,1}} + %.* + trace: collect_build_postponed (3): skip being built existing dependent tex of dependency libfoo + trace: collect_build_postponed (3): cfg-negotiate begin {tex | libfoo->{tex/2,1}} + %.* + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependencies + trace: collect_build_prerequisites: skip configured libfoo/1.0.0 + trace: collect_build_postponed (3): recursively collect cfg-negotiated dependents + trace: collect_build_postponed (3): select cfg-negotiated dependency alternative for dependent tex/1.0.0 + trace: collect_build_prerequisites: resume tex/1.0.0 + trace: collect_build_prerequisites: end tex/1.0.0 + trace: collect_build_postponed (3): cfg-negotiate end {tex | libfoo->{tex/2,1}}! + trace: collect_build_postponed (3): end {tex | libfoo->{tex/2,1}} + trace: collect_build_postponed (2): end {tiz^ | tex->{tiz/1,1}} + trace: collect_build_postponed (1): end {tex^ | libbar->{tex/1,1}} + trace: collect_build_postponed (0): end + %.* + trace: execute_plan: simulate: yes + %.* + build plan: + upgrade libbar/1.0.0 + config.libbar.extras=true (set by tex) + reconfigure/update tex/1.0.0 (required by tiz) + config.tex.extras=true (set by tiz) + reconfigure/update tiz/1.0.0 + trace: execute_plan: simulate: no + %.* + EOE + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured 1.0.0 + EOO + + $pkg_drop tiz libbar --drop-dependent + } + : all-repo-packages : : Don't match the tracing but just make sure that pkg-build doesn't crash @@ -14129,7 +14497,7 @@ test.arguments += --sys-no-query { $clone_cfg; - $* libfoo libbar ?libbaz/0.1.0 ?libbox/0.1.0 \ + $* libfoo libbar ?libbaz/0.1.0 ?libbox/0.1.0 libbiz \ foo fox fux fix fex bar baz bac bat bas bus \ box bax bux bix bex boo biz buz buc tax tex \ tix tiz toz tez tux dex dix diz dox 2>!; @@ -14144,6 +14512,8 @@ test.arguments += --sys-no-query !tux configured 1.0.0 libbox configured !0.1.0 available 1.0.0 !tix configured 0.1.0 available 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 !bar configured 1.0.0 !libbar configured 1.0.0 !bux configured 1.0.0 @@ -14247,11 +14617,973 @@ test.arguments += --sys-no-query libbox configured !0.1.0 available 1.0.0 EOO - $pkg_drop libfoo libbar foo fox fux fix fex bar \ + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar \ + baz bac bat bas bus box bax bux bix bex \ + boo biz buz buc tax tex tix tiz toz tez \ + tux dex dix diz dox + } + + : upgrade-recursive-libs + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 libbiz/0.1.0 \ + foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex \ + tix tiz toz tez tux dex dix diz dox 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !libbiz configured !0.1.0 available 1.0.0 + !bat configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tez configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !box configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar \ + baz bac bat bas bus box bax bux bix bex \ + boo biz buz buc tax tex tix tiz toz tez \ + tux dex dix diz dox + } + + : upgrade-immediate-libs + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 libbiz/0.1.0 \ + foo fox fux fix fex bar baz bac bat bas bus \ + box bax bux bix bex boo biz buz buc tax tex \ + tix tiz toz tez tux dex dix diz dox 2>!; + + $pkg_status -r >>EOO; + !libbar configured !0.1.0 available 1.0.0 + !libbiz configured !0.1.0 available 1.0.0 + !bat configured 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tez configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !box configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + !tex configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --immediate 2>!; + + $pkg_status -r >>EOO; + !libbar configured 1.0.0 + !libbiz configured 1.0.0 + !libbar configured 1.0.0 + !bat configured 1.0.0 + libbaz configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !bex configured 1.0.0 + !libbar configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + !libbar configured 1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !tez configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + !libbar configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + !libbar configured 1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !libbar configured 1.0.0 + !box configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !bax configured 1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + !libbar configured 1.0.0 + !tex configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + !libbar configured 1.0.0 + libfoo configured !1.0.0 + !libbar configured 1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop libfoo libbar libbiz foo fox fux fix fex bar \ baz bac bat bas bus box bax bux bix bex \ boo biz buz buc tax tex tix tiz toz tez \ tux dex dix diz dox } + + : upgrade-recursive + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 ?libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + ?libbiz/0.1.0 foo/0.1.0 fox/0.1.0 fux/1.0.0 fix/0.1.0 fex/1.0.0 \ + bar/0.1.0 baz/0.1.0 bac/1.0.0 bat/1.0.0 bas/1.0.0 bus/0.1.0 \ + box/0.1.0 bax/1.0.0 bux/1.0.0 bix/1.0.0 bex/1.0.0 boo/1.0.0 \ + biz/0.1.0 buz/1.0.0 buc/1.0.0 tax/1.0.0 tex/0.1.0 tix/0.1.0 \ + tiz/1.0.0 toz/0.1.0 tez/1.0.0 tux/1.0.0 dex/1.0.0 dix/1.0.0 \ + diz/1.0.0 dox/1.0.0 2>!; + + $pkg_status -r >>EOO; + !bat configured !1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !biz configured !0.1.0 available 1.0.0 + libbiz configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !box configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tux configured !1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !fox configured !0.1.0 available 1.0.0 0.2.0 + libbar configured !0.1.0 available 1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bex configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !boo configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !buz configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tez configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !bix configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured !1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bas configured !1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --recursive 2>!; + + $pkg_status -r >>EOO; + !bat configured 1.0.0 + libbaz configured !1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !box configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !bex configured 1.0.0 + libbar configured !1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !tez configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libbar configured !1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + libbar configured !1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + libbar configured !1.0.0 + !bax configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + libbar configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop foo fox fux fix fex bar baz bac bat bas bus box bax bux bix \ + bex boo biz buz buc tax tex tix tiz toz tez tux dex dix diz \ + dox + } + + : upgrade-immediate + : + { + $clone_cfg; + + $* ?libfoo/0.1.0 ?libbar/0.1.0 ?libbaz/0.1.0 ?libbox/0.1.0 \ + ?libbiz/0.1.0 foo/0.1.0 fox/0.1.0 fux/1.0.0 fix/0.1.0 fex/1.0.0 \ + bar/0.1.0 baz/0.1.0 bac/1.0.0 bat/1.0.0 bas/1.0.0 bus/0.1.0 \ + box/0.1.0 bax/1.0.0 bux/1.0.0 bix/1.0.0 bex/1.0.0 boo/1.0.0 \ + biz/0.1.0 buz/1.0.0 buc/1.0.0 tax/1.0.0 tex/0.1.0 tix/0.1.0 \ + tiz/1.0.0 toz/0.1.0 tez/1.0.0 tux/1.0.0 dex/1.0.0 dix/1.0.0 \ + diz/1.0.0 dox/1.0.0 2>!; + + $pkg_status -r >>EOO; + !bat configured !1.0.0 + libbaz configured !0.1.0 available 1.0.0 + !biz configured !0.1.0 available 1.0.0 + libbiz configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !box configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tux configured !1.0.0 + libbox configured !0.1.0 available 1.0.0 + !tix configured !0.1.0 available 1.0.0 + !fox configured !0.1.0 available 1.0.0 0.2.0 + libbar configured !0.1.0 available 1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bex configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !boo configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !buz configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tez configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !toz configured !0.1.0 available 1.0.0 0.2.0 + !bix configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fux configured !1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !baz configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bac configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbaz configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !fix configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !fex configured !1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !bas configured !1.0.0 + !bus configured !0.1.0 available 1.0.0 + !foo configured !0.1.0 available 1.0.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + !bax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !buc configured !1.0.0 + !bux configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tax configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !tiz configured !1.0.0 + libbar configured !0.1.0 available 1.0.0 + !tex configured !0.1.0 available 1.0.0 0.3.0 0.2.0 + libfoo configured !0.1.0 available 1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + !dix configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + !diz configured !1.0.0 + !dox configured !1.0.0 + !dex configured !1.0.0 + !bar configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libfoo configured !0.1.0 available 1.0.0 + libbar configured !0.1.0 available 1.0.0 + libbox configured !0.1.0 available 1.0.0 + EOO + + $* --upgrade --immediate 2>!; + + $pkg_status -r >>EOO; + !bat configured 1.0.0 + libbaz configured !1.0.0 + !biz configured 1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !box configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tux configured 1.0.0 + libbox configured !1.0.0 + !tix configured 0.1.0 available 1.0.0 + !fox configured 1.0.0 + libfoo configured !1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !bex configured 1.0.0 + libbar configured !1.0.0 + !boo configured 1.0.0 + libbar configured !1.0.0 + !buz configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + !tez configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !toz configured 0.1.0 available 1.0.0 0.2.0 + !bix configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libbar configured !1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fux configured 1.0.0 + libfoo configured !1.0.0 + !baz configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !bac configured 1.0.0 + libbar configured !1.0.0 + libbaz configured !1.0.0 + libfoo configured !1.0.0 + !fix configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + !fex configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libfoo configured !1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + !bas configured 1.0.0 + !bus configured 1.0.0 + !foo configured 1.0.0 + libfoo configured !1.0.0 + libbaz configured !1.0.0 + libbar configured !1.0.0 + !bax configured 1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + libfoo configured !1.0.0 + !buc configured 1.0.0 + !bux configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tax configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !tiz configured 1.0.0 + libbar configured !1.0.0 + !tex configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + !dix configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + !diz configured 1.0.0 + !dox configured 1.0.0 + !dex configured 1.0.0 + !bar configured 1.0.0 + libbar configured !1.0.0 + libfoo configured !1.0.0 + libbar configured !1.0.0 + libbox configured !1.0.0 + EOO + + $pkg_drop foo fox fux fix fex bar baz bac bat bas bus box bax bux bix \ + bex boo biz buz buc tax tex tix tiz toz tez tux dex dix diz \ + dox + } } } |