| #!/usr/bin/python |
| # vim: encoding=utf-8 |
| #expand *.in files |
| #this script is only intended for building from git, not for building from the released tarball, which already includes all necessary files |
| import os |
| import sys |
| import re |
| import string |
| import subprocess |
| import optparse |
| from pc_base import BasePCItems |
| from replace import replace_multi |
| |
| def get_version_items(srcroot): |
| ver = {} |
| RE_VERSION_LINE_START = re.compile(r'^AC_INIT\(\[(.+)\], *\n') |
| RE_VERSION_LINE_BODY = re.compile(r'^ \[(.+)\], *\n') |
| RE_VERSION_LINE_END = re.compile(r'^ \[(.+)\]\) *\n') |
| |
| # Read from the AC_INIT lines to get the version/name/URLs info |
| with open(os.path.join(srcroot, 'configure.ac'), 'r') as ac: |
| for i in ac: |
| mo_init = RE_VERSION_LINE_START.search(i) |
| mo_pkg_info = RE_VERSION_LINE_BODY.search(i) |
| mo_pkg_url = RE_VERSION_LINE_END.search(i) |
| if mo_init: |
| ver['@PACKAGE_NAME@'] = mo_init.group(1) |
| if mo_pkg_info: |
| if mo_pkg_info.group(1).startswith('http'): |
| ver['@PACKAGE_BUGREPORT@'] = mo_pkg_info.group(1) |
| elif mo_pkg_info.group(1)[0].isdigit(): |
| ver['@PACKAGE_VERSION@'] = mo_pkg_info.group(1) |
| else: |
| ver['@PACKAGE_TARNAME@'] = mo_pkg_info.group(1) |
| if mo_pkg_url: |
| ver['@PACKAGE_URL@'] = mo_pkg_url.group(1) |
| |
| ver['@HB_VERSION@'] = ver['@PACKAGE_VERSION@'] |
| |
| pkg_ver_parts = ver['@PACKAGE_VERSION@'].split('.') |
| ver['@HB_VERSION_MAJOR@'] = pkg_ver_parts[0] |
| ver['@HB_VERSION_MINOR@'] = pkg_ver_parts[1] |
| ver['@HB_VERSION_MICRO@'] = pkg_ver_parts[2] |
| return ver |
| |
| def main(argv): |
| pc = BasePCItems() |
| srcroot = pc.top_srcdir |
| srcdir = pc.srcdir |
| ver = get_version_items(srcroot) |
| |
| replace_multi(os.path.join(srcdir, 'config.h.win32.in'), |
| os.path.join(srcdir, 'config.h.win32'), |
| ver) |
| |
| replace_multi(os.path.join(srcroot, 'src', 'hb-version.h.in'), |
| os.path.join(srcroot, 'src', 'hb-version.h'), |
| ver) |
| return 0 |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv)) |