aboutsummaryrefslogtreecommitdiff
path: root/bpkg
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2023-07-19 15:14:45 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2023-07-19 16:47:00 +0300
commitfb8c6c683463a1c18e29d4801bc4f5a33552bf0e (patch)
treef73afb261fb47f619fe7a7fd79d42e95f46506d0 /bpkg
parentc279979af18d59d935512d91c7e75762b914bdfd (diff)
Don't reconfigure re-evaluated dependent if it's dependencies are not reconfigured
Diffstat (limited to 'bpkg')
-rw-r--r--bpkg/pkg-build-collect.cxx14
-rw-r--r--bpkg/pkg-build.cxx8
2 files changed, 16 insertions, 6 deletions
diff --git a/bpkg/pkg-build-collect.cxx b/bpkg/pkg-build-collect.cxx
index c8173b2..729c145 100644
--- a/bpkg/pkg-build-collect.cxx
+++ b/bpkg/pkg-build-collect.cxx
@@ -4716,6 +4716,16 @@ namespace bpkg
lazy_shared_ptr<repository_fragment>> rp (
find_available_fragment (o, pk.db, ed.selected));
+ // Note that a re-evaluated package doesn't necessarily needs to
+ // be reconfigured and thus we don't add the
+ // build_package::adjust_reconfigure flag here.
+ //
+ // Specifically, if none of its dependencies get reconfigured,
+ // then it doesn't need to be reconfigured either since nothing
+ // changes for its config clauses. Otherwise, the
+ // build_package::adjust_reconfigure flag will be added normally
+ // by collect_order_dependents().
+ //
build_package p {
build_package::build,
pk.db,
@@ -4740,7 +4750,6 @@ namespace bpkg
set<package_key> ( // Required by (dependency).
ds.begin (), ds.end ()),
false, // Required by dependents.
- build_package::adjust_reconfigure |
build_package::build_reevaluate};
// Note: not recursive.
@@ -5005,9 +5014,6 @@ namespace bpkg
// Unless the dependency is already being reconfigured, reconfigure
// it if its configuration changes.
//
- // Note that for configured dependents which belong to the
- // configuration cluster this flag is already set (see above).
- //
if (!b->reconfigure ())
{
const shared_ptr<selected_package>& sp (b->selected);
diff --git a/bpkg/pkg-build.cxx b/bpkg/pkg-build.cxx
index f9882b6..ed23ea5 100644
--- a/bpkg/pkg-build.cxx
+++ b/bpkg/pkg-build.cxx
@@ -5589,10 +5589,14 @@ namespace bpkg
database& db (p.db);
+ // Note: don't update the re-evaluated dependent unless it is
+ // reconfigured.
+ //
if ((*p.action == build_package::adjust && p.reconfigure ()) ||
(*p.action == build_package::build &&
- (p.flags & (build_package::build_repoint |
- build_package::build_reevaluate)) != 0))
+ ((p.flags & build_package::build_repoint) != 0 ||
+ ((p.flags & build_package::build_reevaluate) != 0 &&
+ p.reconfigure ()))))
upkgs.push_back (pkg_command_vars {db.config_orig,
!multi_config () && db.main (),
p.selected,