From 00cae984f8196cdc0d436cfb54059ba939d09957 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 1 Jun 2022 13:23:53 +0300 Subject: Fail for manual configuring dependents with configuration clauses in pkg-configure --- bpkg/pkg-configure.cxx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/bpkg/pkg-configure.cxx b/bpkg/pkg-configure.cxx index 7c0f4bc..34fe269 100644 --- a/bpkg/pkg-configure.cxx +++ b/bpkg/pkg-configure.cxx @@ -76,6 +76,18 @@ namespace bpkg size_t>, 2> edas; + // If the dependency alternatives are not pre-selected, then evaluate + // the enable clauses. + // + // Note that evaluating the require and prefer clauses in this case is + // meaningless since we don't reconfigure the dependencies nor negotiate + // configurations with other dependents. What we should probably do is + // load configurations of the dependencies and use them while evaluating + // the dependent's enable and reflect clauses as we go along. Probably + // we should still evaluate the accept clauses to make sure that the + // dependency is configured acceptably for the dependent. For now we + // fail and will support this maybe later. + // if (alts == nullptr) { if (toolchain_buildtime_dependency (o, das, &ps.name ())) @@ -86,7 +98,13 @@ namespace bpkg const dependency_alternative& da (das[i]); if (!da.enable || ps.evaluate_enable (*da.enable, di)) + { + if (da.prefer || da.require) + fail << "manual configuration of dependents with prefer or " + << "require clauses is not yet supported"; + edas.push_back (make_pair (ref (da), i)); + } } if (edas.empty ()) @@ -101,7 +119,6 @@ namespace bpkg edas.push_back (make_pair (ref (das.front ()), (*alts)[di])); } - // Pick the first alternative with dependencies that can all be resolved // to the configured packages, satisfying the respective constraints. // -- cgit v1.1