[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20210626-11-g3282d5c

Jon TURNEY jturney@sourceware.org
Sat Jan 29 14:55:12 GMT 2022




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

commit 3282d5c98e7bbad81abe17bdf42507f330c35caf
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Nov 29 18:43:58 2021 +0000

    Expire superseded test versions
    
    Expire superseded test versions (that is: expire test versions where a
    non-test version with a higher version number exists), unless disabled by
    the 'keep-superseded-test' hint.
    
    (For this to work as expected, don't unconditionally mark the version
    assigned to the test: stability level as not to be expired, so it can be
    expired if superseded).


Diff:
---
 TODO            | 1 -
 calm/hint.py    | 1 +
 calm/package.py | 8 +++++++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/TODO b/TODO
index 534080c..c7c6f26 100644
--- a/TODO
+++ b/TODO
@@ -11,4 +11,3 @@
 * report changes in override.hint like we used to for setup.hint
 * maintainers.py should only re-read cygwin-pkg-maint if it's changed
 * empty install packages should only come in two variants: no dependencies and in _obsolete category, or with dependencies and in 'meta' category
-* expire test versions superseded by a non-test version (unless keep-superseded-test: in override.hint?)
diff --git a/calm/hint.py b/calm/hint.py
index dc5efe8..15c468f 100755
--- a/calm/hint.py
+++ b/calm/hint.py
@@ -74,6 +74,7 @@ hintkeys[override] = {
     'keep-count': 'val',
     'keep-count-test': 'val',
     'keep-days': 'val',
+    'keep-superseded-versions': 'noval',
     'disable-check': 'val',
     'replace-versions': 'val',
 }
diff --git a/calm/package.py b/calm/package.py
index 4ec906f..947d06b 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -1340,7 +1340,7 @@ def mark_package_fresh(packages, p, v):
 def stale_packages(packages):
     for pn, po in packages.items():
         # mark any versions used by stability levels as fresh
-        for level in ['curr', 'prev', 'test']:
+        for level in ['curr', 'prev']:
             if level in po.stability:
                 v = po.stability[level]
                 mark_package_fresh(packages, pn, v)
@@ -1364,6 +1364,9 @@ def stale_packages(packages):
 
         # mark as fresh the highest n test versions, where n is given by the
         # keep-count-test: override hint, (defaulting to DEFAULT_KEEP_COUNT_TEST)
+        #
+        # only consider versions not superseded by non-test versions (unless
+        # 'keep-superseded-test' is present).
         keep_count = int(po.override_hints.get('keep-count-test', common_constants.DEFAULT_KEEP_COUNT_TEST))
         for v in sorted(po.versions(), key=lambda v: SetupVersion(v), reverse=True):
             if 'test' in po.version_hints[v]:
@@ -1371,6 +1374,9 @@ def stale_packages(packages):
                     break
                 mark_package_fresh(packages, pn, v)
                 keep_count = keep_count - 1
+            else:
+                if 'keep-superseded-test' not in po.override_hints:
+                    break
 
         # mark as fresh all versions after the first one which is newer than
         # the keep-days: override hint, (defaulting to DEFAULT_KEEP_DAYS)



More information about the Cygwin-apps-cvs mailing list