[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