X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fdak.py;h=7d4a4157f891e84026a0d97be25669b5bc079f2c;hb=e60e50250af1b4b9eaa6c5772c28d96a554284e4;hp=f82d74ccaafd18eb79361a78d8f2678f91f5eec1;hpb=6d6100fcee8e50bef063d8b8cd395773d83077b4;p=dak.git diff --git a/dak/dak.py b/dak/dak.py index f82d74cc..7d4a4157 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,8 +33,15 @@ ################################################################################ +import os import sys +import traceback import daklib.utils +import warnings + +from daklib.daklog import Logger +from daklib.config import Config +from daklib.dak_exceptions import CantOpenError ################################################################################ @@ -48,83 +60,93 @@ def init(): "Produce a report on NEW and BYHAND packages"), ("show-new", "Output html for packages in NEW"), - + ("show-deferred", + "Output html and symlinks for packages in DEFERRED"), + ("rm", "Remove packages from suites"), - + ("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"), + ("process-policy", + "Process packages in policy queues from COMMENTS files"), + + ("dominate", + "Remove obsolete source and binary associations from suites"), + ("make-pkg-file-mapping", + "Generate package <-> file mapping"), + ("generate-filelist", + "Generate file lists for apt-ftparchive"), ("generate-releases", "Generate Release files"), + ("generate-packages-sources", + "Generate Packages/Sources files"), + ("contents", + "Generate content files"), ("generate-index-diffs", "Generate .diff/Index files"), ("clean-suites", "Clean unused/superseded packages from the archive"), + ("manage-build-queues", + "Clean and update metadata for build queues"), ("clean-queues", "Clean cruft from incoming"), ("clean-proposed-updates", "Remove obsolete .changes from proposed-updates"), - + + ("transitions", + "Manage the release transition file"), ("check-overrides", "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", "Manipulate suites in bulk"), ("cruft-report", "Check for obsolete or duplicated packages"), - ("decode-dot-dak", - "Display contents of a .dak file"), ("examine-package", "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"), - ("init-db", - "Update the database to match the conf file"), + ("admin", + "Perform administration on the dak database"), + ("update-db", + "Updates databae schema to latest revision"), ("init-dirs", "Initial setup of the archive"), ("make-maintainers", "Generates Maintainers file for BTS etc"), ("make-overrides", "Generates override files"), - ("mirror-split", - "Split the pool/ by architecture groups"), ("poolize", "Move packages from dists/ to pool/"), - ("reject-proposed-updates", - "Manually reject from proposed-updates"), - ("security-install", - "Install a security upload into the archive"), ("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"), - ("symlink-dists", - "Generate compatability symlinks from dists/ into pool/"), + ("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"), + ("make-changelog", + "Generate changelog between two suites"), ] return functionality - + ################################################################################ def usage(functionality, exit_code=0): @@ -133,7 +155,7 @@ def usage(functionality, exit_code=0): print """Usage: dak COMMAND [...] Run DAK commands. (Will also work if invoked as COMMAND.) -Availble commands:""" +Available commands:""" for (command, description) in functionality: print " %-23s %s" % (command, description) sys.exit(exit_code) @@ -143,9 +165,15 @@ Availble commands:""" def main(): """Launch dak functionality.""" + + try: + logger = Logger(Config(), 'dak top-level', print_starting=False) + except CantOpenError: + logger = None + functionality = init() modules = [ command for (command, _) in functionality ] - + if len(sys.argv) == 0: daklib.utils.fubar("err, argc == 0? how is that possible?") elif (len(sys.argv) == 1 @@ -177,11 +205,32 @@ def main(): daklib.utils.warn("unknown command '%s'" % (cmdname)) usage(functionality, 1) + # We do not care. No idea wth sqlalchemy warns about them, makes no sense, + # so we ignore it. + warnings.filterwarnings("ignore", 'Predicate of partial index') + # Invoke the module module = __import__(cmdname.replace("-","_")) - 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 ################################################################################ if __name__ == "__main__": + os.environ['LANG'] = 'C' + os.environ['LC_ALL'] = 'C' main()