Mercurial > treepkg
annotate bin/updatetreepkg.py @ 171:c0ea6cbb0fd2
Add "--debbuildopts -b" to "pbuilder build" command line to stop
pbuilder from creating a source package. The .changes would otherwise
contain references to that new source package instead of the one we
passed to pbuilder. The checksums for the two source packages would be
different so the .changes file would not match the source package that
treepkg produces.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Mon, 23 Jun 2008 16:12:01 +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() |