]> git.donarmstrong.com Git - dak.git/blobdiff - daklib/utils.py
add our own deb_extract_control function
[dak.git] / daklib / utils.py
index 40e47c63e45830887d213f10d8d381ebd75457a3..0b8a08d5700a67951d2d6c297d810b2373b0c3b1 100755 (executable)
@@ -33,6 +33,7 @@ import sys
 import tempfile
 import traceback
 import stat
+import apt_inst
 import apt_pkg
 import time
 import re
@@ -526,8 +527,7 @@ def parse_checksums(where, files, manifest, hashname):
         files[checkfile][hash_key(hashname)] = checksum
     for f in files.keys():
         if not files[f].has_key(hash_key(hashname)):
-            rejmsg.append("%s: no entry in checksums-%s in %s" % (checkfile,
-                hashname, where))
+            rejmsg.append("%s: no entry in checksums-%s in %s" % (f, hashname, where))
     return rejmsg
 
 ################################################################################
@@ -577,39 +577,28 @@ def build_file_list(changes, is_a_dsc=0, field="files", hashname="md5sum"):
 ################################################################################
 
 # see http://bugs.debian.org/619131
-def build_package_set(dsc, session = None):
-    if not dsc.has_key("package-set"):
+def build_package_list(dsc, session = None):
+    if not dsc.has_key("package-list"):
         return {}
 
     packages = {}
 
-    for line in dsc["package-set"].split("\n"):
+    for line in dsc["package-list"].split("\n"):
         if not line:
             break
 
-        (name, section, priority) = line.split()
-        (section, component) = extract_component_from_section(section)
-
-        package_type = "deb"
-        if name.find(":") != -1:
-            (package_type, name) = name.split(":", 1)
-        if package_type == "src":
-            package_type = "dsc"
+        fields = line.split()
+        name = fields[0]
+        package_type = fields[1]
+        (section, component) = extract_component_from_section(fields[2])
+        priority = fields[3]
 
         # Validate type if we have a session
         if session and get_override_type(package_type, session) is None:
             # Maybe just warn and ignore? exit(1) might be a bit hard...
-            utils.fubar("invalid type (%s) in Package-Set." % (package_type))
-
-        if section == "":
-            section = "-"
-        if priority == "":
-            priority = "-"
-
-        if package_type == "dsc":
-            priority = "source"
+            utils.fubar("invalid type (%s) in Package-List." % (package_type))
 
-        if not packages.has_key(name) or packages[name]["type"] == "dsc":
+        if name not in packages or packages[name]["type"] == "dsc":
             packages[name] = dict(priority=priority, section=section, type=package_type, component=component, files=[])
 
     return packages
@@ -777,7 +766,7 @@ def which_conf_file ():
         homedir = os.getenv("HOME")
         confpath = os.path.join(homedir, "/etc/dak.conf")
         if os.path.exists(confpath):
-            apt_pkg.ReadConfigFileISC(Cnf,default_config)
+            apt_pkg.ReadConfigFileISC(Cnf,confpath)
 
     # We are still in here, so there is no local config file or we do
     # not allow local files. Do the normal stuff.
@@ -1022,8 +1011,8 @@ def parse_args(Options):
         suite_ids_list = []
         for suitename in split_args(Options["Suite"]):
             suite = get_suite(suitename, session=session)
-            if suite.suite_id is None:
-                warn("suite '%s' not recognised." % (suite.suite_name))
+            if not suite or suite.suite_id is None:
+                warn("suite '%s' not recognised." % (suite and suite.suite_name or suitename))
             else:
                 suite_ids_list.append(suite.suite_id)
         if suite_ids_list:
@@ -1637,3 +1626,9 @@ def get_packages_from_ftp(root, suite, component, architecture):
     Packages = apt_pkg.ParseTagFile(packages)
     os.unlink(temp_file)
     return Packages
+
+################################################################################
+
+def deb_extract_control(fh):
+    """extract DEBIAN/control from a binary package"""
+    return apt_inst.DebFile(fh).control.extractdata("control")