From 4d25e3d54f7de316c4f1d1575d2cf1ffa46b632c Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Wed, 26 Apr 2023 14:01:56 -0700 Subject: [PATCH] Set the minimum setuptools to 45.2.0 (#80649) Also update the package-data sanity test to use the minimum setuptools version. --- .../fragments/ansible-test-minimum-setuptools.yml | 2 ++ hacking/update-sanity-requirements.py | 14 +++++++++++++- pyproject.toml | 2 +- setup.cfg | 2 +- test/sanity/code-smell/package-data.py | 3 ++- .../sanity/code-smell/package-data.requirements.in | 1 + .../code-smell/package-data.requirements.txt | 1 + 7 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/ansible-test-minimum-setuptools.yml diff --git a/changelogs/fragments/ansible-test-minimum-setuptools.yml b/changelogs/fragments/ansible-test-minimum-setuptools.yml new file mode 100644 index 00000000000..9c7fbeebc77 --- /dev/null +++ b/changelogs/fragments/ansible-test-minimum-setuptools.yml @@ -0,0 +1,2 @@ +minor_changes: + - The minimum required ``setuptools`` version is now 45.2.0, as it is the oldest version to support Python 3.10. diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py index 88569af17ad..63eaec786a1 100755 --- a/hacking/update-sanity-requirements.py +++ b/hacking/update-sanity-requirements.py @@ -45,7 +45,19 @@ class SanityTest: subprocess.run(pip + ['install', 'wheel'], env=env, check=True) # make bdist_wheel available during pip install subprocess.run(pip + ['install', '-r', self.source_path], env=env, check=True) - pip_freeze = subprocess.run(pip + ['freeze'], env=env, check=True, capture_output=True, text=True) + keep_setuptools = any(line.startswith('setuptools ') for line in self.source_path.read_text().splitlines()) + + exclude_packages = ['pip', 'distribute', 'wheel'] + + if not keep_setuptools: + exclude_packages.append('setuptools') + + freeze_options = ['--all'] + + for exclude_package in exclude_packages: + freeze_options.extend(('--exclude', exclude_package)) + + pip_freeze = subprocess.run(pip + ['freeze'] + freeze_options, env=env, check=True, capture_output=True, text=True) requirements = f'# edit "{self.source_path.name}" and generate with: {SELF} --test {self.name}\n{pip_freeze.stdout}' diff --git a/pyproject.toml b/pyproject.toml index 482f222190e..8a28c0b2cad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,4 @@ [build-system] -requires = ["setuptools >= 39.2.0"] +requires = ["setuptools >= 45.2.0"] backend-path = ["packaging"] # requires 'Pip>=20' or 'pep517>=0.6.0' build-backend = "pep517_backend.hooks" # wraps `setuptools.build_meta` diff --git a/setup.cfg b/setup.cfg index 04e199652a3..afc64dfafa4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ -# Minimum target setuptools 39.2.0 +# Minimum target setuptools 45.2.0 [metadata] name = ansible-core diff --git a/test/sanity/code-smell/package-data.py b/test/sanity/code-smell/package-data.py index 97214efdcda..f768a7a13d6 100644 --- a/test/sanity/code-smell/package-data.py +++ b/test/sanity/code-smell/package-data.py @@ -188,9 +188,10 @@ def create_sdist(tmp_dir): ) stderr = create.stderr + stdout = create.stdout if create.returncode != 0: - raise Exception('make snapshot failed:\n%s' % stderr) + raise Exception('make snapshot failed:\n%s' % stderr + '\n' + stdout) # Determine path to sdist tmp_dir_files = os.listdir(tmp_dir) diff --git a/test/sanity/code-smell/package-data.requirements.in b/test/sanity/code-smell/package-data.requirements.in index f587e39d21b..deb50678890 100644 --- a/test/sanity/code-smell/package-data.requirements.in +++ b/test/sanity/code-smell/package-data.requirements.in @@ -5,3 +5,4 @@ pyyaml # ansible-core requirement resolvelib < 1.1.0 rstcheck < 6 # match version used in other sanity tests antsibull-changelog +setuptools == 45.2.0 # minimum supported setuptools diff --git a/test/sanity/code-smell/package-data.requirements.txt b/test/sanity/code-smell/package-data.requirements.txt index 393c1a0d1c7..c4b6119bf77 100644 --- a/test/sanity/code-smell/package-data.requirements.txt +++ b/test/sanity/code-smell/package-data.requirements.txt @@ -10,6 +10,7 @@ PyYAML==6.0 resolvelib==1.0.1 rstcheck==5.0.0 semantic-version==2.10.0 +setuptools==45.2.0 tomli==2.0.1 types-docutils==0.18.3 typing_extensions==4.5.0