summaryrefslogtreecommitdiff
path: root/pyproject-rpm-macros.spec
diff options
context:
space:
mode:
Diffstat (limited to 'pyproject-rpm-macros.spec')
-rw-r--r--pyproject-rpm-macros.spec95
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