Mercurial > treepkg
annotate bin/publishpackages.py @ 310:26c15a0f0e52
When stopping because of an error, do not raise the exception again as
it leads to confusing double tracebacks in the log. Instead, simply log
the reason for the stopping and stop in the same way a stop instruction
is handled.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Wed, 02 Dec 2009 14:46:37 +0000 |
parents | 1fcdffbeb9de |
children | f70cee73a7ec |
rev | line source |
---|---|
287
1fcdffbeb9de
Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents:
263
diff
changeset
|
1 #! /usr/bin/python |
247
55337021fe5b
Mention rules revision in text of --revision parameter of bin/publishpackages.py
Bernhard Herzog <bh@intevation.de>
parents:
200
diff
changeset
|
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH |
89
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 """Publishes selected 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 import os |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
13 import shutil |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
14 import shlex |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
15 from optparse import OptionParser |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
16 from ConfigParser import SafeConfigParser |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
17 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
18 import treepkgcmd |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
19 from treepkg.readconfig import read_config_section, convert_bool |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
20 from treepkg.run import call, capture_output |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
21 from treepkg.cmdexpand import cmdexpand |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
22 from treepkg.util import ensure_directory, listdir_abs |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
23 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
24 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
25 def remove_trailing_slashes(s): |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
26 return s.rstrip("/") |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
27 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
28 def expand_filename(filename): |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
29 """ |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
30 Applies os.path.expanduser and os.path.expandvars to filename |
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 return os.path.expandvars(os.path.expanduser(filename)) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
33 |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
34 config_desc = ["distribution", "section", "num_newest", |
249
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
35 "build_user", "build_host", "build_listpackages", |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
36 "publish_user", "publish_host", |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
37 ("after_upload_hook", shlex.split), |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
38 ("publish_remove_old_packages", convert_bool), |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
39 ("publish_dir", remove_trailing_slashes), |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
40 ("cachedir", |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
41 lambda s: expand_filename(remove_trailing_slashes(s)))] |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
42 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
43 def read_config(filename): |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
44 parser = SafeConfigParser() |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
45 parser.read([filename]) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
46 return read_config_section(parser, "publishpackages", config_desc) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
47 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
48 def parse_commandline(): |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
49 parser = OptionParser() |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
50 parser.set_defaults(config_file=os.path.join(treepkgcmd.topdir, |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
51 "publishpackages.cfg"), |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
52 quiet=False) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
53 parser.add_option("--config-file", |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
54 help=("The configuration file." |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
55 " Default is publishpackages.cfg")) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
56 parser.add_option("--revision", |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
57 help=("The revision whose files are to be published." |
247
55337021fe5b
Mention rules revision in text of --revision parameter of bin/publishpackages.py
Bernhard Herzog <bh@intevation.de>
parents:
200
diff
changeset
|
58 " If not given, the latest revision is used" |
55337021fe5b
Mention rules revision in text of --revision parameter of bin/publishpackages.py
Bernhard Herzog <bh@intevation.de>
parents:
200
diff
changeset
|
59 " The value may be given as REV-RULESREV to specify" |
55337021fe5b
Mention rules revision in text of --revision parameter of bin/publishpackages.py
Bernhard Herzog <bh@intevation.de>
parents:
200
diff
changeset
|
60 " both the main source revision and the revision of" |
55337021fe5b
Mention rules revision in text of --revision parameter of bin/publishpackages.py
Bernhard Herzog <bh@intevation.de>
parents:
200
diff
changeset
|
61 " the packaging rules")) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
62 parser.add_option("--dist", |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
63 help=("The debian distribution name to use on" |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
64 " the publishing system")) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
65 parser.add_option("--section", |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
66 help=("The debian distribution section name to use on" |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
67 " the publishing system")) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
68 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
|
69 help=("The package track whose files are to be" |
200
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
70 " published. If not given, files of all tracks" |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
71 " will be published")) |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
72 parser.add_option("--quiet", action="store_true", |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
73 help=("Do not print progress meters or other" |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
74 " informational output")) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
75 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
|
76 |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
77 def prefix_for_remote_command(user, host): |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
78 """Returns the ssh call needed to run a command on a remote host. |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
79 If host is empty, the function assumes the command is to be run on |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
80 the local host as the same user that exectutes this function, so |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
81 that no ssh or other call is needed. |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
82 """ |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
83 prefix = [] |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
84 if host: |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
85 prefix.extend(["ssh", "%s@%s" % (user, host)]) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
86 return prefix |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
87 |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
88 |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
89 def copy_to_cache(variables, track, revision, arch, quiet): |
200
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
90 listpackages_vars = variables.copy() |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
91 |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
92 if arch == "source": |
200
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
93 listpackages_vars["pkgtype"] = "--source" |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
94 else: |
200
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
95 listpackages_vars["pkgtype"] = "--binary" |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
96 |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
97 if track: |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
98 listpackages_vars["track"] = ["--track", track] |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
99 else: |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
100 listpackages_vars["track"] = [] |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
101 |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
102 if revision: |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
103 listpackages_vars["revision"] = ["--revision", revision] |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
104 else: |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
105 listpackages_vars["revision"] = [] |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
106 |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
107 runremote = prefix_for_remote_command(variables["build_user"], |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
108 variables["build_host"]) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
109 files = capture_output(cmdexpand("@runremote $build_listpackages" |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
110 " @track @revision $pkgtype" |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
111 " --newest=$num_newest", |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
112 runremote=runremote, |
200
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
113 **listpackages_vars)).strip().split("\n") |
ce03e24f6d0f
publishpackages command: if --track is omitted, publish files of all tracks.
Bernhard Herzog <bh@intevation.de>
parents:
89
diff
changeset
|
114 |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
115 # scp the packages to the cache dir |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
116 cachedir = variables["cachedir"] |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
117 shutil.rmtree(cachedir, ignore_errors=True) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
118 ensure_directory(cachedir) |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
119 if variables["build_host"]: |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
120 userhost = "%(build_user)s@%(build_host)s:" % variables |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
121 files = [userhost + filename for filename in files] |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
122 scp_flags = [] |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
123 if quiet: |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
124 scp_flags.append("-q") |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
125 call(cmdexpand("scp -p @scp_flags @files $cachedir/", files=files, |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
126 scp_flags=scp_flags, **variables)) |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
127 |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
128 |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
129 def copy_to_publishdir(variables, dist, section, arch, quiet): |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
130 destdir = os.path.join(variables["publish_dir"], dist, section, arch) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
131 remote_destdir = destdir |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
132 if variables["publish_host"]: |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
133 remote_destdir = (("%(publish_user)s@%(publish_host)s:" % variables) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
134 + remote_destdir) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
135 runremote = prefix_for_remote_command(variables["publish_user"], |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
136 variables["publish_host"]) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
137 |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
138 call(cmdexpand("@runremote mkdir --parents $destdir", |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
139 runremote=runremote, destdir=destdir, **variables)) |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
140 rsync_flags = [] |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
141 if variables["publish_remove_old_packages"]: |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
142 rsync_flags.append("--delete") |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
143 if quiet: |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
144 rsync_flags.append("--quiet") |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
145 call(cmdexpand("rsync @rsync_flags -rpt $cachedir/ $remote_destdir/", |
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
146 rsync_flags=rsync_flags, remote_destdir=remote_destdir, |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
147 **variables)) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
148 |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
149 |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
150 def publish_packages_arch(variables, track, revision, dist, section, arch, |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
151 quiet): |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
152 copy_to_cache(variables, track, revision, arch, quiet) |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
153 copy_to_publishdir(variables, dist, section, arch, quiet) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
154 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
155 |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
156 def publish_packages(config_filename, track, revision, dist, section, quiet): |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
157 config = read_config(config_filename) |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
158 |
249
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
159 if dist is None: |
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
160 dist = config["distribution"] |
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
161 if section is None: |
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
162 section = config["section"] |
a3f106580525
Add config settings "distribution" and "section" so that they don't have
Bernhard Herzog <bh@intevation.de>
parents:
247
diff
changeset
|
163 |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
164 for arch in ["binary-i386", "source"]: |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
165 publish_packages_arch(config, track, revision, dist, section, arch, |
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
166 quiet) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
167 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
168 # update apt archive |
256
8052aabada8b
Make publishpackages.py work for automated regular publishing of the
Bernhard Herzog <bh@intevation.de>
parents:
249
diff
changeset
|
169 call(config["after_upload_hook"]) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
170 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
171 def main(): |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
172 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
|
173 publish_packages(options.config_file, options.track, options.revision, |
263
acf6c0ce2014
Add --quiet option so that publishpackages.py can be run without any output.
Bernhard Herzog <bh@intevation.de>
parents:
256
diff
changeset
|
174 options.dist, options.section, options.quiet) |
89
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
175 |
3caf4a5ecbf0
Add scripts that help publish the packages produced by the tree packager
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
176 main() |