From: Jon Turney <jon.turney@dronecode.org.uk>
To: cygwin-apps@cygwin.com
Cc: Jon Turney <jon.turney@dronecode.org.uk>
Subject: [PATCH setup 06/14] Hoist scan() up from packageversion to packagemeta
Date: Wed, 31 May 2017 10:57:00 -0000 [thread overview]
Message-ID: <20170531105015.162228-7-jon.turney@dronecode.org.uk> (raw)
In-Reply-To: <20170531105015.162228-1-jon.turney@dronecode.org.uk>
---
package_meta.cc | 37 +++++++++++++++++++++++++++++++++++--
package_meta.h | 2 ++
package_version.cc | 29 -----------------------------
package_version.h | 2 --
4 files changed, 37 insertions(+), 33 deletions(-)
diff --git a/package_meta.cc b/package_meta.cc
index f4678f0..425df59 100644
--- a/package_meta.cc
+++ b/package_meta.cc
@@ -44,6 +44,9 @@ using namespace std;
#include <algorithm>
#include "Generic.h"
+#include "download.h"
+#include "Exception.h"
+#include "resource.h"
using namespace std;
@@ -582,6 +585,36 @@ packagemeta::logSelectionStatus() const
pkg.logAllVersions();
}
+/* scan for local copies of package */
+void
+packagemeta::scan (const packageversion &pkg, bool mirror_mode)
+{
+ /* Already have something */
+ if (!pkg)
+ return;
+
+ /* Remove mirror sites.
+ * FIXME: This is a bit of a hack.
+ */
+ try
+ {
+ if (!check_for_cached (*(pkg.source ()), mirror_mode)
+ && ::source == IDC_SOURCE_LOCALDIR)
+ pkg.source ()->sites.clear ();
+ }
+ catch (Exception * e)
+ {
+ // We can ignore these, since we're clearing the source list anyway
+ if (e->errNo () == APPERR_CORRUPT_PACKAGE)
+ {
+ pkg.source ()->sites.clear ();
+ return;
+ }
+ // Unexpected exception.
+ throw e;
+ }
+}
+
void
packagemeta::ScanDownloadedFiles (bool mirror_mode)
{
@@ -601,10 +634,10 @@ packagemeta::ScanDownloadedFiles (bool mirror_mode)
&& (*i != pkg.installed
|| pkg.installed == pkg.curr
|| pkg.installed == pkg.exp);
- const_cast<packageversion &>(*i).scan (lazy_scan);
+ scan (*i, lazy_scan);
packageversion foo = *i;
packageversion pkgsrcver = foo.sourcePackage ();
- pkgsrcver.scan (lazy_scan);
+ scan (pkgsrcver, lazy_scan);
/* For local installs, if there is no src and no bin, the version
* is unavailable
diff --git a/package_meta.h b/package_meta.h
index 529b2a2..8041aa1 100644
--- a/package_meta.h
+++ b/package_meta.h
@@ -159,6 +159,8 @@ protected:
private:
std::string trustLabel(packageversion const &) const;
std::vector <Script> scripts_;
+ static void scan (const packageversion &pkg, bool mirror_mode);
+
bool _picked; /* true if desired version is to be (re)installed */
bool _srcpicked;
};
diff --git a/package_version.cc b/package_version.cc
index 3dcd7ea..6e8f692 100644
--- a/package_version.cc
+++ b/package_version.cc
@@ -23,8 +23,6 @@
#include "state.h"
#include "resource.h"
#include <algorithm>
-#include "download.h"
-#include "Exception.h"
#include "csu_util/version_compare.h"
using namespace std;
@@ -232,33 +230,6 @@ packageversion::accessible() const
return data->accessible();
}
-void
-packageversion::scan (bool mirror_mode)
-{
- if (!*this)
- return;
- /* Remove mirror sites.
- * FIXME: This is a bit of a hack. a better way is to abstract
- * the availability logic to the package
- */
- try
- {
- if (!check_for_cached (*(source ()), mirror_mode)
- && ::source == IDC_SOURCE_LOCALDIR)
- source ()->sites.clear ();
- }
- catch (Exception * e)
- {
- // We can ignore these, since we're clearing the source list anyway
- if (e->errNo () == APPERR_CORRUPT_PACKAGE)
- {
- source ()->sites.clear ();
- return;
- }
- // Unexpected exception.
- throw e;
- }
-}
int
packageversion::compareVersions(const packageversion &a, const packageversion &b)
diff --git a/package_version.h b/package_version.h
index fc8a084..4c04d77 100644
--- a/package_version.h
+++ b/package_version.h
@@ -113,8 +113,6 @@ public:
packagesource *source() const; /* where can we source the file from */
bool accessible () const;
- /* scan for local copies */
- void scan (bool);
/* ensure that the depends clause is satisfied */
int set_requirements (trusts deftrust, size_t depth = 0);
--
2.12.3
next prev parent reply other threads:[~2017-05-31 10:57 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-31 10:53 [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP) Jon Turney
2017-05-31 10:53 ` [PATCH setup 04/14] Hoist pick() up to packagemeta Jon Turney
2017-05-31 10:53 ` [PATCH setup 05/14] Hoist uninstall up to Installer::uninstallOne() Jon Turney
2017-05-31 10:53 ` [PATCH setup 03/14] Hoist addScript() etc. up from packageversion to packagemeta Jon Turney
2017-05-31 10:53 ` [PATCH setup 01/14] Opaque how PackageDepends is stored Jon Turney
2017-05-31 10:53 ` [PATCH setup 02/14] Factor out reading installed.db Jon Turney
2017-05-31 10:57 ` [PATCH setup 08/14] Change to using a libsolv pool for storing package information Jon Turney
2017-05-31 10:57 ` [PATCH setup 09/14] Remove cygpackage class Jon Turney
2017-05-31 10:57 ` [PATCH setup 10/14] Remove packageversion class Jon Turney
2017-05-31 10:57 ` Jon Turney [this message]
2017-05-31 10:57 ` [PATCH setup 07/14] Store package stability in class packageversion Jon Turney
2017-05-31 11:05 ` [PATCH setup 11/14] Drop in SolvableVersion as a replacement for packageversion Jon Turney
2017-05-31 11:05 ` [PATCH setup 12/14] Use solver to check for problems and produce a list of package transactions Jon Turney
2017-05-31 11:05 ` [PATCH setup 13/14] Download/checksum/install/uninstall what transaction wants Jon Turney
2017-05-31 11:05 ` [PATCH setup 14/14] Add obsoletes: support Jon Turney
2017-08-29 13:37 ` [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP) Ken Brown
2017-08-30 21:47 ` Ken Brown
2017-09-01 15:01 ` Ken Brown
2017-09-02 16:57 ` Ken Brown
2017-09-05 13:34 ` Jon Turney
2017-09-05 18:40 ` Achim Gratz
2017-09-06 2:52 ` Ken Brown
2017-11-23 18:10 ` Jon Turney
2017-11-23 20:32 ` Ken Brown
2017-11-23 20:54 ` Achim Gratz
2017-09-08 18:54 ` Ken Brown
2017-09-11 20:40 ` Ken Brown
2017-09-13 19:17 ` Achim Gratz
2017-09-13 21:16 ` Ken Brown
2017-09-14 17:26 ` Achim Gratz
2017-09-14 20:46 ` Ken Brown
2017-09-15 19:24 ` Jon Turney
2017-09-16 16:21 ` Ken Brown
2017-09-19 12:24 ` Ken Brown
2017-09-19 16:46 ` Jon Turney
2017-09-19 16:58 ` Ken Brown
2017-12-05 14:32 ` Jon Turney
2017-12-05 17:36 ` Ken Brown
2017-12-13 17:31 ` Ken Brown
2017-12-13 18:06 ` Achim Gratz
2017-12-13 22:31 ` Ken Brown
2017-12-14 14:12 ` Ken Brown
2017-12-24 15:00 ` Ken Brown
2018-01-09 13:25 ` Jon Turney
2018-01-09 15:37 ` Ken Brown
2018-01-09 15:49 ` Ken Brown
2018-01-13 14:14 ` Jon Turney
2018-01-13 19:56 ` Ken Brown
2018-01-13 21:29 ` Brian Inglis
2018-01-13 22:55 ` Ken Brown
2018-01-14 0:00 ` Ken Brown
2018-01-14 1:52 ` Brian Inglis
2018-01-14 2:37 ` Ken Brown
2018-01-15 19:02 ` Jon Turney
2018-01-15 21:50 ` Ken Brown
2018-01-18 19:14 ` Jon Turney
2017-09-15 15:15 ` Jon Turney
2017-09-15 16:53 ` Ken Brown
2017-09-15 20:56 ` cyg Simple
2017-09-17 16:02 ` Ken Brown
2017-09-26 14:50 ` Jon Turney
2017-09-26 16:07 ` Ken Brown
2017-09-27 19:14 ` Jon Turney
2017-09-27 20:33 ` Ken Brown
2017-09-29 17:38 ` Jon Turney
2017-09-29 20:34 ` Ken Brown
2017-10-02 14:07 ` Jon Turney
2017-10-02 15:17 ` Marco Atzeri
2017-10-04 14:43 ` Jon Turney
2017-10-10 11:18 ` Ken Brown
2017-10-10 15:49 ` Jon Turney
2017-10-17 12:45 ` Ken Brown
2017-10-17 18:47 ` Jon Turney
2017-10-18 15:28 ` Ken Brown
2017-10-18 15:57 ` Ken Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170531105015.162228-7-jon.turney@dronecode.org.uk \
--to=jon.turney@dronecode.org.uk \
--cc=cygwin-apps@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).