view bin/listpackages.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 3caf4a5ecbf0
children 24d119c27150
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.

"""List the absolute filenames of packages created by treepkg"""

import sys

import treepkgcmd
from treepkg.options import create_parser
from treepkg.report import get_packager_group

def parse_commandline():
    parser = create_parser()
    parser.set_defaults(binary=False, source=False)
    parser.add_option("--revision", type="int",
                      help=("The revision whose files are to be listed."
                            " If not given, the latest revision is used"))
    parser.add_option("--track",
                      help=("The package track whose files are to be listed"))
    parser.add_option("--source", action="store_true",
                      help=("List source packages"))
    parser.add_option("--binary", action="store_true",
                      help=("List binary packages"))
    return parser.parse_args()


def list_track_packages(track, revision, source, binary):
    revisions = track.get_revisions()
    if not revisions:
        print >>sys.stderr, "No revisions have been packaged"
        sys.exit(1)

    if revision is None:
        revpkg = revisions[-1]
    else:
        for revpkg in revisions:
            if revpkg.revision == revision:
                break
        else:
            revpkg = None

    if revpkg is not None:
        if source:
            for filename in revpkg.list_source_files():
                print filename
        if binary:
            for filename in revpkg.list_binary_files():
                print filename
    else:
        print >>sys.stderr, "No revision", repr(revision)
        sys.exit(1)

def list_packages(config_file, trackname, revision, source, binary):
    group = get_packager_group(config_file)
    for track in group.get_package_tracks():
        if track.name == trackname:
            list_track_packages(track, revision, source, binary)
            break
    else:
        print >>sys.stderr, "no track named", trackname
        sys.exit(1)

def main():
    options, args = parse_commandline()
    list_packages(options.config_file, options.track, options.revision,
                  source=options.source, binary=options.binary)

main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)