124 def main(args = None):
135 logging.basicConfig(stream = sys.stdout,
136 format =
'%(levelname) 7s: %(message)s',
139 if options.mtn_db ==
'':
140 logging.error(
'No monotone db set (use --mtn-db)')
143 if not os.access(options.mtn_db, os.R_OK):
144 logging.error(
'Monotone db %s not found' % (options.mtn_db))
148 logging.error(
'Usage: %s version' % (sys.argv[0]))
154 [
'automate',
'select',
't:' + version])
157 logging.error(
'No revision for %s found' % (version))
160 output_basename = os.path.join(options.output_dir,
'Botan-' + version)
162 output_tgz = output_basename +
'.tgz'
163 output_tbz = output_basename +
'.tbz'
165 logging.info(
'Found revision id %s' % (rev_id))
167 if os.access(output_basename, os.X_OK):
168 shutil.rmtree(output_basename)
171 [
'checkout',
'-r', rev_id, output_basename])
173 shutil.rmtree(os.path.join(output_basename,
'_MTN'))
176 version_file = os.path.join(output_basename,
'botan_version.py')
178 if os.access(version_file, os.R_OK):
181 contents = open(version_file).readlines()
183 def content_rewriter():
184 for line
in contents:
185 if line ==
'release_vc_rev = None\n':
186 yield 'release_vc_rev = \'mtn:%s\'\n' % (rev_id)
187 elif line ==
'release_datestamp = 0\n':
188 yield 'release_datestamp = %d\n' % (
datestamp(options.mtn_db, rev_id))
192 open(version_file,
'w').write(
''.join(list(content_rewriter())))
194 logging.error(
'Cannot find %s' % (version_file))
198 os.makedirs(options.output_dir)
200 if e.errno != errno.EEXIST:
201 logging.error(
'Creating dir %s failed %s' % (options.output_dir, e))
206 archive = tarfile.open(output_tgz,
'w:gz')
207 archive.add(output_basename)
212 archive = tarfile.open(output_tbz,
'w:bz2')
213 archive.add(output_basename)
216 if options.pgp_key_id !=
'':
217 gpg_sign(options.pgp_key_id, [output_tbz, output_tgz])
219 shutil.rmtree(output_basename)