162 m = re.search(
"use\s*LCGCMT\s*LCGCMT_(\S*)",open(os.path.join(
"..",
"..",
"cmt",
"project.cmt")).read())
164 LCGCMTVers = m.group(1)
165 print "Using LCGCMT", LCGCMTVers
167 print "Cannot find LCGCMT version"
172 all_packages_tmp = []
173 exec(os.popen(
r"""cmt broadcast 'echo "all_packages_tmp.append((\"<package>\"", \"$PWD\""))"'""",
"r").read())
174 all_packages_names = []
176 for k,v
in all_packages_tmp:
177 all_packages_names.append(k)
181 special_packages = [
"Gaudi",
"GaudiExamples",
"GaudiSys",
"GaudiRelease"]
185 new_version = raw_input(
"The old version of the project is %s, which is the new one? " % old_version)
191 for pkg
in all_packages_names:
192 reqfile = os.path.join(all_packages[pkg],
"requirements")
193 relnotefile = os.path.join(all_packages[pkg],
"..",
"doc",
"release.notes")
195 if os.path.exists(relnotefile):
198 release_notes[pkg] =
""
199 if pkg
in special_packages:
200 new_versions[pkg] = new_version
202 if release_notes[pkg]:
203 new_versions[pkg] = raw_input(
"\nThe old version of %s is %s, this are the changes:\n%s\nWhich version you want (old is %s)? " % (pkg, old_versions[pkg], release_notes[pkg], old_versions[pkg]))
205 new_versions[pkg] = old_versions[pkg]
207 if new_versions[pkg] != old_versions[pkg]:
209 if os.path.exists(relnotefile):
213 reqfile = os.path.join(all_packages[
"GaudiRelease"],
"requirements")
215 for l
in open(reqfile):
216 sl = l.strip().split()
217 if sl
and sl[0] ==
"use":
218 if sl[1]
in new_versions:
219 if sl[2] != new_versions[sl[1]]:
220 l = l.replace(sl[2], new_versions[sl[1]])
222 open(reqfile,
"w").writelines(out)
226 new_lines.append(
"<!-- ====================================================================== -->")
227 data = {
"vers": new_version,
"date": time.strftime(
"%Y-%m-%d") }
228 new_lines.append(
'<h2><a name="%(vers)s">Gaudi %(vers)s</a> (%(date)s)</h2>' % data)
229 data = {
"vers": LCGCMTVers }
230 new_lines.append(
'<h3>Externals version: <a href="http://lcgsoft.cern.ch/index.py?page=cfg_overview&cfg=%(vers)s">LCGCMT_%(vers)s</a></h3>' % data)
231 new_lines.append(
"<h3>General Changes</h3>")
232 new_lines.append(
'<ul>\n<li><br/>\n (<span class="author"></span>)</li>\n</ul>')
233 new_lines.append(
"<h3>Packages Changes</h3>")
234 new_lines.append(
"<ul>")
235 for pkg
in all_packages_names:
236 if release_notes[pkg]:
237 new_lines.append(
'<li>%s (%s):\n<ul>\n<li><br/>\n (<span class="author"></span>)</li>\n</ul>\n<pre>'%(pkg,new_versions[pkg]))
238 new_lines.append(release_notes[pkg].replace(
'&',
'&') \
239 .replace(
'<',
'<') \
240 .replace(
'>',
'>') +
"</pre>")
241 new_lines.append(
"</li>")
242 new_lines.append(
"</ul>")
244 global_rel_notes = os.path.join(
"..",
"doc",
"release.notes.html")
246 separator = re.compile(
"<!-- =+ -->")
248 for l
in open(global_rel_notes):
249 if not block_added
and separator.match(l.strip()):
250 out.append(
"\n".join(new_lines) +
"\n")
253 open(global_rel_notes,
"w").writelines(out)
256 global_cmakelists = os.path.join(
"..",
"..",
"CMakeLists.txt")
258 for l
in open(global_cmakelists):
259 if l.strip().startswith(
'gaudi_project'):
260 l =
'gaudi_project(Gaudi %s)\n' % new_version
262 open(global_cmakelists,
"w").writelines(out)