import ansible-core-2.15.3-1.el8

i8c changed/i8c/ansible-core-2.15.3-1.el8
MSVSphere Packaging Team 1 year ago
parent 4579a0b794
commit 0d162f50c9

@ -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

12
.gitignore vendored

@ -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

@ -1,157 +0,0 @@
From 4a3f5b71678c2f23f31c636472bbc0fd30c3e7e8 Mon Sep 17 00:00:00 2001
From: Matt Clay <matt@mystile.com>
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 <matt@mystile.com>
---
.../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

@ -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

@ -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 <packager@msvsphere.ru> - 2.14.2-4
* Wed Aug 16 2023 Dimitri Savineau <dsavinea@redhat.com> - 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 <dsavinea@redhat.com> - 2.15.2-1
- ansible-core 2.15.2 release (rhbz#2231891)
* Tue Jul 25 2023 MSVSphere Packaging Team <packager@msvsphere.ru> - 2.15.1-1
- Rebuilt for MSVSphere 8.8
* Tue May 23 2023 Dimitri Savineau <dsavinea@redhat.com> - 2.14.2-4
- ansible-test: Fix vendoring support (rhbz#2212445)
- remove unused sources.
* Tue Jul 04 2023 Dimitri Savineau <dsavinea@redhat.com> - 2.15.1-1
- ansible-core 2.15.1 release (rhbz#2219620)
* Mon May 15 2023 Dimitri Savineau <dsavinea@redhat.com> - 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 <dsavinea@redhat.com> - 2.14.2-3
- rebuild with python 3.11 (rhbz#2169524)

Loading…
Cancel
Save