[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20250329-18-g06f0601
Jon Turney via Cygwin-apps-cvs <[email protected]> Mon, 21 Jul 2025 18:54:12 +0000 (GMT)
| Newsgroups | gmane.os.cygwin.cvs.apps |
|---|---|
| Message-ID | <[email protected]> |
Diff:
---
calm/repology.py | 37 ++++++++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 11 deletions(-)
diff --git a/calm/repology.py b/calm/repology.py
index 8c715d9..d6e74b4 100644
--- a/calm/repology.py
+++ b/calm/repology.py
@@ -41,12 +41,17 @@ REPOLOGY_API_URL = 'https://repology.org/api/v1/projects/'
last_check = 0
last_data = {}
-LegacyData = namedtuple('LegacyData', ['version_re', 'ignores'])
+LegacyData = namedtuple('LegacyData', ['version_re', 'ignores', 'transform', 'source'])
use_legacy = {
- 'automake': LegacyData(r'\d.\d+', ['+']),
- 'gtk': LegacyData(r'\d', ['3.9', '+', '-']),
- 'gtksourceview': LegacyData(r'\d', []),
- 'qt': LegacyData(r'\d', ['p']),
+ 'automake': LegacyData(r'\d.\d+', ['+'], None, None),
+ 'gnupg': LegacyData(r'\d', [], lambda v: '' if v == '1' else v, None),
+ 'gtk': LegacyData(r'\d', ['3.9', '+', '-'], None, None),
+ 'gtksourceview': LegacyData(r'\d', [], None, None),
+ 'guile': LegacyData(r'\d.\d', ['+'], None, None),
+ 'python': LegacyData(r'\d.\d+', ['-', '_', '~'], lambda v: v.replace('.', ''), None),
+ 'python-docs': LegacyData(r'\d.\d+', ['-', '_', '~'], lambda v: v.replace('.', ''), lambda v: 'python' + v + '-doc'),
+ 'qt': LegacyData(r'\d', ['p'], None, None),
+ 'xdelta': LegacyData(r'\d', [], lambda v: '' if v == '1' else v, None),
}
RepologyData = namedtuple('RepologyData', ['upstream_version', 'repology_project_name'])
@@ -100,7 +105,7 @@ def repology_fetch_data():
if i['status'] == 'newest':
newest_version.append(v)
- if (pn in use_legacy) and (i['status'] in ['legacy', 'outdated']):
+ if (pn in use_legacy) and (i['status'] in ['legacy', 'outdated', 'newest']):
ld = use_legacy[pn]
prefix_re = ld.version_re
@@ -110,6 +115,9 @@ def repology_fetch_data():
else:
continue
+ if ld.transform:
+ prefix = ld.transform(prefix)
+
# blacklist versions containing certain substrings
# (pre-release versions etc.)
if any(ignore in v for ignore in ld.ignores):
@@ -146,15 +154,22 @@ def repology_fetch_data():
if i['repo'] == "cygwin":
source_pn = i['srcname']
- # if package name contains legacy version
if pn in use_legacy:
+ # if source package name contains legacy version
+ #
+ # the empty string is (in some cases), a possible value
+ # for prefix, so ensure that longest match wins
prefix = None
- for p in legacy_versions:
- if (pn + p) in source_pn:
+ for p in sorted(legacy_versions):
+ source = pn + p
+
+ if use_legacy[pn].source:
+ source = use_legacy[pn].source(p)
+
+ if source in source_pn:
prefix = p
- break
- if prefix:
+ if prefix is not None:
upstream_version = [legacy_versions[prefix]]
else:
upstream_version = newest_version