From e9f64680a152c5aafd023bb5691447012e222590 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 9 Jul 2020 11:06:02 +0200 Subject: Relax prerequisite filtering semantics of aliases in test and install rules --- libbuild2/install/rule.cxx | 3 +-- libbuild2/install/rule.hxx | 3 +-- libbuild2/test/rule.cxx | 10 +++++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libbuild2/install/rule.cxx b/libbuild2/install/rule.cxx index 901b048..d7b0fc0 100644 --- a/libbuild2/install/rule.cxx +++ b/libbuild2/install/rule.cxx @@ -63,8 +63,7 @@ namespace build2 const target* alias_rule:: filter (action, const target& t, const prerequisite& p) const { - const target& pt (search (t, p)); - return pt.in (t.weak_scope ()) ? &pt : nullptr; + return &search (t, p); } recipe alias_rule:: diff --git a/libbuild2/install/rule.hxx b/libbuild2/install/rule.hxx index 5896589..916fc6d 100644 --- a/libbuild2/install/rule.hxx +++ b/libbuild2/install/rule.hxx @@ -25,8 +25,7 @@ namespace build2 match (action, target&, const string&) const override; // Return NULL if this prerequisite should be ignored and pointer to its - // target otherwise. The default implementation accepts all prerequsites - // from the target's (weak) amalgamation. + // target otherwise. The default implementation allows all prerequsites. // // The prerequisite is passed as an iterator allowing the filter to // "see" inside groups. diff --git a/libbuild2/test/rule.cxx b/libbuild2/test/rule.cxx index a895e27..e1006d8 100644 --- a/libbuild2/test/rule.cxx +++ b/libbuild2/test/rule.cxx @@ -97,7 +97,15 @@ namespace build2 // no project at all (e.g., installed). Also, generally, not testing // stuff that's not ours seems right. // - match_prerequisites (a, t, t.root_scope ()); + // At least that was the thinking until we've added support for ad hoc + // importation and the ability to "pull" other project's targets in a + // "glue" kind of project. Also, on the other hand to the above + // reasoning, it is unlikely a "foreign" target is listed as a + // prerequisite of an alias unintentionally. For example, an alias is + // unlikely to depend on an installed header or library. So now we + // allow this. + // + match_prerequisites (a, t); } size_t pass_n (pts.size ()); // Number of pass-through prerequisites. -- cgit v1.1