#!/usr/bin/env python
-""" Generate file lists used by apt-ftparchive to generate Packages and Sources files """
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 James Troup <james@nocrew.org>
+"""
+Generate file lists used by apt-ftparchive to generate Packages and Sources files
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2000, 2001, 2002, 2003, 2004, 2006 James Troup <james@nocrew.org>
+@license: GNU General Public License version 2 or later
+"""
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
################################################################################
-import copy, os, pg, sys
+import copy
+import os
+import pg
+import sys
import apt_pkg
from daklib import database
from daklib import logging
################################################################################
-projectB = None
-Cnf = None
-Logger = None
-Options = None
+Cnf = None #: Configuration, apt_pkg.Configuration
+projectB = None #: database connection, pgobject
+Logger = None #: Logger object
+Options = None #: Parsed CommandLine arguments
################################################################################
if not packages.has_key(delete_unique_id):
continue
delete_version = version[0]
- delete_id = packages[delete_unique_id]["id"]
+ delete_id = packages[delete_unique_id]["sourceid"]
delete_arch = packages[delete_unique_id]["arch"]
- if not Cnf.Find("Suite::%s::Untouchable" % (suite)) or Options["Force"]:
+ if not database.get_suite_untouchable(suite) or Options["Force"]:
if Options["No-Delete"]:
print "Would delete %s_%s_%s in %s in favour of %s_%s" % (pkg, delete_arch, delete_version, suite, dominant_version, dominant_arch)
else:
#####################################################
-# Per-suite&pkg: resolve arch-all, vs. arch-any, assumes only one arch-all
def resolve_arch_all_vs_any(versions, packages):
+ """ Per-suite&pkg: resolve arch-all, vs. arch-any, assumes only one arch-all """
arch_all_version = None
arch_any_versions = copy.copy(versions)
for i in arch_any_versions:
#####################################################
-# Per-suite&pkg&arch: resolve duplicate versions
def remove_duplicate_versions(versions, packages):
+ """ Per-suite&pkg&arch: resolve duplicate versions """
# Sort versions into descending order
versions.sort(version_cmp)
dominant_versions = versions[0]
################################################################################
-def write_legacy_mixed_filelist(suite, list, packages, dislocated_files):
- # Work out the filename
- filename = os.path.join(Cnf["Dir::Lists"], "%s_-_all.list" % (suite))
- output = utils.open_file(filename, "w")
- # Generate the final list of files
- files = {}
- for fileid in list:
- path = packages[fileid]["path"]
- filename = packages[fileid]["filename"]
- file_id = packages[fileid]["file_id"]
- if suite == "stable" and dislocated_files.has_key(file_id):
- filename = dislocated_files[file_id]
- else:
- filename = path + filename
- if files.has_key(filename):
- utils.warn("%s (in %s) is duplicated." % (filename, suite))
- else:
- files[filename] = ""
- # Sort the files since apt-ftparchive doesn't
- keys = files.keys()
- keys.sort()
- # Write the list of files out
- for outfile in keys:
- output.write(outfile+'\n')
- output.close()
-
-############################################################
-
def write_filelist(suite, component, arch, type, list, packages, dislocated_files):
# Work out the filename
if arch != "source":
suite = packages[unique_id]["suite"]
component = packages[unique_id]["component"]
arch = packages[unique_id]["arch"]
- packagetype = packages[unique_id]["type"]
+ packagetype = packages[unique_id]["filetype"]
d.setdefault(suite, {})
d[suite].setdefault(component, {})
d[suite][component].setdefault(arch, {})
else:
binary_types = [ "deb" ]
if not Options["Architecture"]:
- architectures = Cnf.ValueList("Suite::%s::Architectures" % (suite))
+ architectures = database.get_suite_architectures(suite)
else:
architectures = utils.split_args(Options["Architectures"])
for arch in [ i.lower() for i in architectures ]:
filelist.extend(d[suite][component]["all"][packagetype])
write_filelist(suite, component, arch, packagetype, filelist,
packages, dislocated_files)
- else: # legacy-mixed suite
- filelist = []
- for component in d[suite].keys():
- for arch in d[suite][component].keys():
- for packagetype in d[suite][component][arch].keys():
- filelist.extend(d[suite][component][arch][packagetype])
- write_legacy_mixed_filelist(suite, filelist, packages, dislocated_files)
+ else: # something broken
+ utils.warn("Suite %s has no components." % (suite))
################################################################################