From: Nicki Křížek Date: Tue, 30 Dec 2025 12:45:50 +0000 (+0100) Subject: Bump the minimum required python version to 3.10 X-Git-Tag: v9.18.45~8^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b56b9beea38e30e7485fe0210660aa64cf4f77b;p=thirdparty%2Fbind9.git Bump the minimum required python version to 3.10 Drop support of EoL python versions for running system tests. The maintenance cost of supporting end of life ecosystem, especially Python 3.6 on EL8 and the related outdated packages (pytest, dnspython, ...), has become unreasonable. (cherry picked from commit ac8e2905b89d69318ef5351dbffcedcc2f8bdcf9) --- diff --git a/bin/tests/system/conftest.py b/bin/tests/system/conftest.py index d0aaa2b6340..fe3e406367b 100644 --- a/bin/tests/system/conftest.py +++ b/bin/tests/system/conftest.py @@ -19,6 +19,7 @@ import subprocess import tempfile import time from typing import Dict, List, Optional +import sys import pytest @@ -30,6 +31,8 @@ import isctest # Silence warnings caused by passing a pytest fixture to another fixture. # pylint: disable=redefined-outer-name +if sys.version_info[1] < 10: + raise RuntimeError("Python 3.10 or newer is required to run system tests.") # ----------------------- Globals definition ----------------------------- @@ -409,12 +412,6 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): assert all(res.outcome == "passed" for res in test_results.values()) return "passed" - def unlink(path): - try: - path.unlink() # missing_ok=True isn't available on Python 3.6 - except FileNotFoundError: - pass - def check_artifacts(source_dir, run_dir): def check_artifacts_recursive(dcmp): def artifact_expected(path, expected): @@ -459,7 +456,7 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): # Create a convenience symlink with a stable and predictable name module_name = SYMLINK_REPLACEMENT_RE.sub(r"\1", str(request.node.path)) symlink_dst = system_test_root / module_name - unlink(symlink_dst) + symlink_dst.unlink(missing_ok=True) symlink_dst.symlink_to(os.path.relpath(testdir, start=system_test_root)) isctest.log.init_module_logger(system_test_name, testdir) @@ -508,7 +505,7 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): isctest.log.deinit_module_logger() if not keep: shutil.rmtree(testdir) - unlink(symlink_dst) + symlink_dst.unlink(missing_ok=True) @pytest.fixture(scope="module") diff --git a/configure.ac b/configure.ac index 125e31d26bf..300035968b0 100644 --- a/configure.ac +++ b/configure.ac @@ -240,7 +240,7 @@ AM_CONDITIONAL([HAVE_PERL], [test -n "$PERL"]) # # Python is optional, it is used only by some of the system test scripts. # -AM_PATH_PYTHON([3.6], [], [:]) +AM_PATH_PYTHON([3.10], [], [:]) AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"]) AC_PATH_PROGS([PYTEST], [pytest-3 py.test-3 pytest py.test pytest-pypy], [])