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()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)