128 m = re.search(
"use\s*LCGCMT\s*LCGCMT_(\S*)",open(os.path.join(
"..",
"..",
"cmt",
"project.cmt")).read())
130 LCGCMTVers = m.group(1)
131 print "Using LCGCMT", LCGCMTVers
133 print "Cannot find LCGCMT version"
138 all_packages_tmp = []
139 exec(os.popen(
r"""cmt broadcast 'echo "all_packages_tmp.append((\"<package>\"", \"$PWD\""))"'""",
"r").read())
140 all_packages_names = []
142 for k,v
in all_packages_tmp:
143 all_packages_names.append(k)
147 special_packages = [
"Gaudi",
"GaudiExamples",
"GaudiSys",
"GaudiRelease"]
151 new_version = raw_input(
"The old version of the project is %s, which is the new one? " % old_version)
157 for pkg
in all_packages_names:
158 reqfile = os.path.join(all_packages[pkg],
"requirements")
159 relnotefile = os.path.join(all_packages[pkg],
"..",
"doc",
"release.notes")
161 if os.path.exists(relnotefile):
164 release_notes[pkg] =
""
165 if pkg
in special_packages:
166 new_versions[pkg] = new_version
168 if release_notes[pkg]:
169 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]))
171 new_versions[pkg] = old_versions[pkg]
173 if new_versions[pkg] != old_versions[pkg]:
175 if os.path.exists(relnotefile):
179 reqfile = os.path.join(all_packages[
"GaudiRelease"],
"requirements")
181 for l
in open(reqfile):
182 sl = l.strip().split()
183 if sl
and sl[0] ==
"use":
184 if sl[1]
in new_versions:
185 if sl[2] != new_versions[sl[1]]:
186 l = l.replace(sl[2], new_versions[sl[1]])
188 open(reqfile,
"w").writelines(out)
192 new_lines.append(
"<!-- ====================================================================== -->")
193 data = {
"vers": new_version,
"date": time.strftime(
"%Y-%m-%d") }
194 new_lines.append(
'<h2><a name="%(vers)s">Gaudi %(vers)s</a> (%(date)s)</h2>' % data)
195 data = {
"vers": LCGCMTVers }
196 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)
197 new_lines.append(
"<h3>General Changes</h3>")
198 new_lines.append(
'<ul>\n<li><br/>\n (<span class="author"></span>)</li>\n</ul>')
199 new_lines.append(
"<h3>Packages Changes</h3>")
200 new_lines.append(
"<ul>")
201 for pkg
in all_packages_names:
202 if release_notes[pkg]:
203 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]))
204 new_lines.append(release_notes[pkg].replace(
'&',
'&') \
205 .replace(
'<',
'<') \
206 .replace(
'>',
'>') +
"</pre>")
207 new_lines.append(
"</li>")
208 new_lines.append(
"</ul>")
210 global_rel_notes = os.path.join(
"..",
"doc",
"release.notes.html")
212 separator = re.compile(
"<!-- =+ -->")
214 for l
in open(global_rel_notes):
215 if not block_added
and separator.match(l.strip()):
216 out.append(
"\n".join(new_lines) +
"\n")
219 open(global_rel_notes,
"w").writelines(out)
222 global_cmakelists = os.path.join(
"..",
"..",
"CMakeLists.txt")
224 for l
in open(global_cmakelists):
225 if l.strip().startswith(
'gaudi_project'):
226 l =
'gaudi_project(Gaudi %s)\n' % new_version
228 open(global_cmakelists,
"w").writelines(out)