From 15dff3c592385466406732cd6ced809dc28cf2e2 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 21 Mar 2018 21:40:28 +0300 Subject: Implement build plan simulation --- bpkg/package.cxx | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'bpkg/package.cxx') 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> + filter (const vector>& rps, + odb::result&& apr, + bool prereq) + { + vector> aps; + + for (shared_ptr ap: pointer_result (apr)) + { + for (const shared_ptr 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 -- cgit v1.1