aboutsummaryrefslogtreecommitdiff
path: root/bpkg/package.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2023-08-08 15:28:25 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2023-09-25 11:35:25 +0300
commitbbf4d75525f54a41ebf38608c193f5787128c590 (patch)
treef66707abaaf18d15b339615fcfd24a56278b079a /bpkg/package.cxx
parent6f40a051db7ef6c42c4856f0608ce1dad4fcf609 (diff)
Fix configuration negotiation in pkg-build to re-evaluate being reconfigured existing dependents
Diffstat (limited to 'bpkg/package.cxx')
-rw-r--r--bpkg/package.cxx12
1 files changed, 9 insertions, 3 deletions
diff --git a/bpkg/package.cxx b/bpkg/package.cxx
index 56f4221..aca3550 100644
--- a/bpkg/package.cxx
+++ b/bpkg/package.cxx
@@ -296,12 +296,18 @@ namespace bpkg
// The package is in at least fetched state, which means we should
// be able to get its manifest.
//
- const optional<path>& a (sp->archive);
-
+ // @@ PERF We should probably implement the available package caching not
+ // to parse the same manifests multiple times during all that build
+ // plan refinement iterations. What should be the cache key? Feels like
+ // it should be the archive/directory path. Note that the package
+ // manifests can potentially differ in different external package
+ // directories for the same version iteration. Testing showed 6%
+ // speedup on tests (debug/sanitized).
+ //
package_manifest m (
sp->state == package_state::fetched
? pkg_verify (options,
- a->absolute () ? *a : db.config_orig / *a,
+ sp->effective_archive (db.config_orig),
true /* ignore_unknown */,
false /* ignore_toolchain */,
false /* expand_values */,