X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fdak.py;h=47bbedfa5906511407a020e3947e113078536f59;hb=c91496e85403f61439ffce6326ddd8c32cad5751;hp=ad717ef3959f2aecf52166d6336287623e0d5126;hpb=cdffcfe2a0e6804ed35df56c4c2aa084c2b63677;p=dak.git diff --git a/dak/dak.py b/dak/dak.py index ad717ef3..47bbedfa 100755 --- a/dak/dak.py +++ b/dak/dak.py @@ -1,6 +1,11 @@ #!/usr/bin/env python -"""Wrapper to launch dak functionality""" +""" +Wrapper to launch dak functionality + +G{importgraph} + +""" # Copyright (C) 2005, 2006 Anthony Towns # Copyright (C) 2006 James Troup @@ -28,48 +33,13 @@ ################################################################################ -import sys, imp -import daklib.utils, daklib.extensions - -################################################################################ - -class UserExtension: - def __init__(self, user_extension = None): - if user_extension: - m = imp.load_source("dak_userext", user_extension) - d = m.__dict__ - else: - m, d = None, {} - self.__dict__["_module"] = m - self.__dict__["_d"] = d - - def __getattr__(self, a): - if a in self.__dict__: return self.__dict__[a] - if a[0] == "_": raise AttributeError, a - return self._d.get(a, None) +import sys +import traceback +import daklib.utils - def __setattr__(self, a, v): - self._d[a] = v - -################################################################################ - -class UserExtension: - def __init__(self, user_extension = None): - if user_extension: - m = imp.load_source("dak_userext", user_extension) - d = m.__dict__ - else: - m, d = None, {} - self.__dict__["_module"] = m - self.__dict__["_d"] = d - - def __getattr__(self, a): - if a in self.__dict__: return self.__dict__[a] - if a[0] == "_": raise AttributeError, a - return self._d.get(a, None) - - def __setattr__(self, a, v): - self._d[a] = v +from daklib.daklog import Logger +from daklib.config import Config +from daklib.dak_exceptions import CantOpenError ################################################################################ @@ -96,15 +66,17 @@ def init(): ("process-new", "Process NEW and BYHAND packages"), - ("process-unchecked", + ("process-upload", "Process packages in queue/unchecked"), - ("process-accepted", - "Install packages into the pool"), ("make-suite-file-list", "Generate lists of packages per suite for apt-ftparchive"), + ("make-pkg-file-mapping", + "Generate package <-> file mapping"), ("generate-releases", "Generate Release files"), + ("contents", + "Generate content files"), ("generate-index-diffs", "Generate .diff/Index files"), ("clean-suites", @@ -120,8 +92,6 @@ def init(): "Override cruft checks"), ("check-proposed-updates", "Dependency checking for proposed-updates"), - ("compare-suites", - "Show fixable discrepencies between suites"), ("control-overrides", "Manipulate/list override entries in bulk"), ("control-suite", @@ -134,14 +104,14 @@ def init(): "Show information useful for NEW processing"), ("find-null-maintainers", "Check for users with no packages in the archive"), - ("import-archive", - "Populate SQL database based from an archive tree"), ("import-keyring", "Populate fingerprint/uid table based on a new/updated keyring"), ("import-ldap-fingerprints", "Syncs fingerprint and uid tables with Debian LDAP db"), ("import-users-from-passwd", "Sync PostgreSQL users with passwd file"), + ("admin", + "Perform administration on the dak database"), ("init-db", "Update the database to match the conf file"), ("update-db", @@ -154,14 +124,18 @@ def init(): "Generates override files"), ("poolize", "Move packages from dists/ to pool/"), - ("reject-proposed-updates", - "Manually reject from proposed-updates"), ("new-security-install", "New way to install a security upload into the archive"), ("split-done", "Split queue/done into a date-based hierarchy"), ("stats", "Generate statistics"), + ("bts-categorize", + "Categorize uncategorized bugs filed against ftp.debian.org"), + ("import-known-changes", + "import old changes files into known_changes table"), + ("add-user", + "Add a user to the archive"), ] return functionality @@ -183,12 +157,11 @@ Available commands:""" def main(): """Launch dak functionality.""" - Cnf = daklib.utils.get_conf() - if Cnf.has_key("Dinstall::UserExtensions"): - userext = UserExtension(Cnf["Dinstall::UserExtensions"]) - else: - userext = UserExtension() + try: + logger = Logger(Config(), 'dak top-level', print_starting=False) + except CantOpenError: + logger = None functionality = init() modules = [ command for (command, _) in functionality ] @@ -227,13 +200,21 @@ def main(): # Invoke the module module = __import__(cmdname.replace("-","_")) - module.dak_userext = userext - userext.dak_module = module - - daklib.extensions.init(cmdname, module, userext) - if userext.init is not None: userext.init(cmdname) - - module.main() + try: + module.main() + except KeyboardInterrupt: + msg = 'KeyboardInterrupt caught; exiting' + print msg + if logger: + logger.log([msg]) + sys.exit(1) + except SystemExit: + pass + except: + if logger: + for line in traceback.format_exc().split('\n')[:-1]: + logger.log(['exception', line]) + raise ################################################################################