]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
Comaptibility updates for rpm4/python3
authorJan Rękorajski <baggins@pld-linux.org>
Sun, 17 Jan 2021 15:50:27 +0000 (16:50 +0100)
committerJan Rękorajski <baggins@pld-linux.org>
Sun, 17 Jan 2021 15:50:27 +0000 (16:50 +0100)
wwwbin/clean-dups-archive.py
wwwbin/clean-dups-old.py
wwwbin/clean-dups.py
wwwbin/ftp-freshness.py

index 4f0c9c635c2501e1f9465abf35e1285d854706fe..dd4270aa5ee061efa70808a91f1a8886662a672e 100755 (executable)
@@ -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
index 27a8e9352eea7eeb6e78d240efeebf83bffee759..2340e3ddbf5eb30de3bad455ac778b844ee0a174 100755 (executable)
@@ -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
index ff9d65f6bd26a78a87c7abf72686a66bc714abcc..be1a878561491c3c84c6b402bb6cb2c84ff81d6f 100755 (executable)
@@ -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
index ddfe53f6c59fe2ebd66976876b161deebbd060ad..924f737d0409391ed3427f7364a9ee65d9c16a01 100755 (executable)
@@ -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)
This page took 0.299651 seconds and 4 git commands to generate.