[projects/pld-ftp-admin] Comaptibility updates for rpm4/python3
baggins
baggins at pld-linux.org
Sun Jan 17 16:51:10 CET 2021
commit 6fb44dacdac820595357d64f061b7500296cb4b6
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Jan 17 16:50:27 2021 +0100
Comaptibility updates for rpm4/python3
wwwbin/clean-dups-archive.py | 26 +++++++++++++++++----
wwwbin/clean-dups-old.py | 10 ++++++--
wwwbin/clean-dups.py | 10 ++++++--
wwwbin/ftp-freshness.py | 54 ++++++++++++++++++++++++++++++++------------
4 files changed, 77 insertions(+), 23 deletions(-)
---
diff --git a/wwwbin/clean-dups-archive.py b/wwwbin/clean-dups-archive.py
index 4f0c9c6..dd4270a 100755
--- a/wwwbin/clean-dups-archive.py
+++ b/wwwbin/clean-dups-archive.py
@@ -29,13 +29,31 @@ def compare(f1, f2):
print(e)
# ignore non-files
return 0
- h1 = ts.hdrFromFdno(fd1)
- h2 = ts.hdrFromFdno(fd2)
+ try:
+ h1 = ts.hdrFromFdno(fd1)
+ except Exception as e:
+ print("hdrFromFdno for %s failed: %s" % (f1, e))
+ os.close(fd1)
+ os.close(fd2)
+ return 0
+ try:
+ h2 = ts.hdrFromFdno(fd2)
+ except Exception as e:
+ print("hdrFromFdno for %s failed: %s" % (f1, e))
+ os.close(fd1)
+ os.close(fd2)
+ return 0
os.close(fd1)
os.close(fd2)
- l1 = rpm.versionCompare(h1, h2)
- l2 = rpm.versionCompare(h2, h1)
+ try:
+ l1 = rpm.versionCompare(h1, h2)
+ except ValueError:
+ l1 = -1
+ try:
+ l2 = rpm.versionCompare(h2, h1)
+ except ValueError:
+ l2 = -1
if l1 > 0 and l2 > 0:
return 0
diff --git a/wwwbin/clean-dups-old.py b/wwwbin/clean-dups-old.py
index 27a8e93..2340e3d 100755
--- a/wwwbin/clean-dups-old.py
+++ b/wwwbin/clean-dups-old.py
@@ -25,8 +25,14 @@ def compare(f1, f2):
v2 = m2.group(2)
r2 = m2.group(3)
- l1 = rpm.labelCompare((n1, v1, r1), (n2, v2, r2))
- l2 = rpm.labelCompare((n2, v2, r2), (n1, v1, r1))
+ try:
+ l1 = rpm.labelCompare((n1, v1, r1), (n2, v2, r2))
+ except ValueError:
+ l1 = -1
+ try:
+ l2 = rpm.labelCompare((n2, v2, r2), (n1, v1, r1))
+ except ValueError:
+ l2 = -1
if l1 > 0 and l2 > 0:
return 0
diff --git a/wwwbin/clean-dups.py b/wwwbin/clean-dups.py
index ff9d65f..be1a878 100755
--- a/wwwbin/clean-dups.py
+++ b/wwwbin/clean-dups.py
@@ -79,8 +79,14 @@ def compare(f1, f2):
os.close(fd1)
os.close(fd2)
- l1 = rpm.versionCompare(h1, h2)
- l2 = rpm.versionCompare(h2, h1)
+ try:
+ l1 = rpm.versionCompare(h1, h2)
+ except ValueError:
+ l1 = -1
+ try:
+ l2 = rpm.versionCompare(h2, h1)
+ except ValueError:
+ l2 = -1
if l1 > 0 and l2 > 0:
return 0
diff --git a/wwwbin/ftp-freshness.py b/wwwbin/ftp-freshness.py
index ddfe53f..924f737 100755
--- a/wwwbin/ftp-freshness.py
+++ b/wwwbin/ftp-freshness.py
@@ -37,32 +37,47 @@ class Pkgs(object):
rpm.addMacro('requires_releq', '#')
rpm.addMacro('requires_ge', '#')
rpm.addMacro('requires_ge_to', '#')
- self.ts = rpm.ts()
+ rpm.setVerbosity(rpm.RPMLOG_ERR)
+ if sys.version_info[0] == 2:
+ self.ts = rpm.ts()
+
+ def __print_stderr(self, msg):
+ if sys.version_info[0] == 3:
+ print(msg, file=sys.stderr, flush=True)
+ else:
+ print(msg, file=sys.stderr)
def __clean_macros(self):
+ if sys.version_info[0] == 3:
+ rpm.reloadConfig()
for macro in ['rel', '_rel', 'snap', '_snap', 'rc', '_rc', 'subver', 'githash']:
rpm.delMacro(macro)
- macros = rpm.getMacros()
- for macro in iter(macros.keys()):
- if macro[:5] == 'with_' or macro[:8] == 'without_':
- rpm.delMacro(macro.split()[0])
+ if sys.version_info[0] == 2:
+ macros = rpm.getMacros()
+ for macro in iter(macros.keys()):
+ if macro[:5] == 'with_' or macro[:8] == 'without_':
+ rpm.delMacro(macro.split()[0])
def __get_from_cvs(self, name):
spec = os.path.join(specsdir, name + '.spec')
if not os.path.isfile(spec):
- print('Spec file does not exist: %s' % spec, file=sys.stderr)
+ self.__print_stderr('Spec file does not exist: %s' % spec)
return ('','','')
- print('Processing: %s.spec' % name, file=sys.stderr)
+ self.__print_stderr('Processing: %s.spec' % name)
self.__clean_macros()
try:
- s = self.ts.parseSpec(spec)
- header = s.headers()[0]
+ if sys.version_info[0] == 2:
+ s = self.ts.parseSpec(spec)
+ header = s.headers()[2]
+ else:
+ s = rpm.spec(spec)
+ header = s.sourceHeader
name = header[rpm.RPMTAG_NAME]
version = header[rpm.RPMTAG_VERSION]
release = header[rpm.RPMTAG_RELEASE].partition('@')[0]
return (name, version, release)
- except rpm.error:
- print('Failed to parse: %s.spec' % name, file=sys.stderr)
+ except (ValueError, rpm.error):
+ self.__print_stderr('Failed to parse: %s.spec' % name)
return ('','','')
def __update_cvs(self, name):
@@ -73,8 +88,14 @@ class Pkgs(object):
cvs_nvr = self.cvs[name]
pkg_nvr = self.pkg[name]
- cvs_rpm_vr = rpm.labelCompare(cvs_nvr, pkg_nvr)
- cvs_rpm_v = rpm.labelCompare((cvs_nvr[0], cvs_nvr[1], ""), (pkg_nvr[0], pkg_nvr[1], ""))
+ try:
+ cvs_rpm_vr = rpm.labelCompare(cvs_nvr, pkg_nvr)
+ except ValueError:
+ cvs_rpm_vr = -1
+ try:
+ cvs_rpm_v = rpm.labelCompare((cvs_nvr[0], cvs_nvr[1], ""), (pkg_nvr[0], pkg_nvr[1], ""))
+ except ValueError:
+ cvs_rpm_v = -1
if cvs_rpm_v > 0:
self.cvs_new_nv.append(name)
@@ -97,8 +118,11 @@ class Pkgs(object):
nvr = tuple(file_name.rsplit('-', 2))
name = nvr[0]
if name in self.pkg:
- if rpm.labelCompare(nvr, self.pkg[name]) > 0:
- self.pkg[name] = nvr
+ try:
+ if rpm.labelCompare(nvr, self.pkg[name]) > 0:
+ self.pkg[name] = nvr
+ except ValueError:
+ pass
else:
self.pkg[name] = nvr
self.__update_cvs(name)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/projects/pld-ftp-admin.git/commitdiff/6fb44dacdac820595357d64f061b7500296cb4b6
More information about the pld-cvs-commit
mailing list