diff options
Diffstat (limited to 'pyproject-rpm-macros.spec')
-rw-r--r-- | pyproject-rpm-macros.spec | 95 |
1 files changed, 80 insertions, 15 deletions
diff --git a/pyproject-rpm-macros.spec b/pyproject-rpm-macros.spec index be91e35..e642eea 100644 --- a/pyproject-rpm-macros.spec +++ b/pyproject-rpm-macros.spec @@ -1,27 +1,52 @@ +%bcond_with tests +%bcond_with pytest_xdist +%bcond_with tox_tests + Name: pyproject-rpm-macros Summary: RPM macros for PEP 517 Python packages License: MIT +Version: 1.15.0 +Release: 1 -%bcond_without tests +URL: https://src.fedoraproject.org/rpms/pyproject-rpm-macros +Source001: macros.pyproject +Source002: macros.aaa-pyproject-srpm -Version: 1.4.0 -Release: 1 +Source101: pyproject_buildrequires.py +Source102: pyproject_save_files.py +Source103: pyproject_convert.py +Source104: pyproject_preprocess_record.py +Source105: pyproject_construct_toxenv.py +Source106: pyproject_requirements_txt.py +Source107: pyproject_wheel.py -Source0: %{name}-%{version}.tar.gz +Source201: test_pyproject_buildrequires.py +Source202: test_pyproject_save_files.py +Source203: test_pyproject_requirements_txt.py +Source204: compare_mandata.py +Source301: pyproject_buildrequires_testcases.yaml +Source302: pyproject_save_files_test_data.yaml -URL: https://src.fedoraproject.org/rpms/pyproject-rpm-macros +Source901: README.md +Source902: LICENSE BuildArch: noarch %if %{with tests} -BuildRequires: python3dist(pytest) -BuildRequires: python3dist(pyyaml) -BuildRequires: python3dist(packaging) -BuildRequires: python3dist(pip) -BuildRequires: python3dist(setuptools) -BuildRequires: python3dist(wheel) -BuildRequires: (python3dist(toml) if python3-devel < 3.11) +BuildRequires: python3-pytest +%if %{with pytest_xdist} +BuildRequires: python3dist(pytest-xdist) +%endif +BuildRequires: python3-pyyaml +BuildRequires: python3-packaging +BuildRequires: python3-pip +BuildRequires: python3-setuptools +%if %{with tox_tests} +BuildRequires: python3dist(tox-current-env) >= 0.0.6 +%endif +BuildRequires: python3-wheel +BuildRequires: (python3dist(tomli) if python3 < 3.11) %endif BuildRequires: python-rpm-macros @@ -30,10 +55,14 @@ BuildRequires: python3-rpm-macros Requires: python-rpm-macros Requires: python-srpm-macros Requires: python3-rpm-macros +Requires: (pyproject-srpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} if pyproject-srpm-macros) Requires: /usr/bin/find Requires: /usr/bin/sed +Requires: ((rpm-build >= 4.14.90 with (rpm-build < 4.19.90 or rpm-build >= 4.19.91-8)) if rpm-build) +BuildRequires: rpm-build >= 4.14.90 + %description These macros allow projects that follow the Python packaging specifications to be packaged as RPMs. @@ -49,10 +78,25 @@ These macros replace %%py3_build and %%py3_install, which only work with setup.py. +%package -n pyproject-srpm-macros +Summary: Minimal implementation of %%pyproject_buildrequires +Requires: (pyproject-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} if pyproject-rpm-macros) +Requires: (rpm-build >= 4.14.90 if rpm-build) + +%description -n pyproject-srpm-macros +This package contains a minimal implementation of %%pyproject_buildrequires. +When used in %%generate_buildrequires, it will generate BuildRequires +for pyproject-rpm-macros. When both packages are installed, the full version +takes precedence. + %prep # Not strictly necessary but allows working on file names instead # of source numbers in install section -%setup -q +%setup -c -T +cp -p %{sources} . + +#generate_buildrequires +# nothing to do, this is here just to assert we have that functionality %build # nothing to do, sources are not buildable @@ -61,6 +105,7 @@ which only work with setup.py. mkdir -p %{buildroot}%{_rpmmacrodir} mkdir -p %{buildroot}%{_rpmconfigdir}/openEuler install -pm 644 macros.pyproject %{buildroot}%{_rpmmacrodir}/ +install -pm 644 macros.aaa-pyproject-srpm %{buildroot}%{_rpmmacrodir}/ install -pm 644 pyproject_buildrequires.py %{buildroot}%{_rpmconfigdir}/openEuler/ install -pm 644 pyproject_convert.py %{buildroot}%{_rpmconfigdir}/openEuler/ install -pm 644 pyproject_save_files.py %{buildroot}%{_rpmconfigdir}/openEuler/ @@ -69,7 +114,22 @@ install -pm 644 pyproject_construct_toxenv.py %{buildroot}%{_rpmconfigdir}/openE install -pm 644 pyproject_requirements_txt.py %{buildroot}%{_rpmconfigdir}/openEuler/ install -pm 644 pyproject_wheel.py %{buildroot}%{_rpmconfigdir}/openEuler/ +%check +# assert the two signatures of %%pyproject_buildrequires match exactly +signature1="$(grep '^%%pyproject_buildrequires' macros.pyproject | cut -d' ' -f1)" +signature2="$(grep '^%%pyproject_buildrequires' macros.aaa-pyproject-srpm | cut -d' ' -f1)" +test "$signature1" == "$signature2" +# but also assert we are not comparing empty strings +test "$signature1" != "" + +%if %{with tests} +export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856356 +pytest -vv --doctest-modules %{?with_pytest_xdist:-n auto} %{!?with_tox_tests:-k "not tox"} +# brp-compress is provided as an argument to get the right directory macro expansion +python3 compare_mandata.py -f %{_rpmconfigdir}/brp-compress +%endif +rm -rf %{buildroot}%{_rpmconfigdir}/openEuler/__pycache__ %files %{_rpmmacrodir}/macros.pyproject @@ -84,6 +144,11 @@ install -pm 644 pyproject_wheel.py %{buildroot}%{_rpmconfigdir}/openEuler/ %doc README.md %license LICENSE +%files -n pyproject-srpm-macros +%{_rpmmacrodir}/macros.aaa-pyproject-srpm +%license LICENSE + + %changelog -* Tue Jan 03 2023 tanyulong <tanyulong@kylinos.cn> - 1.4.0-1 -- init package for openEuler +* Fri Sep 20 2024 misaka00251 <liuxin@iscas.ac.cn> - 1.15.0-1 +- Init package |