From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 67336 invoked by alias); 1 Aug 2019 16:07:46 -0000 Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com Received: (qmail 67322 invoked by uid 89); 1 Aug 2019 16:07:45 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=HX-Languages-Length:2885, 7587, HContent-Transfer-Encoding:8bit X-HELO: rgout0806.bt.lon5.cpcloud.co.uk Received: from rgout0806.bt.lon5.cpcloud.co.uk (HELO rgout0806.bt.lon5.cpcloud.co.uk) (65.20.0.153) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Aug 2019 16:07:44 +0000 X-OWM-Source-IP: 31.51.206.148 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-SNCR-VADESECURE: CLEAN Received: from localhost.localdomain (31.51.206.148) by rgout08.bt.lon5.cpcloud.co.uk (9.0.019.26-1) (authenticated as jonturney@btinternet.com) id 5BC47A871A4DF236; Thu, 1 Aug 2019 17:07:44 +0100 From: Jon Turney To: cygwin-apps@cygwin.com Cc: Jon Turney Subject: [PATCH setup 06/11] Use packagemeta::set_action() to update action Date: Thu, 01 Aug 2019 16:07:00 -0000 Message-Id: <20190801160519.32745-7-jon.turney@dronecode.org.uk> In-Reply-To: <20190801160519.32745-1-jon.turney@dronecode.org.uk> References: <20190801160519.32745-1-jon.turney@dronecode.org.uk> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SW-Source: 2019-08/txt/msg00006.txt.bz2 Use packagemeta::set_action() to update the action for packagemeta object in more (hopefully all) the places it gets changed. (Future work: ideally we'd opaque packagemeta internals more by making installed/curr/desired/etc. object private, rather than letting users grovel around in those details) --- libsolv.cc | 16 ++++++++++------ package_db.cc | 4 ++-- package_meta.cc | 7 +++++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libsolv.cc b/libsolv.cc index 9e3b066..bd8fa4c 100644 --- a/libsolv.cc +++ b/libsolv.cc @@ -740,16 +740,19 @@ SolverSolution::trans2db() const case SolverTransaction::transInstall: if (pv.Type() == package_binary) { - pkg->desired = pkg->default_version = pv; - pkg->pick(true); + pkg->set_action(packagemeta::Install_action, pv); + pkg->default_version = pv; } else // source package pkg->srcpick(true); break; case SolverTransaction::transErase: // Only relevant if pkg is still in its "no change" state - if (pkg->desired == pkg->installed && !pkg->picked()) - pkg->desired = pkg->default_version = packageversion(); + if (pkg->get_action() == packagemeta::NoChange_action) + { + pkg->set_action(packagemeta::Uninstall_action, packageversion()); + pkg->default_version = packageversion(); + } break; default: break; @@ -767,13 +770,14 @@ SolverSolution::db2trans() p != db.packages.end (); ++p) { packagemeta *pkg = p->second; - if (pkg->desired && pkg->picked()) // install/upgrade/reinstall + if ((pkg->get_action() == packagemeta::Install_action) || + (pkg->get_action() == packagemeta::Reinstall_action)) { trans.push_back(SolverTransaction(pkg->desired, SolverTransaction::transInstall)); if (pkg->installed) trans.push_back(SolverTransaction(pkg->installed, SolverTransaction::transErase)); } - else if (!pkg->desired && pkg->installed) // uninstall + else if (pkg->get_action() == packagemeta::Uninstall_action) trans.push_back(SolverTransaction(pkg->installed, SolverTransaction::transErase)); if (pkg->srcpicked()) diff --git a/package_db.cc b/package_db.cc index 59c59ef..847f44e 100644 --- a/package_db.cc +++ b/package_db.cc @@ -758,7 +758,7 @@ packagedb::noChanges () i != packages.end(); i++) { packagemeta *pkg = i->second; - pkg->desired = pkg->default_version = pkg->installed; - pkg->pick(false); + pkg->set_action(packagemeta::NoChange_action, pkg->installed); + pkg->default_version = pkg->installed; } } diff --git a/package_meta.cc b/package_meta.cc index b731254..2564f95 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -553,8 +553,11 @@ packagemeta::set_action (_actions action, packageversion const &default_version) } } else - // else, if not installed, skip - desired = packageversion (); + { + // else, if not installed, skip + desired = packageversion (); + pick(false); + } } else if (action == Install_action) { -- 2.21.0