Mercurial > treepkg
view bin/runtreepkg.py @ 128:5155b4f9443d
Add basic dependency handling to PackageTrack and PackagerGroup.
PackageTrack now extracts dependency information from the debian/control
file and PackagerGroup sorts the tracks based on this information so
that packages on which other packages in the group depend on are built
first and their newly built binaries are installed added to the pbuilder
instance.
Also add some test cases.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Fri, 23 May 2008 16:11:22 +0000 |
parents | 2630a1c18816 |
children | e83db4482aab |
line wrap: on
line source
#! /usr/bin/python2.4 # Copyright (C) 2007 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. """Starts the tree packager""" import sys import os import logging from optparse import OptionParser import treepkgcmd from treepkg.options import create_parser from treepkg.packager import create_package_track, PackagerGroup from treepkg.readconfig import read_config def initialize_logging(): """Initializes the logging system""" root = logging.getLogger() root.setLevel(logging.DEBUG) hdlr = logging.StreamHandler() fmt = logging.Formatter("%(asctime)s %(levelname)s %(message)s") hdlr.setFormatter(fmt) root.addHandler(hdlr) def parse_commandline(): parser = create_parser() parser.add_option("--once", action="store_true", help=("Check the packagers only once and exit afterwards." " Without this option, the tree packager will" " check periodically.")) parser.add_option("--revision", help=("SVN revision to update to before attempting" " to package.")) return parser.parse_args() def main(): options, args = parse_commandline() initialize_logging() treepkg_opts, packager_opts = read_config(options.config_file) if args: packager_opts = [opts for opts in packager_opts if opts["name"] in args] # check whether we got all of the names in args: for opts in packager_opts: name = opts["name"] if name in args: args.remove(name) for name in args: print >>sys.stderr, "No package tracks found named %r" % name if packager_opts: group = PackagerGroup([create_package_track(**opts) for opts in packager_opts], revision=options.revision, **treepkg_opts) if options.once: group.check_package_tracks() else: group.run() main()