Avoid leaking %{_pyproject_builddir} to pytest collection
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1935212 Requires a %pytest change: https://src.fedoraproject.org/rpms/python-rpm-macros/pull-request/102
This commit is contained in:
parent
346c9bc80a
commit
5470f5688e
@ -14,7 +14,13 @@
|
|||||||
%pyproject_ghost_distinfo %{_builddir}/pyproject-ghost-distinfo
|
%pyproject_ghost_distinfo %{_builddir}/pyproject-ghost-distinfo
|
||||||
%pyproject_record %{_builddir}/pyproject-record
|
%pyproject_record %{_builddir}/pyproject-record
|
||||||
|
|
||||||
|
# Avoid leaking %%{_pyproject_builddir} to pytest collection
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1935212
|
||||||
|
# The value is read and used by the %%pytest and %%tox macros:
|
||||||
|
%_set_pytest_addopts %global __pytest_addopts --ignore=%{_pyproject_builddir}
|
||||||
|
|
||||||
%pyproject_wheel() %{expand:\\\
|
%pyproject_wheel() %{expand:\\\
|
||||||
|
%_set_pytest_addopts
|
||||||
mkdir -p "%{_pyproject_builddir}"
|
mkdir -p "%{_pyproject_builddir}"
|
||||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" TMPDIR="%{_pyproject_builddir}" \\\
|
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" TMPDIR="%{_pyproject_builddir}" \\\
|
||||||
%{__python3} -m pip wheel --wheel-dir %{_pyproject_wheeldir} --no-deps --use-pep517 --no-build-isolation --disable-pip-version-check --no-clean --progress-bar off --verbose .
|
%{__python3} -m pip wheel --wheel-dir %{_pyproject_wheeldir} --no-deps --use-pep517 --no-build-isolation --disable-pip-version-check --no-clean --progress-bar off --verbose .
|
||||||
@ -109,6 +115,7 @@ TOX_TESTENV_PASSENV="${TOX_TESTENV_PASSENV:-*}" \\
|
|||||||
PYTHONDONTWRITEBYTECODE=1 \\
|
PYTHONDONTWRITEBYTECODE=1 \\
|
||||||
PATH="%{buildroot}%{_bindir}:$PATH" \\
|
PATH="%{buildroot}%{_bindir}:$PATH" \\
|
||||||
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \\
|
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \\
|
||||||
|
%{?__pytest_addopts:PYTEST_ADDOPTS="${PYTEST_ADDOPTS:-} %{__pytest_addopts}"} \\
|
||||||
HOSTNAME="rpmbuild" \\
|
HOSTNAME="rpmbuild" \\
|
||||||
%{__python3} -m tox --current-env -q --recreate -e "%{-e:%{-e*}}%{!-e:%{toxenv}}" %{?*}
|
%{__python3} -m tox --current-env -q --recreate -e "%{-e:%{-e*}}%{!-e:%{toxenv}}" %{?*}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ License: MIT
|
|||||||
|
|
||||||
# Keep the version at zero and increment only release
|
# Keep the version at zero and increment only release
|
||||||
Version: 0
|
Version: 0
|
||||||
Release: 40%{?dist}
|
Release: 41%{?dist}
|
||||||
|
|
||||||
# Macro files
|
# Macro files
|
||||||
Source001: macros.pyproject
|
Source001: macros.pyproject
|
||||||
@ -104,6 +104,10 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
|
|||||||
%license LICENSE
|
%license LICENSE
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jun 28 2021 Miro Hrončok <mhroncok@redhat.com> - 0-41
|
||||||
|
- Don't leak %%{_pyproject_builddir} to pytest collection
|
||||||
|
- Fixes rhzb#1935212
|
||||||
|
|
||||||
* Thu May 27 2021 Miro Hrončok <mhroncok@redhat.com> - 0-40
|
* Thu May 27 2021 Miro Hrončok <mhroncok@redhat.com> - 0-40
|
||||||
- Don't leak $TMPDIR outside of pyproject macros
|
- Don't leak $TMPDIR outside of pyproject macros
|
||||||
- Set %%_pyproject_wheeldir and %%_pyproject_builddir relative to the source tree, not $PWD
|
- Set %%_pyproject_wheeldir and %%_pyproject_builddir relative to the source tree, not $PWD
|
||||||
|
79
tests/python-setuptools.spec
Normal file
79
tests/python-setuptools.spec
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
Name: python-setuptools
|
||||||
|
Version: 57.0.0
|
||||||
|
Release: 0%{?dist}
|
||||||
|
Summary: Easily build and distribute Python packages
|
||||||
|
# see the real Fedora package for explanation:
|
||||||
|
License: MIT and (BSD or ASL 2.0)
|
||||||
|
URL: https://pypi.python.org/pypi/setuptools
|
||||||
|
Source0: %{pypi_source setuptools %{version}}
|
||||||
|
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
BuildRequires: python3-devel
|
||||||
|
BuildRequires: pyproject-rpm-macros
|
||||||
|
BuildRequires: gcc
|
||||||
|
|
||||||
|
%description
|
||||||
|
This package tests 2 things:
|
||||||
|
|
||||||
|
- %%{_pyproject_builddir} does not leak to pytest collection (rhzb#1935212)
|
||||||
|
- TODO %%{pyproject_files} has escaped spaces (rhzb#1976363)
|
||||||
|
|
||||||
|
|
||||||
|
%package -n python3-setuptools
|
||||||
|
Summary: %{summary}
|
||||||
|
|
||||||
|
# For users who might see ModuleNotFoundError: No module named 'pkg_resoureces'
|
||||||
|
%py_provides python3-pkg_resources
|
||||||
|
%py_provides python3-pkg-resources
|
||||||
|
|
||||||
|
%description -n python3-setuptools
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n setuptools-%{version}
|
||||||
|
|
||||||
|
# The following test deps are optional and either not desired or not available in Fedora:
|
||||||
|
sed -Ei setup.cfg -e '/\bpytest-(checkdocs|black|cov|mypy|enabler)\b/d' \
|
||||||
|
-e '/\bflake8\b/d' \
|
||||||
|
-e '/\bpaver\b/d'
|
||||||
|
# Strip pytest options from the above
|
||||||
|
sed -i pytest.ini -e 's/ --flake8//' \
|
||||||
|
-e 's/ --cov//'
|
||||||
|
|
||||||
|
|
||||||
|
%generate_buildrequires
|
||||||
|
%pyproject_buildrequires -r -x testing
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
%pyproject_wheel
|
||||||
|
|
||||||
|
|
||||||
|
%install
|
||||||
|
%pyproject_install
|
||||||
|
%pyproject_save_files setuptools pkg_resources _distutils_hack
|
||||||
|
|
||||||
|
# https://github.com/pypa/setuptools/issues/2709
|
||||||
|
rm -rf %{buildroot}%{python3_sitelib}/pkg_resources/tests/
|
||||||
|
sed -i '/tests/d' %{pyproject_files}
|
||||||
|
|
||||||
|
# Paths with spaces are not properly protected by %%pyproject_save_files
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1976363
|
||||||
|
# This workaround will most likely break once fixed
|
||||||
|
sed -Ei 's|/(.+) (.+)|"/\1 \2"|' %{pyproject_files}
|
||||||
|
|
||||||
|
|
||||||
|
%check
|
||||||
|
# https://github.com/pypa/setuptools/discussions/2607
|
||||||
|
rm pyproject.toml
|
||||||
|
|
||||||
|
# We only run a subset of tests to speed things up and be less fragile
|
||||||
|
PYTHONPATH=$(pwd) %pytest --ignore=pavement.py -k "sdist"
|
||||||
|
|
||||||
|
|
||||||
|
%files -n python3-setuptools -f %{pyproject_files}
|
||||||
|
%license LICENSE
|
||||||
|
%doc docs/* CHANGES.rst README.rst
|
||||||
|
%{python3_sitelib}/distutils-precedence.pth
|
@ -70,6 +70,9 @@
|
|||||||
- poetry_core:
|
- poetry_core:
|
||||||
dir: .
|
dir: .
|
||||||
run: ./mocktest.sh python-poetry-core
|
run: ./mocktest.sh python-poetry-core
|
||||||
|
- setuptools:
|
||||||
|
dir: .
|
||||||
|
run: ./mocktest.sh python-setuptools
|
||||||
required_packages:
|
required_packages:
|
||||||
- mock
|
- mock
|
||||||
- rpmdevtools
|
- rpmdevtools
|
||||||
|
Loading…
Reference in New Issue
Block a user