public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200611-6-ge790649
@ 2020-07-19 16:51 Jon TURNEY
0 siblings, 0 replies; only message in thread
From: Jon TURNEY @ 2020-07-19 16:51 UTC (permalink / raw)
To: cygwin-apps-cvs
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=e79064972edfad6a12fe0a27e8dceb63fe5550dc
commit e79064972edfad6a12fe0a27e8dceb63fe5550dc
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sun Jul 19 16:02:59 2020 +0100
package.delete() also deletes empty packages
Once a Package object no longer contains any files (archives or hints),
it can be removed from the package set.
(This fixes calm complaining when it wants to vault a stale package
which had source, but no kept version does. Otherwise it complains that
the source package has no versions)
Also remove removed hints from version_hints, since we iterate over that
in some places. This also prevents removed versions from bogusly
appearing in packages.json, so update test data appropriately.
Diff:
---
calm/package.py | 12 ++++++++++--
test/testdata/process_arch/packages.json.expected | 5 -----
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/calm/package.py b/calm/package.py
index 4151c21..2d115c2 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -1290,7 +1290,9 @@ def merge(a, *l):
#
def delete(packages, path, fn):
+ ex_packages = []
(_, _, pkgpath) = path.split(os.sep, 2)
+
for p in packages:
if packages[p].pkgpath == pkgpath:
for vr in packages[p].tars:
@@ -1306,11 +1308,17 @@ def delete(packages, path, fn):
for h in packages[p].hints:
if packages[p].hints[h].fn == fn:
del packages[p].hints[h]
+ del packages[p].version_hints[h]
break
- # if nothing remains, remove also from package set
+ # if nothing remains, also remove from package set
if not packages[p].vermap and not packages[p].hints:
- del packages[p]
+ ex_packages.append(p)
+
+ # (modify package set outside of iteration over it)
+ for p in ex_packages:
+ logging.info("removing package '%s' for package set" % (p))
+ del packages[p]
#
diff --git a/test/testdata/process_arch/packages.json.expected b/test/testdata/process_arch/packages.json.expected
index f639e3c..05e4168 100644
--- a/test/testdata/process_arch/packages.json.expected
+++ b/test/testdata/process_arch/packages.json.expected
@@ -282,7 +282,6 @@
' "summary": "Perl distribution Net-SMTP-SSL",\n'
' "versions": {\n'
' "stable": [\n'
- ' "1.01-1",\n'
' "1.02-1",\n'
' "1.03-1",\n'
' "1.03-2"\n'
@@ -330,13 +329,10 @@
' "summary": "Test package for stale version removal",\n'
' "versions": {\n'
' "stable": [\n'
- ' "240-1",\n'
- ' "242-0",\n'
' "243-0",\n'
' "250-0"\n'
' ],\n'
' "test": [\n'
- ' "251-0",\n'
' "260-0"\n'
' ]\n'
' }\n'
@@ -430,7 +426,6 @@
' "summary": "A test package",\n'
' "versions": {\n'
' "stable": [\n'
- ' "0.1-1",\n'
' "1.0-1"\n'
' ]\n'
' }\n'
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-07-19 16:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-19 16:51 [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200611-6-ge790649 Jon TURNEY
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).