diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-03-21 21:40:28 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-04-19 19:39:55 +0300 |
commit | 15dff3c592385466406732cd6ced809dc28cf2e2 (patch) | |
tree | 1da9f0738293eb7906d92ab010a79c689087b655 /bpkg/package.cxx | |
parent | 46842f6cf74d085ced382dd0c187f6a7a578913c (diff) |
Implement build plan simulation
Diffstat (limited to 'bpkg/package.cxx')
-rw-r--r-- | bpkg/package.cxx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/bpkg/package.cxx b/bpkg/package.cxx index da862ef..29460e4 100644 --- a/bpkg/package.cxx +++ b/bpkg/package.cxx @@ -145,6 +145,28 @@ namespace bpkg return result (); } + vector<shared_ptr<available_package>> + filter (const vector<shared_ptr<repository>>& rps, + odb::result<available_package>&& apr, + bool prereq) + { + vector<shared_ptr<available_package>> aps; + + for (shared_ptr<available_package> ap: pointer_result (apr)) + { + for (const shared_ptr<repository> r: rps) + { + if (filter (r, ap, prereq) != nullptr) + { + aps.push_back (move (ap)); + break; + } + } + } + + return aps; + } + // selected_package // string selected_package:: @@ -201,6 +223,9 @@ namespace bpkg string mc (sha256 (o, d / manifest_file)); + // The selected package must not be "simulated" (see pkg-build for + // details). + // assert (p->manifest_checksum); bool changed (mc != *p->manifest_checksum); @@ -211,9 +236,7 @@ namespace bpkg // if (!changed && p->external ()) { - dir_path src_root (p->src_root->absolute () - ? *p->src_root - : c / *p->src_root); + dir_path src_root (p->effective_src_root (c)); // We need to complete and normalize the source directory as it may // generally be completed against the configuration directory (unlikely |