public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20190530-33-gd75abce
@ 2019-07-01 16:46 jturney
  0 siblings, 0 replies; only message in thread
From: jturney @ 2019-07-01 16:46 UTC (permalink / raw)
  To: cygwin-apps-cvs




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=d75abceedb46749982669236c5c102796a1fbfb1

commit d75abceedb46749982669236c5c102796a1fbfb1
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Apr 28 19:32:17 2019 +0100

    Don't depend on an obsoleting package


Diff:
---
 calm/package.py |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/calm/package.py b/calm/package.py
index 008d01c..4ce1660 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -464,6 +464,27 @@ def validate_packages(args, packages):
                     logging.error("package '%s' version '%s' refers to nonexistent or errored external-source '%s'" % (p, v, e))
                     error = True
 
+        # If package A is obsoleted by package B, B should appear in the
+        # requires: for A (so the upgrade occurs with pre-depends: aware
+        # versions of setup), but not in the depends: for A (as that creates an
+        # unsatisfiable dependency when explicitly installing A with lisolv
+        # versions of setup, which should just install B).  This condition can
+        # occur since we might have synthesized the depends: from the requires:
+        # in read_hints(), so fix that up here.
+        for (v, hints) in packages[p].version_hints.items():
+            obsoletes = hints.get('obsoletes', '')
+            if obsoletes:
+                for o in obsoletes.split(','):
+                    o = o.strip()
+                    o = re.sub(r'(.*) +\(.*\)', r'\1', o)
+
+                    for (ov, ohints) in packages[o].version_hints.items():
+                        if 'depends' in ohints:
+                            depends = ohints['depends'].split(',')
+                            depends = [d for d in depends if d != p]
+                            packages[o].version_hints[ov]['depends'] = ','.join(depends)
+                            logging.debug("removed obsoleting '%s' from the depends: of package '%s'" % (p, o))
+
         packages[p].vermap = defaultdict(defaultdict)
         is_empty = {}
         has_install = False


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-07-01 16:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-01 16:46 [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20190530-33-gd75abce jturney

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).