From 818cc5aef331bbea8e3f51fde0d16930d3c7d61b Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Sun, 11 Oct 2020 03:30:45 +0000 Subject: freetype 2.10.3 git-svn-id: svn://tug.org/texlive/trunk@56628 c570f23f-e606-0410-a88d-b1316a301751 --- .../builds/meson/extract_freetype_version.py | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py (limited to 'Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py') diff --git a/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py b/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py new file mode 100644 index 00000000000..15e87dbccd0 --- /dev/null +++ b/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python +"""Extract the FreeType version numbers from ``. + +This script parses the header to extract the version number defined there. +By default, the full dotted version number is printed, but `--major`, +`--minor` or `--patch` can be used to only print one of these values +instead. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# #define FREETYPE_MAJOR 2 +# #define FREETYPE_MINOR 10 +# #define FREETYPE_PATCH 2 +# ... + +RE_MAJOR = re.compile(r"^ \#define \s+ FREETYPE_MAJOR \s+ (.*) $", re.X) +RE_MINOR = re.compile(r"^ \#define \s+ FREETYPE_MINOR \s+ (.*) $", re.X) +RE_PATCH = re.compile(r"^ \#define \s+ FREETYPE_PATCH \s+ (.*) $", re.X) + + +def parse_freetype_header(header): + major = None + minor = None + patch = None + + for line in header.splitlines(): + line = line.rstrip() + m = RE_MAJOR.match(line) + if m: + assert major == None, "FREETYPE_MAJOR appears more than once!" + major = m.group(1) + continue + + m = RE_MINOR.match(line) + if m: + assert minor == None, "FREETYPE_MINOR appears more than once!" + minor = m.group(1) + continue + + m = RE_PATCH.match(line) + if m: + assert patch == None, "FREETYPE_PATCH appears more than once!" + patch = m.group(1) + continue + + assert ( + major and minor and patch + ), "This header is missing one of FREETYPE_MAJOR, FREETYPE_MINOR or FREETYPE_PATCH!" + + return (major, minor, patch) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + group = parser.add_mutually_exclusive_group() + group.add_argument( + "--major", + action="store_true", + help="Only print the major version number.", + ) + group.add_argument( + "--minor", + action="store_true", + help="Only print the minor version number.", + ) + group.add_argument( + "--patch", + action="store_true", + help="Only print the patch version number.", + ) + + parser.add_argument( + "input", + metavar="FREETYPE_H", + help="The input freetype.h header to parse.", + ) + + args = parser.parse_args() + with open(args.input) as f: + header = f.read() + + version = parse_freetype_header(header) + + if args.major: + print(version[0]) + elif args.minor: + print(version[1]) + elif args.patch: + print(version[2]) + else: + print("%s.%s.%s" % version) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) -- cgit v1.2.3