| #!/usr/bin/python |
| |
| # This script is used to bump version of bjam. It takes a single argument, e.g |
| # |
| # ./bump_version.py 3.1.9 |
| # |
| # and updates all necessary files. For the time being, it's assumes presense |
| # of 'perl' executable and Debian-specific 'dch' executable. |
| # |
| |
| |
| import os |
| import os.path |
| import re |
| import string |
| import sys |
| |
| srcdir = os.path.abspath(os.path.dirname(__file__ )) |
| docdir = os.path.abspath(os.path.join(srcdir,"..","doc")) |
| |
| def edit(file,replacements): |
| print " '%s'..." %(file) |
| text = open(file,'r').read() |
| while len(replacements) > 0: |
| #~ print " '%s' ==> '%s'" % (replacements[0],replacements[1]) |
| text = re.compile(replacements[0],re.M).subn(replacements[1],text)[0] |
| replacements = replacements[2:] |
| #~ print text |
| open(file,'w').write(text) |
| |
| def make_edits(version): |
| edit(os.path.join(srcdir,"boost-jam.spec"), [ |
| '^Version:.*$','Version: %s' % string.join(version, "."), |
| ]) |
| |
| edit(os.path.join(srcdir,"build.jam"), [ |
| '^_VERSION_ = .* ;$','_VERSION_ = %s %s %s ;' % (version[0], version[1], version[2]), |
| ]) |
| |
| edit(os.path.join(docdir,"bjam.qbk"), [ |
| '\[version.*\]','[version: %s]' % string.join(version, '.'), |
| '\[def :version:.*\]','[def :version: %s]' % string.join(version, '.'), |
| ]) |
| |
| edit(os.path.join(srcdir,"patchlevel.h"), [ |
| '^#define VERSION_MAJOR .*$', |
| '#define VERSION_MAJOR %s' % (version[0]), |
| '^#define VERSION_MINOR .*$', |
| '#define VERSION_MINOR %s' % (version[1]), |
| '^#define VERSION_PATCH .*$', |
| '#define VERSION_PATCH %s' % (version[2]), |
| '^#define VERSION_MAJOR_SYM .*$', |
| '#define VERSION_MAJOR_SYM "0%s"' % (version[0]), |
| '^#define VERSION_MINOR_SYM .*$', |
| '#define VERSION_MINOR_SYM "%s"' % (version[1]), |
| '^#define VERSION_PATCH_SYM .*$', |
| '#define VERSION_PATCH_SYM "%s"' % (version[2]), |
| '^#define VERSION .*$', |
| '#define VERSION "%s"' % string.join(version, '.'), |
| '^#define JAMVERSYM .*$', |
| '#define JAMVERSYM "JAMVERSION=%s.%s"' % (version[0],version[1]), |
| ]) |
| |
| def main(): |
| |
| if len(sys.argv) < 2: |
| print "Expect new version as argument" |
| sys.exit(1) |
| |
| version = string.split(sys.argv[1], ".") |
| print "Setting version to", version |
| make_edits(version) |
| |
| if __name__ == '__main__': |
| main() |
| |
| #~ Copyright 2006 Rene Rivera. |
| #~ Copyright 2005-2006 Vladimir Prus. |
| #~ Distributed under the Boost Software License, Version 1.0. |
| #~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) |