root / devflow / autopkg.py @ 0dcfcb5f
History | View | Annotate | Download (11.9 kB)
1 | 8df4ab84 | Vangelis Koukis | # Copyright 2012, 2013 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 55775645 | Vangelis Koukis | #
|
3 | 55775645 | Vangelis Koukis | # Redistribution and use in source and binary forms, with or
|
4 | 55775645 | Vangelis Koukis | # without modification, are permitted provided that the following
|
5 | 55775645 | Vangelis Koukis | # conditions are met:
|
6 | 55775645 | Vangelis Koukis | #
|
7 | 55775645 | Vangelis Koukis | # 1. Redistributions of source code must retain the above
|
8 | 55775645 | Vangelis Koukis | # copyright notice, this list of conditions and the following
|
9 | 55775645 | Vangelis Koukis | # disclaimer.
|
10 | 55775645 | Vangelis Koukis | #
|
11 | 55775645 | Vangelis Koukis | # 2. Redistributions in binary form must reproduce the above
|
12 | 55775645 | Vangelis Koukis | # copyright notice, this list of conditions and the following
|
13 | 55775645 | Vangelis Koukis | # disclaimer in the documentation and/or other materials
|
14 | 55775645 | Vangelis Koukis | # provided with the distribution.
|
15 | 55775645 | Vangelis Koukis | #
|
16 | 55775645 | Vangelis Koukis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 55775645 | Vangelis Koukis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 55775645 | Vangelis Koukis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 55775645 | Vangelis Koukis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 55775645 | Vangelis Koukis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 55775645 | Vangelis Koukis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 55775645 | Vangelis Koukis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 55775645 | Vangelis Koukis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 55775645 | Vangelis Koukis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 55775645 | Vangelis Koukis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 55775645 | Vangelis Koukis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 55775645 | Vangelis Koukis | # POSSIBILITY OF SUCH DAMAGE.
|
28 | 55775645 | Vangelis Koukis | #
|
29 | 55775645 | Vangelis Koukis | # The views and conclusions contained in the software and
|
30 | 55775645 | Vangelis Koukis | # documentation are those of the authors and should not be
|
31 | 55775645 | Vangelis Koukis | # interpreted as representing official policies, either expressed
|
32 | 55775645 | Vangelis Koukis | # or implied, of GRNET S.A.
|
33 | 55775645 | Vangelis Koukis | |
34 | 55775645 | Vangelis Koukis | import git |
35 | 55775645 | Vangelis Koukis | import os |
36 | 55775645 | Vangelis Koukis | import sys |
37 | 55775645 | Vangelis Koukis | from optparse import OptionParser |
38 | e727d1ba | Christos Stavrakakis | from collections import namedtuple |
39 | e727d1ba | Christos Stavrakakis | from sh import mktemp, cd, rm, git_dch, python |
40 | bec4bf12 | Christos Stavrakakis | from configobj import ConfigObj |
41 | 55775645 | Vangelis Koukis | |
42 | e727d1ba | Christos Stavrakakis | from devflow import versioning |
43 | 866bb9c1 | Christos Stavrakakis | |
44 | 55775645 | Vangelis Koukis | try:
|
45 | 55775645 | Vangelis Koukis | from colors import red, green |
46 | 55775645 | Vangelis Koukis | except ImportError: |
47 | 55775645 | Vangelis Koukis | red = lambda x: x
|
48 | 55775645 | Vangelis Koukis | green = lambda x: x
|
49 | 55775645 | Vangelis Koukis | |
50 | 55775645 | Vangelis Koukis | print_red = lambda x: sys.stdout.write(red(x) + "\n") |
51 | 55775645 | Vangelis Koukis | print_green = lambda x: sys.stdout.write(green(x) + "\n") |
52 | 55775645 | Vangelis Koukis | |
53 | 55775645 | Vangelis Koukis | AVAILABLE_MODES = ["release", "snapshot"] |
54 | 55775645 | Vangelis Koukis | |
55 | e727d1ba | Christos Stavrakakis | branch_type = namedtuple("branch_type", ["default_debian_branch"]) |
56 | e727d1ba | Christos Stavrakakis | BRANCH_TYPES = { |
57 | e727d1ba | Christos Stavrakakis | "feature": branch_type("debian-develop"), |
58 | e727d1ba | Christos Stavrakakis | "develop": branch_type("debian-develop"), |
59 | e727d1ba | Christos Stavrakakis | "release": branch_type("debian-develop"), |
60 | e727d1ba | Christos Stavrakakis | "master": branch_type("debian"), |
61 | e727d1ba | Christos Stavrakakis | "hotfix": branch_type("debian")} |
62 | e727d1ba | Christos Stavrakakis | |
63 | 1e4d1435 | Christos Stavrakakis | |
64 | 7316df0e | Christos Stavrakakis | DESCRIPTION = """Tool for automatical build of debian packages.
|
65 | 7316df0e | Christos Stavrakakis |
|
66 | 7316df0e | Christos Stavrakakis | %(prog)s is a helper script for automatic build of debian packages from
|
67 | 7316df0e | Christos Stavrakakis | repositories that follow the `git flow` development model
|
68 | 7316df0e | Christos Stavrakakis | <http://nvie.com/posts/a-successful-git-branching-model/>.
|
69 | 7316df0e | Christos Stavrakakis |
|
70 | b1aa3d49 | Christos Stavrakakis | This script must run from inside a clean git repository and will perform the
|
71 | b1aa3d49 | Christos Stavrakakis | following steps:
|
72 | 7316df0e | Christos Stavrakakis | * Clone your repository to a temporary directory
|
73 | 7316df0e | Christos Stavrakakis | * Merge the current branch with the corresponding debian branch
|
74 | 7316df0e | Christos Stavrakakis | * Compute the version of the new package and update the python
|
75 | 7316df0e | Christos Stavrakakis | version files
|
76 | 7316df0e | Christos Stavrakakis | * Create a new entry in debian/changelog, using `git-dch`
|
77 | 7316df0e | Christos Stavrakakis | * Create the debian packages, using `git-buildpackage`
|
78 | 7316df0e | Christos Stavrakakis | * Tag the appropriate branches if in `release` mode
|
79 | 7316df0e | Christos Stavrakakis |
|
80 | b1aa3d49 | Christos Stavrakakis | %(prog)s will work with the packages that are declared in `autopkg.conf`
|
81 | b1aa3d49 | Christos Stavrakakis | file, which must exist in the toplevel directory of the git repository.
|
82 | b1aa3d49 | Christos Stavrakakis |
|
83 | 7316df0e | Christos Stavrakakis | """
|
84 | 7316df0e | Christos Stavrakakis | |
85 | 7316df0e | Christos Stavrakakis | |
86 | 7316df0e | Christos Stavrakakis | def print_help(prog): |
87 | 7316df0e | Christos Stavrakakis | print DESCRIPTION % {"prog": prog} |
88 | 7316df0e | Christos Stavrakakis | |
89 | 55775645 | Vangelis Koukis | |
90 | 55775645 | Vangelis Koukis | def main(): |
91 | 55775645 | Vangelis Koukis | from devflow.version import __version__ |
92 | 55775645 | Vangelis Koukis | parser = OptionParser(usage="usage: %prog [options] mode",
|
93 | 7316df0e | Christos Stavrakakis | version="devflow %s" % __version__,
|
94 | 7316df0e | Christos Stavrakakis | add_help_option=False)
|
95 | 7316df0e | Christos Stavrakakis | parser.add_option("-h", "--help", |
96 | 7316df0e | Christos Stavrakakis | action="store_true",
|
97 | 7316df0e | Christos Stavrakakis | default=False,
|
98 | 7316df0e | Christos Stavrakakis | help="show this help message")
|
99 | 55775645 | Vangelis Koukis | parser.add_option("-k", "--keep-repo", |
100 | 55775645 | Vangelis Koukis | action="store_true",
|
101 | 55775645 | Vangelis Koukis | dest="keep_repo",
|
102 | 55775645 | Vangelis Koukis | default=False,
|
103 | 55775645 | Vangelis Koukis | help="Do not delete the cloned repository")
|
104 | 55775645 | Vangelis Koukis | parser.add_option("-b", "--build-dir", |
105 | 55775645 | Vangelis Koukis | dest="build_dir",
|
106 | 55775645 | Vangelis Koukis | default=None,
|
107 | 55775645 | Vangelis Koukis | help="Directory to store created pacakges")
|
108 | 55775645 | Vangelis Koukis | parser.add_option("-r", "--repo-dir", |
109 | 55775645 | Vangelis Koukis | dest="repo_dir",
|
110 | 55775645 | Vangelis Koukis | default=None,
|
111 | 55775645 | Vangelis Koukis | help="Directory to clone repository")
|
112 | 55775645 | Vangelis Koukis | parser.add_option("-d", "--dirty", |
113 | 55775645 | Vangelis Koukis | dest="force_dirty",
|
114 | 55775645 | Vangelis Koukis | default=False,
|
115 | 55775645 | Vangelis Koukis | action="store_true",
|
116 | 55775645 | Vangelis Koukis | help="Do not check if working directory is dirty")
|
117 | b1aa3d49 | Christos Stavrakakis | parser.add_option("-c", "--config-file", |
118 | b1aa3d49 | Christos Stavrakakis | dest="config_file",
|
119 | b1aa3d49 | Christos Stavrakakis | help="Override default configuration file")
|
120 | c9c385c0 | Christos Stavrakakis | parser.add_option("--no-sign",
|
121 | c9c385c0 | Christos Stavrakakis | dest="sign",
|
122 | c9c385c0 | Christos Stavrakakis | action="store_false",
|
123 | c9c385c0 | Christos Stavrakakis | default=True,
|
124 | c9c385c0 | Christos Stavrakakis | help="Do not sign the packages")
|
125 | 4a8d727c | Christos Stavrakakis | parser.add_option("--key-id",
|
126 | 4a8d727c | Christos Stavrakakis | dest="keyid",
|
127 | 4a8d727c | Christos Stavrakakis | help="Use this keyid for gpg signing")
|
128 | d4b7f566 | Christos Stavrakakis | parser.add_option("--dist",
|
129 | d4b7f566 | Christos Stavrakakis | dest="dist",
|
130 | d4b7f566 | Christos Stavrakakis | default="unstable",
|
131 | d4b7f566 | Christos Stavrakakis | help="If running in snapshot mode, automatically set"
|
132 | d4b7f566 | Christos Stavrakakis | " the changelog distribution to this value"
|
133 | d4b7f566 | Christos Stavrakakis | " (default=unstable).")
|
134 | 55775645 | Vangelis Koukis | |
135 | 55775645 | Vangelis Koukis | (options, args) = parser.parse_args() |
136 | 55775645 | Vangelis Koukis | |
137 | 7316df0e | Christos Stavrakakis | if options.help:
|
138 | 7316df0e | Christos Stavrakakis | print_help(parser.get_prog_name()) |
139 | 7316df0e | Christos Stavrakakis | parser.print_help() |
140 | 7316df0e | Christos Stavrakakis | return
|
141 | 7316df0e | Christos Stavrakakis | |
142 | b1aa3d49 | Christos Stavrakakis | # Get build mode
|
143 | 866bb9c1 | Christos Stavrakakis | try:
|
144 | 866bb9c1 | Christos Stavrakakis | mode = args[0]
|
145 | 866bb9c1 | Christos Stavrakakis | except IndexError: |
146 | 866bb9c1 | Christos Stavrakakis | raise ValueError("Mode argument is mandatory. Usage: %s" |
147 | 866bb9c1 | Christos Stavrakakis | % parser.usage) |
148 | 55775645 | Vangelis Koukis | if mode not in AVAILABLE_MODES: |
149 | 55775645 | Vangelis Koukis | raise ValueError(red("Invalid argument! Mode must be one: %s" |
150 | 55775645 | Vangelis Koukis | % ", ".join(AVAILABLE_MODES)))
|
151 | 55775645 | Vangelis Koukis | |
152 | a87012a9 | Christos Stavrakakis | os.environ["DEVFLOW_BUILD_MODE"] = mode
|
153 | 55775645 | Vangelis Koukis | |
154 | b1aa3d49 | Christos Stavrakakis | # Load the repository
|
155 | 55775645 | Vangelis Koukis | try:
|
156 | 55775645 | Vangelis Koukis | original_repo = git.Repo(".")
|
157 | 55775645 | Vangelis Koukis | except git.git.InvalidGitRepositoryError:
|
158 | 55775645 | Vangelis Koukis | raise RuntimeError(red("Current directory is not git repository.")) |
159 | 55775645 | Vangelis Koukis | |
160 | b1aa3d49 | Christos Stavrakakis | # Check that repository is clean
|
161 | 1e4d1435 | Christos Stavrakakis | toplevel = original_repo.working_dir |
162 | 55775645 | Vangelis Koukis | if original_repo.is_dirty() and not options.force_dirty: |
163 | 55775645 | Vangelis Koukis | raise RuntimeError(red("Repository %s is dirty." % toplevel)) |
164 | 55775645 | Vangelis Koukis | |
165 | b1aa3d49 | Christos Stavrakakis | # Get packages from configuration file
|
166 | bec4bf12 | Christos Stavrakakis | config_file = options.config_file or os.path.join(toplevel, "devflow.conf") |
167 | bec4bf12 | Christos Stavrakakis | config = ConfigObj(config_file) |
168 | bec4bf12 | Christos Stavrakakis | packages = config['packages'].keys()
|
169 | 8c028e36 | Christos Stavrakakis | print_green("Will build the following packages:\n" + "\n".join(packages)) |
170 | 55775645 | Vangelis Koukis | |
171 | 8c028e36 | Christos Stavrakakis | # Get current branch name and type and check if it is a valid one
|
172 | 9be34db8 | Christos Stavrakakis | branch = original_repo.head.reference.name |
173 | 8c028e36 | Christos Stavrakakis | branch_type = versioning.get_branch_type(branch) |
174 | 55775645 | Vangelis Koukis | |
175 | 8c028e36 | Christos Stavrakakis | if branch_type not in BRANCH_TYPES.keys(): |
176 | 8c028e36 | Christos Stavrakakis | allowed_branches = ", ".join(BRANCH_TYPES.keys())
|
177 | 5a29a44e | Christos Stavrakakis | raise ValueError("Malformed branch name '%s', cannot classify as" |
178 | 5a29a44e | Christos Stavrakakis | " one of %s" % (branch, allowed_branches))
|
179 | 5a29a44e | Christos Stavrakakis | |
180 | 9be34db8 | Christos Stavrakakis | # Check that original repo has the correct debian branch
|
181 | 8c028e36 | Christos Stavrakakis | debian_branch = "debian-" + branch
|
182 | e727d1ba | Christos Stavrakakis | origin_debian = "origin/" + debian_branch
|
183 | 9be34db8 | Christos Stavrakakis | if not debian_branch in original_repo.branches: |
184 | e727d1ba | Christos Stavrakakis | # Get default debian branch
|
185 | 8c028e36 | Christos Stavrakakis | default_debian = BRANCH_TYPES[branch_type].default_debian_branch |
186 | 8c028e36 | Christos Stavrakakis | origin_debian = "origin/" + default_debian
|
187 | 9be34db8 | Christos Stavrakakis | if not default_debian in original_repo.branches: |
188 | 9be34db8 | Christos Stavrakakis | original_repo.git.branch(default_debian, |
189 | 9be34db8 | Christos Stavrakakis | origin_debian) |
190 | 9be34db8 | Christos Stavrakakis | |
191 | 9be34db8 | Christos Stavrakakis | # Clone the repo
|
192 | 9be34db8 | Christos Stavrakakis | repo_dir = options.repo_dir or create_temp_directory("df-repo") |
193 | 9be34db8 | Christos Stavrakakis | repo = original_repo.clone(repo_dir) |
194 | 9be34db8 | Christos Stavrakakis | print_green("Cloned repository to '%s'." % repo_dir)
|
195 | 8c028e36 | Christos Stavrakakis | |
196 | 9be34db8 | Christos Stavrakakis | # Create the debian branch
|
197 | 8c028e36 | Christos Stavrakakis | repo.git.branch(debian_branch, origin_debian) |
198 | e727d1ba | Christos Stavrakakis | print_green("Created branch '%s' to track '%s'" % (debian_branch,
|
199 | e727d1ba | Christos Stavrakakis | origin_debian)) |
200 | 55775645 | Vangelis Koukis | |
201 | b1aa3d49 | Christos Stavrakakis | # Go to debian branch
|
202 | 55775645 | Vangelis Koukis | repo.git.checkout(debian_branch) |
203 | 55775645 | Vangelis Koukis | print_green("Changed to branch '%s'" % debian_branch)
|
204 | 55775645 | Vangelis Koukis | |
205 | b1aa3d49 | Christos Stavrakakis | # Merge with starting branch
|
206 | 55775645 | Vangelis Koukis | repo.git.merge(branch) |
207 | 8c028e36 | Christos Stavrakakis | print_green("Merged branch '%s' into '%s'" % (branch, debian_branch))
|
208 | 55775645 | Vangelis Koukis | |
209 | b1aa3d49 | Christos Stavrakakis | # Compute python and debian version
|
210 | 55775645 | Vangelis Koukis | cd(repo_dir) |
211 | e727d1ba | Christos Stavrakakis | python_version = versioning.get_python_version() |
212 | 7316df0e | Christos Stavrakakis | debian_version = versioning.\ |
213 | 2ec7054e | Christos Stavrakakis | debian_version_from_python_version(python_version) |
214 | 866bb9c1 | Christos Stavrakakis | print_green("The new debian version will be: '%s'" % debian_version)
|
215 | 55775645 | Vangelis Koukis | |
216 | 8334fb57 | Christos Stavrakakis | # Update the version files
|
217 | 0dcfcb5f | Christos Stavrakakis | versioning.update_version() |
218 | 8334fb57 | Christos Stavrakakis | |
219 | 8c028e36 | Christos Stavrakakis | # Tag branch with python version
|
220 | 8c028e36 | Christos Stavrakakis | branch_tag = python_version |
221 | 8c028e36 | Christos Stavrakakis | repo.git.tag(branch_tag, branch) |
222 | ce5f5240 | Christos Stavrakakis | upstream_tag = "upstream/" + branch_tag
|
223 | ce5f5240 | Christos Stavrakakis | repo.git.tag(upstream_tag, branch) |
224 | 8c028e36 | Christos Stavrakakis | |
225 | b1aa3d49 | Christos Stavrakakis | # Update changelog
|
226 | 55775645 | Vangelis Koukis | dch = git_dch("--debian-branch=%s" % debian_branch,
|
227 | 2ec7054e | Christos Stavrakakis | "--git-author",
|
228 | 2ec7054e | Christos Stavrakakis | "--ignore-regex=\".*\"",
|
229 | 2ec7054e | Christos Stavrakakis | "--multimaint-merge",
|
230 | 2ec7054e | Christos Stavrakakis | "--since=HEAD",
|
231 | 2ec7054e | Christos Stavrakakis | "--new-version=%s" % debian_version)
|
232 | 55775645 | Vangelis Koukis | print_green("Successfully ran '%s'" % " ".join(dch.cmd)) |
233 | 55775645 | Vangelis Koukis | |
234 | 55775645 | Vangelis Koukis | if mode == "release": |
235 | 1b883fea | Christos Stavrakakis | call("vim debian/changelog")
|
236 | adaef57d | Christos Stavrakakis | else:
|
237 | adaef57d | Christos Stavrakakis | f = open("debian/changelog", 'r+') |
238 | adaef57d | Christos Stavrakakis | lines = f.readlines() |
239 | d4b7f566 | Christos Stavrakakis | lines[0] = lines[0].replace("UNRELEASED", options.dist) |
240 | 8c028e36 | Christos Stavrakakis | lines[2] = lines[2].replace("UNRELEASED", "Snapshot build") |
241 | adaef57d | Christos Stavrakakis | f.seek(0)
|
242 | adaef57d | Christos Stavrakakis | f.writelines(lines) |
243 | adaef57d | Christos Stavrakakis | f.close() |
244 | 8c028e36 | Christos Stavrakakis | |
245 | 8c028e36 | Christos Stavrakakis | # Add changelog to INDEX
|
246 | 8c028e36 | Christos Stavrakakis | repo.git.add("debian/changelog")
|
247 | 8c028e36 | Christos Stavrakakis | # Commit Changes
|
248 | 8c028e36 | Christos Stavrakakis | repo.git.commit("-s", "-a", m="Bump version to %s" % debian_version) |
249 | 8c028e36 | Christos Stavrakakis | # Tag debian branch
|
250 | 8c028e36 | Christos Stavrakakis | debian_branch_tag = "debian/" + branch_tag
|
251 | 8c028e36 | Christos Stavrakakis | repo.git.tag(debian_branch_tag) |
252 | 55775645 | Vangelis Koukis | |
253 | 55775645 | Vangelis Koukis | # Add version.py files to repo
|
254 | 1b883fea | Christos Stavrakakis | call("grep \"__version_vcs\" -r . -l -I | xargs git add -f")
|
255 | 55775645 | Vangelis Koukis | |
256 | 8c028e36 | Christos Stavrakakis | # Create debian packages
|
257 | 8c028e36 | Christos Stavrakakis | build_dir = options.build_dir or create_temp_directory("df-build") |
258 | 8c028e36 | Christos Stavrakakis | print_green("Build directory: '%s'" % build_dir)
|
259 | 55775645 | Vangelis Koukis | |
260 | 866bb9c1 | Christos Stavrakakis | cd(repo_dir) |
261 | 3a150e7c | Christos Stavrakakis | version_files = [] |
262 | 3a150e7c | Christos Stavrakakis | for _, pkg_info in config['packages'].items(): |
263 | 3a150e7c | Christos Stavrakakis | version_files.append(pkg_info['version_file'])
|
264 | 3a150e7c | Christos Stavrakakis | ignore_regexp = "|".join(["^(%s)$" % vf for vf in version_files]) |
265 | c9c385c0 | Christos Stavrakakis | build_cmd = "git-buildpackage --git-export-dir=%s"\
|
266 | c9c385c0 | Christos Stavrakakis | " --git-upstream-branch=%s --git-debian-branch=%s"\
|
267 | c9c385c0 | Christos Stavrakakis | " --git-export=INDEX --git-ignore-new -sa"\
|
268 | 3a150e7c | Christos Stavrakakis | " --source-option='\"--extend-diff-ignore=%s\"'"\
|
269 | 3a150e7c | Christos Stavrakakis | " --git-upstream-tag=%s"\
|
270 | 3a150e7c | Christos Stavrakakis | % (build_dir, branch, debian_branch, ignore_regexp, |
271 | 3a150e7c | Christos Stavrakakis | upstream_tag) |
272 | c9c385c0 | Christos Stavrakakis | if not options.sign: |
273 | c9c385c0 | Christos Stavrakakis | build_cmd += " -uc -us"
|
274 | 4a8d727c | Christos Stavrakakis | elif options.keyid:
|
275 | 4a8d727c | Christos Stavrakakis | build_cmd += " -k\"'%s'\"" % options.keyid
|
276 | c9c385c0 | Christos Stavrakakis | call(build_cmd) |
277 | 55775645 | Vangelis Koukis | |
278 | b1aa3d49 | Christos Stavrakakis | # Remove cloned repo
|
279 | f80b3f6a | Christos Stavrakakis | if mode != 'release' and not options.keep_repo: |
280 | 55775645 | Vangelis Koukis | print_green("Removing cloned repo '%s'." % repo_dir)
|
281 | 55775645 | Vangelis Koukis | rm("-r", repo_dir)
|
282 | 55775645 | Vangelis Koukis | |
283 | 8c028e36 | Christos Stavrakakis | # Print final info
|
284 | 8c028e36 | Christos Stavrakakis | info = (("Version", debian_version),
|
285 | 8c028e36 | Christos Stavrakakis | ("Upstream branch", branch),
|
286 | 8c028e36 | Christos Stavrakakis | ("Upstream tag", branch_tag),
|
287 | 8c028e36 | Christos Stavrakakis | ("Debian branch", debian_branch),
|
288 | 8c028e36 | Christos Stavrakakis | ("Debian tag", debian_branch_tag),
|
289 | 8c028e36 | Christos Stavrakakis | ("Repository directory", repo_dir),
|
290 | 8c028e36 | Christos Stavrakakis | ("Packages directory", build_dir))
|
291 | 8c028e36 | Christos Stavrakakis | print_green("\n".join(["%s: %s" % (name, val) for name, val in info])) |
292 | 866bb9c1 | Christos Stavrakakis | |
293 | b1aa3d49 | Christos Stavrakakis | # Print help message
|
294 | 866bb9c1 | Christos Stavrakakis | if mode == "release": |
295 | 8c028e36 | Christos Stavrakakis | origin = original_repo.remote().url |
296 | 8c028e36 | Christos Stavrakakis | repo.create_remote("original_origin", origin)
|
297 | 8c028e36 | Christos Stavrakakis | print_green("Created remote 'original_origin' for the repository '%s'"
|
298 | 8c028e36 | Christos Stavrakakis | % origin) |
299 | 866bb9c1 | Christos Stavrakakis | |
300 | 8c028e36 | Christos Stavrakakis | print_green("To update repositories '%s' and '%s' go to '%s' and run:"
|
301 | 8c028e36 | Christos Stavrakakis | % (toplevel, origin, repo_dir)) |
302 | 8c028e36 | Christos Stavrakakis | for remote in ['origin', 'original_origin']: |
303 | 8c028e36 | Christos Stavrakakis | print
|
304 | 8c028e36 | Christos Stavrakakis | for obj in [debian_branch, branch_tag, debian_branch_tag]: |
305 | 8c028e36 | Christos Stavrakakis | print_green("git push %s %s" % (remote, obj))
|
306 | 866bb9c1 | Christos Stavrakakis | |
307 | 866bb9c1 | Christos Stavrakakis | |
308 | ca01e50e | Christos Stavrakakis | def create_temp_directory(suffix): |
309 | ca01e50e | Christos Stavrakakis | create_dir_cmd = mktemp("-d", "/tmp/" + suffix + "-XXXXX") |
310 | ca01e50e | Christos Stavrakakis | return create_dir_cmd.stdout.strip()
|
311 | 55775645 | Vangelis Koukis | |
312 | 55775645 | Vangelis Koukis | |
313 | 1b883fea | Christos Stavrakakis | def call(cmd): |
314 | 1b883fea | Christos Stavrakakis | rc = os.system(cmd) |
315 | 1b883fea | Christos Stavrakakis | if rc:
|
316 | 06dcdc1b | Christos Stavrakakis | raise RuntimeError("Command '%s' failed!" % cmd) |
317 | b1aa3d49 | Christos Stavrakakis | |
318 | b1aa3d49 | Christos Stavrakakis | |
319 | 37866d7a | Christos Stavrakakis | def create_temp_directory(suffix): |
320 | 37866d7a | Christos Stavrakakis | create_dir_cmd = mktemp("-d", "/tmp/" + suffix + "-XXXXX") |
321 | 37866d7a | Christos Stavrakakis | return create_dir_cmd.stdout.strip()
|
322 | 37866d7a | Christos Stavrakakis | |
323 | 37866d7a | Christos Stavrakakis | |
324 | 55775645 | Vangelis Koukis | if __name__ == "__main__": |
325 | 55775645 | Vangelis Koukis | sys.exit(main()) |