From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- comm/python/thirdroc/rnp_generated.py | 116 ++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 comm/python/thirdroc/rnp_generated.py (limited to 'comm/python/thirdroc/rnp_generated.py') diff --git a/comm/python/thirdroc/rnp_generated.py b/comm/python/thirdroc/rnp_generated.py new file mode 100644 index 0000000000..9c3390e4b9 --- /dev/null +++ b/comm/python/thirdroc/rnp_generated.py @@ -0,0 +1,116 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import os +import sys + +from packaging.version import parse + +from mozbuild.preprocessor import Preprocessor +from mozbuild.util import FileAvoidWrite, ensureParentDir + +from thirdroc.cmake_define_files import define_type, process_cmake_define_file + + +def rnp_version(version_file, thunderbird_version): + """ + Update RNP source files: generate version.h + :param string version_file: + """ + with open(version_file) as fp: + version_str = fp.readline(512).strip() + + version = parse(version_str) + version_major = version.major + version_minor = version.minor + version_patch = version.micro + + version_full = f"{version_str}.MZLA.{thunderbird_version}" + + defines = dict( + RNP_VERSION_MAJOR=version_major, + RNP_VERSION_MINOR=version_minor, + RNP_VERSION_PATCH=version_patch, + RNP_VERSION=version_str, + RNP_VERSION_FULL=version_full, + # Follow upstream's example when commit info is unavailable + RNP_VERSION_COMMIT_TIMESTAMP="0", + PACKAGE_STRING=f'"rnp {version_full}"', + ) + + return defines + + +def rnp_preprocess(tmpl, dest, defines): + """ + Generic preprocessing + :param BinaryIO tmpl: open filehandle (read) input + :param BinaryIO dest: open filehandle (write) output + :param dict defines: result of get_defines() + :return boolean: + """ + pp = Preprocessor() + pp.setMarker("%") + pp.addDefines(defines) + pp.do_filter("substitution") + pp.out = dest + pp.do_include(tmpl, True) + return True + + +def generate_version_h(output, template, defines): + """ + Generate version.h for rnp from a the template file, write the + result to destination. + :param string template: path to template file (version.h.in) + :param string destination: path to write generated file (version.h) + :param dict defines: result of get_defines() + """ + with open(template) as tmpl: + rnp_preprocess(tmpl, output, defines) + + +def main(output, *argv): + parser = argparse.ArgumentParser(description="Preprocess RNP files.") + + parser.add_argument("version_h_in", help="version.h.in") + parser.add_argument("config_h_in", help="config.h.in") + parser.add_argument("-m", type=str, dest="thunderbird_version", help="Thunderbird version") + parser.add_argument("-V", type=str, dest="version_file", help="Path to RNP version.txt") + parser.add_argument( + "-D", + type=define_type, + action="append", + dest="extra_defines", + default=[], + help="Additional defines not set at configure time.", + ) + + args = parser.parse_args(argv) + + defines = rnp_version(args.version_file, args.thunderbird_version) + + # "output" is an open filedescriptor for version.h + generate_version_h(output, args.version_h_in, defines) + + # We must create the remaining output files ourselves. This requires + # creating the output directory directly if it doesn't already exist. + ensureParentDir(output.name) + parent_dir = os.path.dirname(output.name) + + # For config.h, include defines set for version.h and extra -D args + config_h_defines = dict(args.extra_defines) + config_h_defines.update(defines) + + with FileAvoidWrite(os.path.join(parent_dir, "config.h")) as fd: + process_cmake_define_file(fd, args.config_h_in, config_h_defines) + + +if __name__ == "__main__": + sys.exit(main(*sys.argv)) -- cgit v1.2.3