################################################################################
+import os
import sys
-import imp
+import traceback
import daklib.utils
-import daklib.extensions
+import warnings
-################################################################################
-
-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
-
-################################################################################
-
-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
################################################################################
("process-new",
"Process NEW and BYHAND packages"),
- ("process-unchecked",
+ ("process-upload",
"Process packages in queue/unchecked"),
- ("process-accepted",
- "Install packages into the pool"),
+ ("process-policy",
+ "Process packages in policy queues from COMMENTS files"),
- ("make-suite-file-list",
- "Generate lists of packages per suite for apt-ftparchive"),
+ ("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",
"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",
"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",
"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"),
+ ("make-changelog",
+ "Generate changelog between two suites"),
]
return functionality
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 ]
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.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
################################################################################
if __name__ == "__main__":
+ os.environ['LANG'] = 'C'
+ os.environ['LC_ALL'] = 'C'
main()