diff --git a/.ansible-core.metadata b/.ansible-core.metadata index 0d8afab..83fc9d9 100644 --- a/.ansible-core.metadata +++ b/.ansible-core.metadata @@ -1,6 +1,8 @@ 560f248ccb0b98256c5b50c86a002c2c1e57edb6 SOURCES/Jinja2-3.1.2.tar.gz -acb6dca5cbec84f4c707225a8b6b2505fae28c90 SOURCES/MarkupSafe-2.1.0.tar.gz -b7e3b3c247a445c1986e5ec350b13bb1984a7207 SOURCES/ansible-core-2.14.2.tar.gz -b99fa7af153646722b2d1817bb09906cc5a94bc6 SOURCES/packaging-20.4.tar.gz -ca8d892c93fe2d54ea5e6f31c5798e40c58e8667 SOURCES/pyparsing-2.4.7.tar.gz -ae564e766fc147e87d7f009d42b5204b7ae3a832 SOURCES/resolvelib-0.5.4.tar.gz +192b9f6598e1ae036301f72781973c6f46e50aa2 SOURCES/MarkupSafe-2.1.2.tar.gz +02fbb1496820e07068eeba988a02ca2626b296d2 SOURCES/ansible-core-2.15.3.tar.gz +f220508f7a7e6f81422fe604035c56eb2532f383 SOURCES/ansible-documentation-2.15.3.tar.gz +6e53dd117d09e6cd5d8596bf99a0dcbb202b8aad SOURCES/docutils-0.20.1.tar.gz +b8caff3bec760723db6af4092c68075e22bdb769 SOURCES/packaging-21.3.tar.gz +96464a9452e95e980c3a1fad1020fe00e29c0ae3 SOURCES/pyparsing-3.0.7.tar.gz +2f587f4095bb70039c1d995635ae55af8eab08dc SOURCES/resolvelib-1.0.1.tar.gz diff --git a/.gitignore b/.gitignore index 2d79bb0..c188552 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ SOURCES/Jinja2-3.1.2.tar.gz -SOURCES/MarkupSafe-2.1.0.tar.gz -SOURCES/ansible-core-2.14.2.tar.gz -SOURCES/packaging-20.4.tar.gz -SOURCES/pyparsing-2.4.7.tar.gz -SOURCES/resolvelib-0.5.4.tar.gz +SOURCES/MarkupSafe-2.1.2.tar.gz +SOURCES/ansible-core-2.15.3.tar.gz +SOURCES/ansible-documentation-2.15.3.tar.gz +SOURCES/docutils-0.20.1.tar.gz +SOURCES/packaging-21.3.tar.gz +SOURCES/pyparsing-3.0.7.tar.gz +SOURCES/resolvelib-1.0.1.tar.gz diff --git a/SOURCES/ansible-test-Fix-vendoring-support-80074.patch b/SOURCES/ansible-test-Fix-vendoring-support-80074.patch deleted file mode 100644 index c39a199..0000000 --- a/SOURCES/ansible-test-Fix-vendoring-support-80074.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 4a3f5b71678c2f23f31c636472bbc0fd30c3e7e8 Mon Sep 17 00:00:00 2001 -From: Matt Clay -Date: Thu, 23 Feb 2023 12:45:43 -0800 -Subject: [PATCH] [stable-2.14] ansible-test - Fix vendoring support (#80074) - -- Support loading of vendored Python packages. -- Exclude vendored Python packages from payloads. -(cherry picked from commit 6bfe6b899a4881ebc065834a43a26e123d7fdab3) - -Co-authored-by: Matt Clay ---- - .../ansible-test-vendoring-support.yml | 3 ++ - .../targets/ansible-test-vendoring/aliases | 5 +++ - .../ns/col/tests/config.yml | 4 +++ - .../targets/ansible-test-vendoring/runme.sh | 33 +++++++++++++++++++ - test/lib/ansible_test/_internal/payload.py | 8 +++++ - test/lib/ansible_test/_internal/util.py | 17 ++++++++++ - 6 files changed, 70 insertions(+) - create mode 100644 changelogs/fragments/ansible-test-vendoring-support.yml - create mode 100644 test/integration/targets/ansible-test-vendoring/aliases - create mode 100644 test/integration/targets/ansible-test-vendoring/ansible_collections/ns/col/tests/config.yml - create mode 100755 test/integration/targets/ansible-test-vendoring/runme.sh - -diff --git a/changelogs/fragments/ansible-test-vendoring-support.yml b/changelogs/fragments/ansible-test-vendoring-support.yml -new file mode 100644 -index 0000000000..234268a311 ---- /dev/null -+++ b/changelogs/fragments/ansible-test-vendoring-support.yml -@@ -0,0 +1,3 @@ -+bugfixes: -+ - ansible-test - Support loading of vendored Python packages from ansible-core. -+ - ansible-test - Exclude ansible-core vendored Python packages from ansible-test payloads. -diff --git a/test/integration/targets/ansible-test-vendoring/aliases b/test/integration/targets/ansible-test-vendoring/aliases -new file mode 100644 -index 0000000000..09cbf4b8f2 ---- /dev/null -+++ b/test/integration/targets/ansible-test-vendoring/aliases -@@ -0,0 +1,5 @@ -+shippable/posix/group3 # runs in the distro test containers -+shippable/generic/group1 # runs in the default test container -+context/controller -+needs/target/collection -+destructive # adds and then removes packages into lib/ansible/_vendor/ -diff --git a/test/integration/targets/ansible-test-vendoring/ansible_collections/ns/col/tests/config.yml b/test/integration/targets/ansible-test-vendoring/ansible_collections/ns/col/tests/config.yml -new file mode 100644 -index 0000000000..c73de69dfc ---- /dev/null -+++ b/test/integration/targets/ansible-test-vendoring/ansible_collections/ns/col/tests/config.yml -@@ -0,0 +1,4 @@ -+# This config file is included to cause ansible-test to import the `packaging` module. -+ -+modules: -+ python_requires: default -diff --git a/test/integration/targets/ansible-test-vendoring/runme.sh b/test/integration/targets/ansible-test-vendoring/runme.sh -new file mode 100755 -index 0000000000..fa6f652a21 ---- /dev/null -+++ b/test/integration/targets/ansible-test-vendoring/runme.sh -@@ -0,0 +1,33 @@ -+#!/usr/bin/env bash -+ -+set -eux -+ -+# Run import sanity tests which require modifications to the source directory. -+ -+vendor_dir="$(python -c 'import pathlib, ansible._vendor; print(pathlib.Path(ansible._vendor.__file__).parent)')" -+ -+mkdir "${vendor_dir}/packaging/" # intended to fail if packaging is already present (to avoid deleting it later) -+ -+cleanup() { -+ rm -rf "${vendor_dir}/packaging/" -+} -+ -+trap cleanup EXIT -+ -+# Verify that packages installed in the vendor directory are loaded by ansible-test. -+# This is done by injecting a broken `packaging` package, which should cause ansible-test to fail. -+ -+echo 'raise Exception("intentional failure from ansible-test-vendoring integration test")' > "${vendor_dir}/packaging/__init__.py" -+ -+if ansible-test sanity --test import --color --truncate 0 "${@}" > output.log 2>&1; then -+ echo "ansible-test did not exit with a non-zero status" -+ cat output.log -+ exit 1 -+fi -+ -+if ! grep '^Exception: intentional failure from ansible-test-vendoring integration test$' output.log; then -+ echo "ansible-test did not fail with the expected output" -+ cat output.log -+ exit 1 -+fi -+ -diff --git a/test/lib/ansible_test/_internal/payload.py b/test/lib/ansible_test/_internal/payload.py -index f62dc2baa8..10dde7b8b1 100644 ---- a/test/lib/ansible_test/_internal/payload.py -+++ b/test/lib/ansible_test/_internal/payload.py -@@ -46,6 +46,14 @@ def create_payload(args: CommonConfig, dst_path: str) -> None: - files = list(data_context().ansible_source) - filters = {} - -+ # Exclude vendored files from the payload. -+ # They may not be compatible with the delegated environment. -+ files = [ -+ (abs_path, rel_path) for abs_path, rel_path in files -+ if not rel_path.startswith('lib/ansible/_vendor/') -+ or rel_path == 'lib/ansible/_vendor/__init__.py' -+ ] -+ - def make_executable(tar_info: tarfile.TarInfo) -> t.Optional[tarfile.TarInfo]: - """Make the given file executable.""" - tar_info.mode |= stat.S_IXUSR | stat.S_IXOTH | stat.S_IXGRP -diff --git a/test/lib/ansible_test/_internal/util.py b/test/lib/ansible_test/_internal/util.py -index 53959d41a2..029f73be22 100644 ---- a/test/lib/ansible_test/_internal/util.py -+++ b/test/lib/ansible_test/_internal/util.py -@@ -24,10 +24,14 @@ import time - import functools - import shlex - import typing as t -+import warnings - - from struct import unpack, pack - from termios import TIOCGWINSZ - -+# CAUTION: Avoid third-party imports in this module whenever possible. -+# Any third-party imports occurring here will result in an error if they are vendored by ansible-core. -+ - try: - from typing_extensions import TypeGuard # TypeGuard was added in Python 3.10 - except ImportError: -@@ -339,6 +343,17 @@ def get_ansible_version() -> str: - return ansible_version - - -+def _enable_vendoring() -> None: -+ """Enable support for loading Python packages vendored by ansible-core.""" -+ # Load the vendoring code by file path, since ansible may not be in our sys.path. -+ # Convert warnings into errors, to avoid problems from surfacing later. -+ -+ with warnings.catch_warnings(): -+ warnings.filterwarnings('error') -+ -+ load_module(os.path.join(ANSIBLE_LIB_ROOT, '_vendor', '__init__.py'), 'ansible_vendor') -+ -+ - @cache - def get_available_python_versions() -> dict[str, str]: - """Return a dictionary indicating which supported Python versions are available.""" -@@ -1148,3 +1148,5 @@ def type_guard(sequence: c.Sequence[t.Any], guard_type: t.Type[C]) -> TypeGuard[ - - - display = Display() # pylint: disable=locally-disabled, invalid-name -+ -+_enable_vendoring() --- -2.39.2 - diff --git a/SOURCES/remove-bundled-deps-from-requirements.patch b/SOURCES/remove-bundled-deps-from-requirements.patch index 9e6b433..8000217 100644 --- a/SOURCES/remove-bundled-deps-from-requirements.patch +++ b/SOURCES/remove-bundled-deps-from-requirements.patch @@ -1,8 +1,8 @@ diff --git a/requirements.txt b/requirements.txt -index 20562c3e0f..792daa209a 100644 +index a07aa98506..ef189d6594 100644 --- a/requirements.txt +++ b/requirements.txt -@@ -3,13 +3,5 @@ +@@ -3,16 +3,8 @@ # packages. Thus, this should be the loosest set possible (only required # packages, not optional ones, and with the widest range of versions that could # be suitable) @@ -10,9 +10,12 @@ index 20562c3e0f..792daa209a 100644 PyYAML >= 5.1 # PyYAML 5.1 is required for Python 3.8+ support cryptography -packaging + # importlib.resources in stdlib for py3.9 is lacking native hooks for + # importlib.resources.files + importlib_resources >= 5.0, < 5.1; python_version < '3.10' -# NOTE: resolvelib 0.x version bumps should be considered major/breaking -# NOTE: and we should update the upper cap with care, at least until 1.0 -# NOTE: Ref: https://github.com/sarugaku/resolvelib/issues/69 -# NOTE: When updating the upper bound, also update the latest version used -# NOTE: in the ansible-galaxy-collection test suite. --resolvelib >= 0.5.3, < 0.9.0 # dependency resolver used by ansible-galaxy +-resolvelib >= 0.5.3, < 1.1.0 # dependency resolver used by ansible-galaxy diff --git a/SPECS/ansible-core.spec b/SPECS/ansible-core.spec index 4392ee4..130ef7d 100644 --- a/SPECS/ansible-core.spec +++ b/SPECS/ansible-core.spec @@ -8,7 +8,7 @@ # Disable shebang munging for specific paths. These files are data files. # ansible-test munges the shebangs itself. -%global __brp_mangle_shebangs_exclude_from_file %{SOURCE1} +%global __brp_mangle_shebangs_exclude_from_file %{SOURCE2} # NOTE(pabelanger): Don't auto add pwsh as Requires for ansible-test. We do # not wish to package it. @@ -27,33 +27,37 @@ %define vendor_pip %{__python3} -m pip install --no-deps -v --no-build-isolation --no-binary :all: -t %{vendor_path} # These control which bundled dep versions we pin against +%global docutils_version 0.20.1 %global jinja2_version 3.1.2 -%global markupsafe_version 2.1.0 -%global packaging_version 20.4 -%global pyparsing_version 2.4.7 -%global resolvelib_version 0.5.4 +%global markupsafe_version 2.1.2 +%global packaging_version 21.3 +%global pyparsing_version 3.0.7 +%global resolvelib_version 1.0.1 Name: ansible-core Summary: SSH-based configuration management, deployment, and task execution system -Version: 2.14.2 -Release: 4%{?dist} +Version: 2.15.3 +Release: 1%{?dist} ExcludeArch: i686 Group: Development/Libraries License: GPLv3+ Source0: https://files.pythonhosted.org/packages/source/a/ansible-core/ansible-core-%{version}.tar.gz -Source1: ansible-test-data-files.txt +Source1: https://github.com/ansible/ansible-documentation/archive/v%{version}/ansible-documentation-%{version}.tar.gz +Source2: ansible-test-data-files.txt # And bundled deps -Source2: https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-%{jinja2_version}.tar.gz -Source3: https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-%{markupsafe_version}.tar.gz -Source4: https://files.pythonhosted.org/packages/source/p/packaging/packaging-%{packaging_version}.tar.gz -Source5: https://files.pythonhosted.org/packages/source/p/pyparsing/pyparsing-%{pyparsing_version}.tar.gz -Source6: https://files.pythonhosted.org/packages/source/r/resolvelib/resolvelib-%{resolvelib_version}.tar.gz +Source3: https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-%{jinja2_version}.tar.gz +Source4: https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-%{markupsafe_version}.tar.gz +Source5: https://files.pythonhosted.org/packages/source/p/packaging/packaging-%{packaging_version}.tar.gz +Source6: https://files.pythonhosted.org/packages/source/p/pyparsing/pyparsing-%{pyparsing_version}.tar.gz +Source7: https://files.pythonhosted.org/packages/source/r/resolvelib/resolvelib-%{resolvelib_version}.tar.gz + +# Deps to build manpages +Source8: https://sourceforge.net/projects/docutils/files/docutils/%{docutils_version}/docutils-%{docutils_version}.tar.gz Patch0: remove-bundled-deps-from-requirements.patch -Patch1: ansible-test-Fix-vendoring-support-80074.patch URL: http://ansible.com @@ -89,7 +93,6 @@ BuildRequires: make git-core gcc Requires: git-core Requires: python%{python3_pkgversion}-PyYAML >= 5.1 Requires: python%{python3_pkgversion}-cryptography -Requires: python%{python3_pkgversion}-six Requires: sshpass %description @@ -114,9 +117,8 @@ This package installs the ansible-test command for testing modules and plugins developed for ansible. %prep -%setup -q -b2 -b3 -b4 -b5 -b6 -n ansible-core-%{version} +%setup -q -b1 -b3 -b4 -b5 -b6 -b7 -b8 -n ansible-core-%{version} %patch0 -p1 -%patch1 -p1 # Fix all Python shebangs recursively in ansible-test %{py3_shebang_fix} test/lib/ansible_test @@ -172,13 +174,20 @@ done mkdir -p %{buildroot}%{_sysconfdir}/ansible/ mkdir -p %{buildroot}%{_sysconfdir}/ansible/roles/ -cp examples/hosts %{buildroot}%{_sysconfdir}/ansible/ -cp examples/ansible.cfg %{buildroot}%{_sysconfdir}/ansible/ +cp ../ansible-documentation-%{version}/examples/hosts %{buildroot}%{_sysconfdir}/ansible/ +cp ../ansible-documentation-%{version}/examples/ansible.cfg %{buildroot}%{_sysconfdir}/ansible/ + mkdir -p %{buildroot}/%{_mandir}/man1/ +mkdir -p docs/man/man1 +mkdir -p /tmp/_docutils +%{__python3} -m pip install ../docutils-%{docutils_version} -t /tmp/_docutils --no-build-isolation +PYTHONPATH=%{vendor_path}:/tmp/_docutils %{__python3} packaging/cli-doc/build.py man --output-dir docs/man/man1 +rm -rf /tmp/_docutils + cp -v docs/man/man1/*.1 %{buildroot}/%{_mandir}/man1/ -cp -pr docs/docsite/rst . +cp -pr ../ansible-documentation-%{version}/docs/docsite/rst . cp -p lib/ansible_core.egg-info/PKG-INFO . strip --strip-unneeded %{vendor_path}/markupsafe/_speedups%{python3_ext_suffix} @@ -188,7 +197,7 @@ strip --strip-unneeded %{vendor_path}/markupsafe/_speedups%{python3_ext_suffix} %{_bindir}/ansible* %exclude %{_bindir}/ansible-test %config(noreplace) %{_sysconfdir}/ansible/ -%doc README.rst PKG-INFO COPYING +%doc README.md PKG-INFO COPYING %doc changelogs/CHANGELOG-v2.*.rst %doc %{_mandir}/man1/ansible* %{_datadir}/ansible/ @@ -201,12 +210,27 @@ strip --strip-unneeded %{vendor_path}/markupsafe/_speedups%{python3_ext_suffix} %{python3_sitelib}/ansible_test %changelog -* Tue Jul 25 2023 MSVSphere Packaging Team - 2.14.2-4 +* Wed Aug 16 2023 Dimitri Savineau - 2.15.3-1 +- ansible-core 2.15.3 release (rhbz#2232431) +- Use docs and examples from ansible-documentation project. +- Build the manpages. + +* Mon Aug 14 2023 Dimitri Savineau - 2.15.2-1 +- ansible-core 2.15.2 release (rhbz#2231891) + +* Tue Jul 25 2023 MSVSphere Packaging Team - 2.15.1-1 - Rebuilt for MSVSphere 8.8 -* Tue May 23 2023 Dimitri Savineau - 2.14.2-4 -- ansible-test: Fix vendoring support (rhbz#2212445) -- remove unused sources. +* Tue Jul 04 2023 Dimitri Savineau - 2.15.1-1 +- ansible-core 2.15.1 release (rhbz#2219620) + +* Mon May 15 2023 Dimitri Savineau - 2.15.0-1 +- ansible-core 2.15.0 release (rhbz#2204511) +- update bundled markupsafe to 2.1.2. +- update bundled packaging to 21.3. +- update bundled pyparsing to 3.0.7. +- update bundled resolvelib to 1.0.1. +- remove six runtime dependency. * Tue Feb 14 2023 Dimitri Savineau - 2.14.2-3 - rebuild with python 3.11 (rhbz#2169524)