annotate bin/updatetreepkg.py @ 441:eadcb1bb54e2

Merged revisions 388-399 via svnmerge from svn+ssh://svn.wald.intevation.org/treepkg/branches/treepkg-status ........ r388 | bricks | 2010-07-28 10:38:50 +0200 (Mi, 28 Jul 2010) | 3 lines fix if statement upload hook should be called if it's not empty ........ r389 | bricks | 2010-07-28 13:38:00 +0200 (Mi, 28 Jul 2010) | 2 lines only rsync specified architectures from cachedir to publishdir ........ r390 | bricks | 2010-07-29 14:07:57 +0200 (Do, 29 Jul 2010) | 2 lines introduced after_copy_hook and made rsync upload to publishdir optional ........ r391 | bricks | 2010-07-29 15:43:39 +0200 (Do, 29 Jul 2010) | 3 lines publish package must be default to get original behaviour be more verbose at publishing ........ r392 | bricks | 2010-07-29 16:50:53 +0200 (Do, 29 Jul 2010) | 2 lines fix handling of showing only successfull builds together with num packages ........ r393 | bricks | 2010-07-29 16:52:42 +0200 (Do, 29 Jul 2010) | 2 lines fixed typo ........ r394 | bricks | 2010-07-29 16:59:10 +0200 (Do, 29 Jul 2010) | 2 lines fixed another typo ........ r395 | bricks | 2010-07-29 18:05:54 +0200 (Do, 29 Jul 2010) | 3 lines fixed another typo treepkg is really slow with many revisions ........ r396 | bricks | 2010-08-02 12:41:55 +0200 (Mo, 02 Aug 2010) | 2 lines fixed typos ........ r397 | bricks | 2010-08-02 17:36:12 +0200 (Mo, 02 Aug 2010) | 3 lines be more error prone in listing different files not checking if a dir exists caused several errors if a build wasn't successful ........ r398 | bricks | 2010-08-05 18:21:47 +0200 (Do, 05 Aug 2010) | 2 lines review changes ........ r399 | bricks | 2010-08-06 13:06:08 +0200 (Fr, 06 Aug 2010) | 4 lines cleanup modules fix test_info testcases added testcases for remove_trailingslashes and expand_filename ........
author Bjoern Ricks <bricks@intevation.de>
date Fri, 06 Aug 2010 13:41:54 +0000
parents 5fa56edeb606
children
rev   line source
287
1fcdffbeb9de Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents: 233
diff changeset
1 #! /usr/bin/python
233
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH
144
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
233
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
16
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
17 - Rename the directory name of the revision from <revision>-1 to <revision>-0
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
18
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
19 The second number is now the revision of the packaging rules if
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
20 they're managed by SVN and always 0 for manual management of the
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
21 rules.
144
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 """
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 import os
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 import treepkgcmd
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 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
28 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
29 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
30
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 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
32 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
33 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
34 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
35 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
36 if not dry_run:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 os.mkdir(new_dir)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 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
39 if not dry_run:
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 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
41
233
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
42 def update_rules_revision_in_directory_names(track, dry_run):
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
43 revisions = track.get_revisions()
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
44 rules_revisions = set(revision.rules_revision for revision in revisions)
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
45 if rules_revisions == set([1]):
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
46 for revision in revisions:
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
47 rename_file(revision.base_dir,
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
48 revision.base_dir[:-2] + "-0",
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
49 dry_run)
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
50
144
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 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
52 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
53 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
54 opts["handle_dependencies"] = False
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 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
56 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
57 **treepkg_opts)
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 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
59 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
60 # 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
61 # 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
62 rename_file(os.path.join(revision.base_dir, "build.log"),
336
5fa56edeb606 Changed the Build Logs to be gziped before they are published
Andre Heinecke <aheinecke@intevation.de>
parents: 287
diff changeset
63 revision.get_build_log(), dry_run)
144
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 # 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
65 # 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
66 rename_file(os.path.join(revision.base_dir, "build_log.txt"),
336
5fa56edeb606 Changed the Build Logs to be gziped before they are published
Andre Heinecke <aheinecke@intevation.de>
parents: 287
diff changeset
67 revision.get_build_log(), dry_run)
233
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
68 # Revision directories used to end with "-1". Now that number
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
69 # is the revision of the packaging rules which default to 0 for
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
70 # the traditional manual rules management without a version
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
71 # control system. Rename those directories if necessary
757e5504f46a Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents: 144
diff changeset
72 update_rules_revision_in_directory_names(track, dry_run)
144
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 def parse_commandline():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 parser = create_parser()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76 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
77 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
78 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
79 return parser.parse_args()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 def main():
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 options, args = parse_commandline()
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84 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
85
dd54ef8a9244 New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)