#!/usr/bin/env python
-"""Wrapper to launch dak functionality"""
+"""
+Wrapper to launch dak functionality
+
+G{importgraph}
+
+"""
# Copyright (C) 2005, 2006 Anthony Towns <ajt@debian.org>
# Copyright (C) 2006 James Troup <james@nocrew.org>
################################################################################
+import os
import sys
+import traceback
import daklib.utils
+from daklib.daklog import Logger
+from daklib.config import Config
+from daklib.dak_exceptions import CantOpenError
+
################################################################################
def init():
"Archive sanity checks"),
("queue-report",
"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"),
+ ("graph",
+ "Output graphs of number of packages in various queues"),
+
("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"),
+ ("generate-packages-sources2",
+ "Generate Packages/Sources files [directly from database]"),
+ ("contents",
+ "Generate content files"),
+ ("metadata",
+ "Load data for packages/sources 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"),
+ ("copy-installer",
+ "Copies the installer from one suite to another"),
+ ("override-disparity",
+ "Generate a list of override disparities"),
]
return functionality
-
+
################################################################################
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)
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
# 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()