################################################################################
-# TODO: Insert "random dak quote" here
+# From: Andrew Morton <akpm@osdl.org>
+# Subject: 2.6.6-mm5
+# To: linux-kernel@vger.kernel.org
+# Date: Sat, 22 May 2004 01:36:36 -0700
+# X-Mailer: Sylpheed version 0.9.7 (GTK+ 1.2.10; i386-redhat-linux-gnu)
+#
+# [...]
+#
+# Although this feature has been around for a while it is new code, and the
+# usual cautions apply. If it munches all your files please tell Jens and
+# he'll type them in again for you.
################################################################################
import commands
import apt_pkg
+import fcntl
from re import sub
from collections import defaultdict
from regexes import re_build_dep_arch
self._session = session
dbsuite = get_suite(suite, session)
suite_archs2id = dict((x.arch_string, x.arch_id) for x in get_suite_architectures(suite))
- package_dependencies, arch_providors_of, arch_provided_by = self._load_package_information(session,
+ package_dependencies, arch_providers_of, arch_provided_by = self._load_package_information(session,
dbsuite.suite_id,
suite_archs2id)
self._package_dependencies = package_dependencies
- self._arch_providors_of = arch_providors_of
+ self._arch_providers_of = arch_providers_of
self._arch_provided_by = arch_provided_by
self._archs_in_suite = set(suite_archs2id)
@staticmethod
def _load_package_information(session, suite_id, suite_archs2id):
package_dependencies = defaultdict(lambda: defaultdict(set))
- arch_providors_of = defaultdict(lambda: defaultdict(set))
+ arch_providers_of = defaultdict(lambda: defaultdict(set))
arch_provided_by = defaultdict(lambda: defaultdict(set))
source_deps = defaultdict(set)
metakey_d = get_or_set_metadatakey("Depends", session)
deps = defaultdict(set)
providers_of = defaultdict(set)
provided_by = defaultdict(set)
- arch_providors_of[architecture] = providers_of
+ arch_providers_of[architecture] = providers_of
arch_provided_by[architecture] = provided_by
package_dependencies[architecture] = deps
except ValueError as e:
print "Error for package %s: %s" % (source, e)
- return package_dependencies, arch_providors_of, arch_provided_by
+ return package_dependencies, arch_providers_of, arch_provided_by
def check_reverse_depends(self, removal_requests):
"""Bulk check reverse dependencies
removals_by_arch = defaultdict(set)
affected_virtual_by_arch = defaultdict(set)
package_dependencies = self._package_dependencies
- arch_providors_of = self._arch_providors_of
+ arch_providers_of = self._arch_providers_of
arch_provided_by = self._arch_provided_by
arch_provides2removal = defaultdict(lambda: defaultdict(set))
dep_problems = defaultdict(set)
arch_all_removals.add(pkg)
continue
removals_by_arch[arch].add(pkg)
- if pkg in arch_providors_of[arch]:
+ if pkg in arch_providers_of[arch]:
affected_virtual_by_arch[arch].add(pkg)
if arch_all_removals:
continue
removals_by_arch[arch].update(arch_all_removals)
for pkg in arch_all_removals:
- if pkg in arch_providors_of[arch]:
+ if pkg in arch_providers_of[arch]:
affected_virtual_by_arch[arch].add(pkg)
if not removals_by_arch:
suite_ids_list = []
suites_list = utils.join_with_commas_and(suites)
cnf = utils.get_conf()
- con_components = None
+ con_components = ''
#######################################################################################################
if date is None:
date = commands.getoutput("date -R")
- if partial:
+ if partial and components:
component_ids_list = []
for componentname in components:
raise ValueError("component '%s' not recognised." % componentname)
else:
component_ids_list.append(component.component_id)
- con_components = "AND component IN (%s)" % ", ".join([str(i) for i in component_ids_list])
+ if component_ids_list:
+ con_components = "AND component IN (%s)" % ", ".join([str(i) for i in component_ids_list])
for i in removals:
package = i[0]
if architecture not in d[package][version]:
d[package][version].append(architecture)
- for package in sorted(removals):
+ for package in sorted(d):
versions = sorted(d[package], cmp=apt_pkg.version_compare)
for version in versions:
d[package][version].sort(utils.arch_compare_sw)
log_filename = cnf["Rm::LogFile"]
log822_filename = cnf["Rm::LogFile822"]
with utils.open_file(log_filename, "a") as logfile, utils.open_file(log822_filename, "a") as logfile822:
+ fcntl.lockf(logfile, fcntl.LOCK_EX)
+ fcntl.lockf(logfile822, fcntl.LOCK_EX)
+
logfile.write("=========================================================================\n")
logfile.write("[Date: %s] [ftpmaster: %s]\n" % (date, whoami))
logfile.write("Removed the following packages from %s:\n\n%s" % (suites_list, summary))
session.execute("DELETE FROM bin_associations WHERE bin = :packageid AND suite = :suiteid",
{'packageid': package_id, 'suiteid': suite_id})
# Delete from the override file
- if partial:
+ if not partial:
if architecture == "source":
type_id = dsc_type_id
else: