134 logging.basicConfig(stream = sys.stdout,
135 format =
'%(levelname) 7s: %(message)s',
138 if options.mtn_db ==
'':
139 logging.error(
'No monotone db set (use --mtn-db)')
142 if not os.access(options.mtn_db, os.R_OK):
143 logging.error(
'Monotone db %s not found' % (options.mtn_db))
147 logging.error(
'Usage: %s version' % (sys.argv[0]))
153 [
'automate',
'select',
't:' + version])
156 logging.error(
'No revision for %s found' % (version))
159 output_basename = os.path.join(options.output_dir,
'Botan-' + version)
161 output_tgz = output_basename +
'.tgz'
162 output_tbz = output_basename +
'.tbz'
164 logging.info(
'Found revision id %s' % (rev_id))
166 if os.access(output_basename, os.X_OK):
167 shutil.rmtree(output_basename)
170 [
'checkout',
'-r', rev_id, output_basename])
172 shutil.rmtree(os.path.join(output_basename,
'_MTN'))
175 version_file = os.path.join(output_basename,
'botan_version.py')
177 if os.access(version_file, os.R_OK):
180 contents = open(version_file).readlines()
182 def content_rewriter():
183 for line
in contents:
184 if line ==
'release_vc_rev = None\n':
185 yield 'release_vc_rev = \'mtn:%s\'\n' % (rev_id)
186 elif line ==
'release_datestamp = 0\n':
187 yield 'release_datestamp = %d\n' % (
datestamp(options.mtn_db, rev_id))
191 open(version_file,
'w').write(
''.join(list(content_rewriter())))
193 logging.error(
'Cannot find %s' % (version_file))
197 os.makedirs(options.output_dir)
199 if e.errno != errno.EEXIST:
200 logging.error(
'Creating dir %s failed %s' % (options.output_dir, e))
205 archive = tarfile.open(output_tgz,
'w:gz')
206 archive.add(output_basename)
211 archive = tarfile.open(output_tbz,
'w:bz2')
212 archive.add(output_basename)
215 if options.pgp_key_id !=
'':
216 gpg_sign(options.pgp_key_id, [output_tbz, output_tgz])
218 shutil.rmtree(output_basename)
def run_monotone(db, args)
def gpg_sign(keyid, files)
def datestamp(db, rev_id)
def remove_file_if_exists(fspath)