[csw-devel] [PATCH] checkpkg: allow collection of obsoletion info

Ben Walton bwalton at opencsw.org
Sun Mar 27 16:15:46 CEST 2011


Excerpts from Maciej Bliziński's message of Sun Mar 27 09:59:50 -0400 2011:

Ok, here's the version I think is ready for commit...

Thanks
-Ben

Index: package.py
===================================================================
--- package.py  (revision 13944)
+++ package.py  (working copy)
@@ -358,6 +358,38 @@
     fd.close()
     return depends
 
+  def GetObsoletedBy(self):
+    """Collects obsolescence information from the package if it
exists
+
+    Documentation:
+    http://wiki.opencsw.org/obsoleting-packages
+
+    Returns:
+      a tuple (bool, list) of (syntax_ok, obsoleted_by)
+
+    If the package has not been obsoleted or the package predates the
+    implementation of this mechanism, the list is empty.  If the
+    package provides obsolescence information but the format of the
+    information is invalid, syntax_ok will be False and the list will
+    be empty.
+    """
+
+    obsoleted_syntax_ok = True
+    obsoleted_by = []
+    obsoleted_by_path = os.path.join(self.directory, "install",
"obsolete")
+    if not os.path.exists(obsoleted_by_path):
+      return obsoleted_by
+
+    with open(obsoleted_by_path, "r") as fd:
+      for line in fd:
+        fields = re.split(c.WS_RE, line)
+        if len(fields) < 2:
+          obsoleted_syntax_ok = False
+          continue
+        pkgname, catalogname = fields[0:2]
+        obsoleted_by.append((pkgname, catalogname))
+    return { "syntax_ok": obsoleted_syntax_ok, "by": obsoleted_by }
+
   def CheckPkgpathExists(self):
     if not os.path.isdir(self.directory):
       raise PackageError("%s does not exist or is not a directory"
--
Ben Walton
Systems Programmer - CHASS
University of Toronto
C:416.407.5610 | W:416.978.4302



More information about the devel mailing list