forked from linuxmint/cjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
verbump.py
47 lines (40 loc) · 1.44 KB
/
verbump.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python2
# Automakes a release preparation for a post-release project
# * Create a git tag
# * Bump version in configure.ac and commit it
import re
import os
import sys
import subprocess
micro_version_re = re.compile('m4_define.*pkg_micro_version, ([0-9]+)')
micro_version_replace = 'm4_define(pkg_micro_version, %d)\n'
def _extract_config_log_variable(name):
f = open('config.log')
keystart = name + '=\''
for line in f:
if line.startswith(keystart):
return line[len(keystart):-2]
f.close()
fatal("Failed to find '%s' in config.status" % (name, ))
if not os.path.isfile('config.log'):
fatal("Couldn't find config.log; did you run configure?")
package = _extract_config_log_variable('PACKAGE_TARNAME')
version = _extract_config_log_variable('VERSION')
configure_path=os.path.join(os.environ['top_srcdir'], 'configure.ac')
f = open(configure_path)
newf = open(configure_path + '.tmp', 'w')
for line in f:
m = micro_version_re.match(line)
if not m:
newf.write(line)
continue
v = int(m.group(1))
newv = v+1
print "Will update micro version from %s to %s" % (v, newv)
newf.write(micro_version_replace % (newv, ))
newf.close()
os.rename(configure_path + '.tmp', configure_path)
print "Successfully wrote new 'configure.ac' with post-release version bump"
args=['git', 'commit', '-m', "configure: Post-release version bump", configure_path]
print "Running: %r" % (args, )
subprocess.check_call(args)