51 |
51 |
|
52 |
52 |
AVAILABLE_MODES = ["release", "snapshot"]
|
53 |
53 |
|
54 |
|
# TODO: Make the PACKAGES tuple configurable,
|
55 |
|
# read it from autopkg.conf in the git toplevel directory.
|
56 |
|
PACKAGES = ("devflow", )
|
|
54 |
|
|
55 |
def get_packages_to_build(toplevel_dir):
|
|
56 |
conf_file = os.path.join(toplevel_dir, "autopkg.conf")
|
|
57 |
try:
|
|
58 |
f = open(conf_file)
|
|
59 |
except IOError:
|
|
60 |
raise RuntimeError("Configuration file %s does not exist!" % conf_file)
|
|
61 |
|
|
62 |
lines = [l.strip() for l in f.readlines()]
|
|
63 |
l = [l for l in lines if not l.startswith("#")]
|
|
64 |
f.close()
|
|
65 |
return l
|
57 |
66 |
|
58 |
67 |
|
59 |
68 |
def main():
|
... | ... | |
90 |
99 |
raise ValueError(red("Invalid argument! Mode must be one: %s"
|
91 |
100 |
% ", ".join(AVAILABLE_MODES)))
|
92 |
101 |
|
93 |
|
# Do not prompt for merge message. Required for some Git versions
|
94 |
102 |
os.environ["GITFLOW_BUILD_MODE"] = mode
|
95 |
103 |
|
96 |
104 |
try:
|
... | ... | |
98 |
106 |
except git.git.InvalidGitRepositoryError:
|
99 |
107 |
raise RuntimeError(red("Current directory is not git repository."))
|
100 |
108 |
|
|
109 |
toplevel = original_repo.working_dir
|
101 |
110 |
if original_repo.is_dirty() and not options.force_dirty:
|
102 |
|
toplevel = original_repo.working_dir
|
103 |
111 |
raise RuntimeError(red("Repository %s is dirty." % toplevel))
|
104 |
112 |
|
105 |
113 |
repo_dir = options.repo_dir
|
... | ... | |
108 |
116 |
print_green("Created temporary directory '%s' for the cloned repo."
|
109 |
117 |
% repo_dir)
|
110 |
118 |
|
|
119 |
packages = get_packages_to_build(toplevel)
|
|
120 |
if packages:
|
|
121 |
print_green("Will build the following packages:\n" + \
|
|
122 |
"\n".join(packages))
|
|
123 |
else:
|
|
124 |
raise RuntimeError("Configuration file is empty."
|
|
125 |
" No packages to build.")
|
|
126 |
|
111 |
127 |
repo = original_repo.clone(repo_dir)
|
112 |
128 |
print_green("Cloned current repository to '%s'." % repo_dir)
|
113 |
129 |
|
... | ... | |
156 |
172 |
repo.git.tag(debian_tag)
|
157 |
173 |
repo.git.tag(python_tag, branch)
|
158 |
174 |
|
159 |
|
for package in PACKAGES:
|
|
175 |
for package in packages:
|
160 |
176 |
# python setup.py should run in its directory
|
161 |
177 |
cd(package)
|
162 |
178 |
package_dir = repo_dir + "/" + package
|