annotate bin/listpackages.py @ 99:7888fe374e11

Add support for notification mails in case of build errors This involves a new status field notification_mail to keep track of whether a notification has been sent for a particular build attempt and two programs to list the pending notifications and to send the pending notifications (similar to how the static web pages are published) as well as the corresponding configuration files.
author Bernhard Herzog <bh@intevation.de>
date Tue, 19 Feb 2008 19:19:23 +0000
parents 3caf4a5ecbf0
children 24d119c27150
rev   line source
89
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 #! /usr/bin/python2.4
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Copyright (C) 2007 by Intevation GmbH
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Authors:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 # Bernhard Herzog <bh@intevation.de>
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 #
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # This program is free software under the GPL (>=v2)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7 # Read the file COPYING coming with the software for details.
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 """List the absolute filenames of packages created by treepkg"""
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import sys
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import treepkgcmd
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 from treepkg.options import create_parser
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 from treepkg.report import get_packager_group
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17 def parse_commandline():
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 parser = create_parser()
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 parser.set_defaults(binary=False, source=False)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 parser.add_option("--revision", type="int",
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 help=("The revision whose files are to be listed."
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 " If not given, the latest revision is used"))
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 parser.add_option("--track",
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 help=("The package track whose files are to be listed"))
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 parser.add_option("--source", action="store_true",
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 help=("List source packages"))
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 parser.add_option("--binary", action="store_true",
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 help=("List binary packages"))
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 return parser.parse_args()
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 def list_track_packages(track, revision, source, binary):
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 revisions = track.get_revisions()
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 if not revisions:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 print >>sys.stderr, "No revisions have been packaged"
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 sys.exit(1)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 if revision is None:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 revpkg = revisions[-1]
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 else:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 for revpkg in revisions:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 if revpkg.revision == revision:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 break
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 else:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 revpkg = None
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 if revpkg is not None:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 if source:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 for filename in revpkg.list_source_files():
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 print filename
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 if binary:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 for filename in revpkg.list_binary_files():
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53 print filename
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 else:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 print >>sys.stderr, "No revision", repr(revision)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 sys.exit(1)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 def list_packages(config_file, trackname, revision, source, binary):
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 group = get_packager_group(config_file)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 for track in group.get_package_tracks():
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 if track.name == trackname:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 list_track_packages(track, revision, source, binary)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 break
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 else:
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 print >>sys.stderr, "no track named", trackname
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 sys.exit(1)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 def main():
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 options, args = parse_commandline()
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 list_packages(options.config_file, options.track, options.revision,
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 source=options.source, binary=options.binary)
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72
3caf4a5ecbf0 Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)