119 for l
in open(
'toolchain.cmake'):
120 m = re.match(
r'^\s*set\(\s*heptools_version\s+(\S*)\s*\)', l)
122 HEPToolsVers = m.group(1)
123 print "Using HEPTools", HEPToolsVers
126 print "Cannot find HEPTools version"
131 for dirpath, dirnames, filenames
in os.walk(os.curdir):
132 if 'CMakeLists.txt' in filenames
and dirpath != os.curdir:
136 dirnames[:] = [dirname
for dirname
in dirnames
137 if not dirname.startswith(
'build.')
and
141 special_subdirs = [
"Gaudi",
"GaudiExamples",
"GaudiSys",
"GaudiRelease"]
144 top_cml =
' '.join(l.strip().split(
'#', 1)[0]
145 for l
in open(
'CMakeLists.txt').readlines())
146 old_version = re.search(
r'gaudi_project\(\s*\S+\s+(\S+)', top_cml).group(1)
147 new_version = raw_input(
"The old version of the project is %s, which is the new one? " % old_version)
153 for pkgdir
in all_subdirs():
154 relnotefile = os.path.join(pkgdir,
'doc',
'release.notes')
155 cmlfile = os.path.join(pkgdir,
'CMakeLists.txt')
156 reqfile = os.path.join(pkgdir,
'cmt',
'requirements')
158 pkg = os.path.basename(pkgdir)
161 if os.path.exists(relnotefile):
164 release_notes[pkg] =
''
166 if pkg
in special_subdirs:
167 new_versions[pkg] = new_version
169 if release_notes[pkg]:
170 msg = (
'\nThe old version of %s is %s, these are the changes:\n'
172 'Which version you want (old is %s)? ') % \
173 (pkg, old_versions[pkg], release_notes[pkg],
175 new_versions[pkg] = raw_input(msg)
177 new_versions[pkg] = old_versions[pkg]
179 if new_versions[pkg] != old_versions[pkg]:
181 if os.path.exists(relnotefile):
185 reqfile = os.path.join(
'GaudiRelease',
'cmt',
'requirements')
187 for l
in open(reqfile):
188 sl = l.strip().split()
189 if sl
and sl[0] ==
"use":
190 if sl[1]
in new_versions:
191 if sl[2] != new_versions[sl[1]]:
192 l = l.replace(sl[2], new_versions[sl[1]])
194 open(reqfile,
"w").writelines(out)
196 config = ConfigParser.ConfigParser()
197 config.optionxform = str
198 if os.path.exists(
'project.info'):
199 config.read(
'project.info')
200 if not config.has_section(
'Packages'):
201 config.add_section(
'Packages')
202 for pack_vers
in sorted(new_versions.items()):
203 config.set(
'Packages', *pack_vers)
204 config.write(open(
'project.info',
'wb'))
206 if new_version != old_version:
209 new_lines.append(
"<!-- ====================================================================== -->")
210 data = {
"vers": new_version,
"date": time.strftime(
"%Y-%m-%d") }
211 new_lines.append(
'<h2><a name="%(vers)s">Gaudi %(vers)s</a> (%(date)s)</h2>' % data)
212 data = {
"vers": HEPToolsVers }
213 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)
214 new_lines.append(
"<h3>General Changes</h3>")
215 new_lines.append(
'<ul>\n<li><br/>\n (<span class="author"></span>)</li>\n</ul>')
216 new_lines.append(
"<h3>Packages Changes</h3>")
217 new_lines.append(
"<ul>")
218 for pkg
in release_notes:
219 if release_notes[pkg]:
220 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]))
221 new_lines.append(release_notes[pkg].replace(
'&',
'&') \
222 .replace(
'<',
'<') \
223 .replace(
'>',
'>') +
"</pre>")
224 new_lines.append(
"</li>")
225 new_lines.append(
"</ul>")
227 global_rel_notes = os.path.join(
"GaudiRelease",
"doc",
"release.notes.html")
229 separator = re.compile(
"<!-- =+ -->")
231 for l
in open(global_rel_notes):
232 if not block_added
and separator.match(l.strip()):
233 out.append(
"\n".join(new_lines) +
"\n")
236 open(global_rel_notes,
"w").writelines(out)
240 for l
in open(
'CMakeLists.txt'):
241 if l.strip().startswith(
'gaudi_project'):
242 l =
'gaudi_project(Gaudi %s)\n' % new_version
244 open(
'CMakeLists.txt',
"w").writelines(out)