aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bpkg/pkg-configure.cxx19
1 files changed, 18 insertions, 1 deletions
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.
//