annotate bin/updatetreepkg.py @ 164:a68a4e22549c

Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
author Bernhard Herzog <bh@intevation.de>
date Fri, 20 Jun 2008 14:06:27 +0000
parents dd54ef8a9244
children 757e5504f46a
rev   line source
144
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 #! /usr/bin/python2.4
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Copyright (C) 2007, 2008 by Intevation GmbH
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Authors:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 # Bernhard Herzog <bh@intevation.de>
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 #
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # This program is free software under the GPL (>=v2)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7 # Read the file COPYING coming with the software for details.
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 """Script to help update a tree packager installation to the current
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 version. The script updates the information stored in the filesystem
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 for the individual revisions in the following ways:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 - Rename the build log from build.log to log/build_log.txt
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 - Rename the build log from build_log.txt to log/build_log.txt
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 """
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 import os
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 import treepkgcmd
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 from treepkg.options import create_parser
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 from treepkg.packager import create_package_track, PackagerGroup
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 from treepkg.readconfig import read_config
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 def rename_file(old_name, new_name, dry_run):
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 if os.path.exists(old_name):
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 new_dir = os.path.dirname(new_name)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 if not os.path.isdir(new_dir):
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 print "mkdir %s" % (new_dir,)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 if not dry_run:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 os.mkdir(new_dir)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 print "mv %s %s" % (old_name, new_name)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 if not dry_run:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 os.rename(old_name, new_name)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 def update_treepkg(config_file, dry_run):
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 treepkg_opts, packager_opts = read_config(config_file)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 for opts in packager_opts:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 opts["handle_dependencies"] = False
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 group = PackagerGroup([create_package_track(**opts)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 for opts in packager_opts],
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 **treepkg_opts)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 for track in group.get_package_tracks():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 for revision in track.get_revisions():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 # Originally, the build logs were called build.log and were
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 # in the base directory of a revision
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 rename_file(os.path.join(revision.base_dir, "build.log"),
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 revision.build_log, dry_run)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 # for a while, the build logs were called build_log.txt but
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 # still were in the base directory
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 rename_file(os.path.join(revision.base_dir, "build_log.txt"),
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 revision.build_log, dry_run)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 def parse_commandline():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 parser = create_parser()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 parser.set_defaults(dry_run=False)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 parser.add_option("-n", "--dry-run", action="store_true",
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 help="Do not actually change anything")
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 return parser.parse_args()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 def main():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 options, args = parse_commandline()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 update_treepkg(options.config_file, options.dry_run)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)