Remove .dist-info directory at the end of %pyproject_buildrequires

An incomplete .dist-info directory in $PWD can confuse tests in %check.
For example, virtualenv uses importlib.metadata to load its
entry points and it does not work when it finds a virtualenv...dist-info without them.

Related: rhbz#2208971
This commit is contained in:
Lumir Balhar 2023-02-13 16:16:58 +01:00 committed by Miro Hrončok
parent d46b0e5b01
commit e828b8291a
4 changed files with 75 additions and 1 deletions

View File

@ -172,6 +172,8 @@ if [ -f %{__python3} ]; then
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" TMPDIR="%{_pyproject_builddir}" \\\
RPM_TOXENV="%{toxenv}" HOSTNAME="rpmbuild" %{__python3} -Bs %{_rpmconfigdir}/redhat/pyproject_buildrequires.py %{?!_python_no_extras_requires:--generate-extras} --python3_pkgversion %{python3_pkgversion} --wheeldir %{_pyproject_wheeldir} %{?**}
fi
# Incomplete .dist-info dir might confuse importlib.metadata
rm -rfv *.dist-info/ >&2
}

View File

@ -12,7 +12,7 @@ License: MIT
# Increment Y and reset Z when new macros or features are added
# Increment Z when this is a bugfix or a cosmetic change
# Dropping support for EOL Fedoras is *not* considered a breaking change
Version: 1.6.2
Version: 1.6.3
Release: 1%{?dist}
# Macro files
@ -149,6 +149,10 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
%changelog
* Mon Feb 13 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.3-1
- Remove .dist-info directory at the end of %%pyproject_buildrequires
- An incomplete .dist-info directory in $PWD can confuse tests in %%check
* Wed Feb 08 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.2-1
- Improve detection of lang files

View File

@ -0,0 +1,65 @@
Name: python-virtualenv
Version: 20.19.0
Release: 0%{?dist}
Summary: Tool to create isolated Python environments
License: MIT
URL: http://pypi.python.org/pypi/virtualenv
Source: %{pypi_source virtualenv}
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3-flaky
BuildRequires: python3-pytest
%description
This specfile was added as a regression test to
https://src.fedoraproject.org/rpms/pyproject-rpm-macros/pull-request/363
It uses hatchling without %%pyproject_buildrequires -w.
%package -n python3-virtualenv
Summary: %{summary}
%description -n python3-virtualenv
...
%prep
%autosetup -p1 -n virtualenv-%{version}
# Relax the upper bounds of some dependencies to their known available versions in Fedora 36
# This can be reduced once Fedora 36 goes EOL, but might still be partially needed on Fedora 37
sed -i -e 's/distlib<1,>=0.3.6/distlib<1,>=0.3.4/' \
-e 's/filelock<4,>=3.4.1/filelock<4,>=3.3.1/' \
-e 's/platformdirs<4,>=2.4/platformdirs<4,>=2.3/' \
pyproject.toml
%generate_buildrequires
%pyproject_buildrequires
%build
%pyproject_wheel
%install
%pyproject_install
%pyproject_save_files virtualenv
%{?fc36:
# old version of setuptools_scm produces files incompatible with
# assumptions in virtualenv code, we append the expected attributes:
echo '__version__, __version_tuple__ = version, version_tuple' >> %{buildroot}%{python3_sitelib}/virtualenv/version.py
}
%check
# test_main fails when .dist-info is not deleted at the end of %%pyproject_buildrequires
PIP_CERT=/etc/pki/tls/certs/ca-bundle.crt \
%pytest -v -k test_main
%files -n python3-virtualenv -f %{pyproject_files}
%doc README.md
%{_bindir}/virtualenv

View File

@ -92,6 +92,9 @@
- fake_requirements:
dir: .
run: ./mocktest.sh fake-requirements
- virtualenv:
dir: .
run: ./mocktest.sh python-virtualenv
- escape_percentages:
dir: .
run: rpmbuild -ba escape_percentages.spec