]> git.donarmstrong.com Git - dak.git/blobdiff - daklib/utils.py
stop using deprecated python-apt functions
[dak.git] / daklib / utils.py
index 40e47c63e45830887d213f10d8d381ebd75457a3..83f556b27d0f2c8f5010b346f6c7eed0aedeacdb 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
@@ -773,11 +762,11 @@ def which_conf_file ():
 
     res = socket.getfqdn()
     # In case we allow local config files per user, try if one exists
-    if Cnf.FindB("Config::" + res + "::AllowLocalConfig"):
+    if Cnf.find_b("Config::" + res + "::AllowLocalConfig"):
         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.
@@ -789,7 +778,7 @@ def which_conf_file ():
 def which_apt_conf_file ():
     res = socket.getfqdn()
     # In case we allow local config files per user, try if one exists
-    if Cnf.FindB("Config::" + res + "::AllowLocalConfig"):
+    if Cnf.find_b("Config::" + res + "::AllowLocalConfig"):
         homedir = os.getenv("HOME")
         confpath = os.path.join(homedir, "/etc/dak.conf")
         if os.path.exists(confpath):
@@ -885,7 +874,7 @@ def changes_compare (a, b):
     # Sort by source version
     a_version = a_changes.get("version", "0")
     b_version = b_changes.get("version", "0")
-    q = apt_pkg.VersionCompare(a_version, b_version)
+    q = apt_pkg.version_compare(a_version, b_version)
     if q:
         return q
 
@@ -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:
@@ -1558,12 +1547,12 @@ def get_changes_files(from_dir):
 
 apt_pkg.init()
 
-Cnf = apt_pkg.newConfiguration()
+Cnf = apt_pkg.Configuration()
 if not os.getenv("DAK_TEST"):
-    apt_pkg.ReadConfigFileISC(Cnf,default_config)
+    apt_pkg.read_config_file_isc(Cnf,default_config)
 
 if which_conf_file() != default_config:
-    apt_pkg.ReadConfigFileISC(Cnf,which_conf_file())
+    apt_pkg.read_config_file_isc(Cnf,which_conf_file())
 
 ################################################################################
 
@@ -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")