From daee50c522f3b8da1c70281863ed08970bf578f2 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Thu, 19 Dec 2024 12:17:03 +0100 Subject: [PATCH 1/3] Move files out of Mbed TLS The following files are moved to the framework repo (deleted here): scripts/min_requirements.py Signed-off-by: Valerio Setti --- scripts/min_requirements.py | 129 ------------------------------------ 1 file changed, 129 deletions(-) delete mode 100755 scripts/min_requirements.py diff --git a/scripts/min_requirements.py b/scripts/min_requirements.py deleted file mode 100755 index b36f90662246..000000000000 --- a/scripts/min_requirements.py +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env python3 -"""Install all the required Python packages, with the minimum Python version. -""" - -# Copyright The Mbed TLS Contributors -# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later - -import argparse -import os -import re -import subprocess -import sys -import tempfile -import typing - -from typing import List, Optional - -import framework_scripts_path # pylint: disable=unused-import -from mbedtls_framework import typing_util - -def pylint_doesn_t_notice_that_certain_types_are_used_in_annotations( - _list: List[typing.Any], -) -> None: - pass - - -class Requirements: - """Collect and massage Python requirements.""" - - def __init__(self) -> None: - self.requirements = [] #type: List[str] - - def adjust_requirement(self, req: str) -> str: - """Adjust a requirement to the minimum specified version.""" - # allow inheritance #pylint: disable=no-self-use - # If a requirement specifies a minimum version, impose that version. - split_req = req.split(';', 1) - split_req[0] = re.sub(r'>=|~=', r'==', split_req[0]) - return ';'.join(split_req) - - def add_file(self, filename: str) -> None: - """Add requirements from the specified file. - - This method supports a subset of pip's requirement file syntax: - * One requirement specifier per line, which is passed to - `adjust_requirement`. - * Comments (``#`` at the beginning of the line or after whitespace). - * ``-r FILENAME`` to include another file. - """ - for line in open(filename): - line = line.strip() - line = re.sub(r'(\A|\s+)#.*', r'', line) - if not line: - continue - m = re.match(r'-r\s+', line) - if m: - nested_file = os.path.join(os.path.dirname(filename), - line[m.end(0):]) - self.add_file(nested_file) - continue - self.requirements.append(self.adjust_requirement(line)) - - def write(self, out: typing_util.Writable) -> None: - """List the gathered requirements.""" - for req in self.requirements: - out.write(req + '\n') - - def install( - self, - pip_general_options: Optional[List[str]] = None, - pip_install_options: Optional[List[str]] = None, - ) -> None: - """Call pip to install the requirements.""" - if pip_general_options is None: - pip_general_options = [] - if pip_install_options is None: - pip_install_options = [] - with tempfile.TemporaryDirectory() as temp_dir: - # This is more complicated than it needs to be for the sake - # of Windows. Use a temporary file rather than the command line - # to avoid quoting issues. Use a temporary directory rather - # than NamedTemporaryFile because with a NamedTemporaryFile on - # Windows, the subprocess can't open the file because this process - # has an exclusive lock on it. - req_file_name = os.path.join(temp_dir, 'requirements.txt') - with open(req_file_name, 'w') as req_file: - self.write(req_file) - subprocess.check_call([sys.executable, '-m', 'pip'] + - pip_general_options + - ['install'] + pip_install_options + - ['-r', req_file_name]) - -DEFAULT_REQUIREMENTS_FILE = 'ci.requirements.txt' - -def main() -> None: - """Command line entry point.""" - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--no-act', '-n', - action='store_true', - help="Don't act, just print what will be done") - parser.add_argument('--pip-install-option', - action='append', dest='pip_install_options', - help="Pass this option to pip install") - parser.add_argument('--pip-option', - action='append', dest='pip_general_options', - help="Pass this general option to pip") - parser.add_argument('--user', - action='append_const', dest='pip_install_options', - const='--user', - help="Install to the Python user install directory" - " (short for --pip-install-option --user)") - parser.add_argument('files', nargs='*', metavar='FILE', - help="Requirement files" - " (default: {} in the script's directory)" \ - .format(DEFAULT_REQUIREMENTS_FILE)) - options = parser.parse_args() - if not options.files: - options.files = [os.path.join(os.path.dirname(__file__), - DEFAULT_REQUIREMENTS_FILE)] - reqs = Requirements() - for filename in options.files: - reqs.add_file(filename) - reqs.write(sys.stdout) - if not options.no_act: - reqs.install(pip_general_options=options.pip_general_options, - pip_install_options=options.pip_install_options) - -if __name__ == '__main__': - main() From 3d82c25047d9d17eb501d7f49c6a903f9f12a572 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Thu, 19 Dec 2024 16:42:00 +0100 Subject: [PATCH 2/3] scripts: add new min_requirements.py script This call into the "old" script that has been moved to the framework repository. The *.requirements.txt files are kept on this repo though. Signed-off-by: Valerio Setti --- scripts/min_requirements.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 scripts/min_requirements.py diff --git a/scripts/min_requirements.py b/scripts/min_requirements.py new file mode 100755 index 000000000000..a67b761a3289 --- /dev/null +++ b/scripts/min_requirements.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +"""Install all the required Python packages, with the minimum Python version. +""" + +# Copyright The Mbed TLS Contributors +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +import os +import framework_scripts_path # pylint: disable=unused-import +from mbedtls_framework import min_requirements + +# The default file is located in the same folder as this script. +DEFAULT_REQUIREMENTS_FILE = 'ci.requirements.txt' + +min_requirements.main(os.path.join(os.path.dirname(__file__), + DEFAULT_REQUIREMENTS_FILE)) From f8aae43282bbd35a9eadd798518016f1d6cf7fed Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Thu, 19 Dec 2024 16:44:57 +0100 Subject: [PATCH 3/3] framework: update reference Signed-off-by: Valerio Setti --- framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework b/framework index fe852d3b9a3b..71171b77f503 160000 --- a/framework +++ b/framework @@ -1 +1 @@ -Subproject commit fe852d3b9a3b08171c99176ffebfe8a8475d546d +Subproject commit 71171b77f50302206cc87b93bc8bf76f16b6e1c4