From 367df2cb93c188628e801b1d85f5da4f40870285 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 14 Mar 2020 13:20:36 +0100 Subject: [PATCH] - updated python2/3 templates, added python3-only variants --- python-ext.spec | 49 ++++++++++++++------ python.spec | 50 ++++++++++++++------ python3-ext.spec | 117 +++++++++++++++++++++++++++++++++++++++++++++++ python3.spec | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 305 insertions(+), 26 deletions(-) create mode 100644 python3-ext.spec create mode 100644 python3.spec diff --git a/python-ext.spec b/python-ext.spec index ea17579..8b71f2c 100644 --- a/python-ext.spec +++ b/python-ext.spec @@ -1,6 +1,7 @@ # -# This is template for python extension modules (including compiled C code) +# This is template for python2/python3 extension modules (including compiled C code) # use template-specs/python.spec for pure python packages +# use template-specs/python3-ext.spec for python3 only packages # # Conditional build: %bcond_without doc # don't build doc @@ -23,21 +24,30 @@ Source0: https://files.pythonhosted.org/packages/source/M/MODULE/%{module}-%{ver # Source0-md5: - #URL: https://pypi.org/project/MODULE/ URL: - -BuildRequires: rpm-pythonprov -# for the py_build, py_install macros -BuildRequires: rpmbuild(macros) >= 1.714 %if %{with python2} -BuildRequires: python-devel +BuildRequires: python-devel >= 1:2.5 #BuildRequires: python-setuptools +%if %{with tests} +#BuildRequires: python- +%endif %endif %if %{with python3} -BuildRequires: python3-devel +BuildRequires: python3-devel >= 1:3.2 #BuildRequires: python3-setuptools +%if %{with tests} +#BuildRequires: python3- %endif +%endif +BuildRequires: rpm-pythonprov +# for the py_build, py_install macros +BuildRequires: rpmbuild(macros) >= 1.714 # when using /usr/bin/env or other in-place substitutions #BuildRequires: sed >= 4.0 +%if %{with doc} +BuildRequires: sphinx-pdg # -2 or -3 +%endif # replace with other requires if defined in setup.py -Requires: python-modules +Requires: python-modules >= 1:2.5 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description @@ -48,7 +58,7 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) Summary: - Summary(pl.UTF-8): - Group: Libraries/Python -Requires: python3-modules +Requires: python3-modules >= 1:3.2 %description -n python3-%{module} @@ -76,17 +86,28 @@ Dokumentacja API %{module}. %build %if %{with python2} -%py_build %{?with_tests:test} +%py_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python} -m pytest ... +%endif %endif %if %{with python3} -%py3_build %{?with_tests:test} +%py3_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python3} -m pytest ... +%endif %endif %if %{with doc} -cd docs -%{__make} -j1 html -rm -rf _build/html/_sources +%{__make} -C docs html +# if particular python version required - append: +# SPHINXBUILD=sphinx-build-3 +rm -rf docs/_build/html/_sources %endif %install @@ -102,6 +123,7 @@ rm -rf $RPM_BUILD_ROOT %py3_install %endif +%if %{with enable_if_there_are_examples_provided_in_package} %if %{with python2} install -d $RPM_BUILD_ROOT%{_examplesdir}/python-%{module}-%{version} cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python-%{module}-%{version} @@ -114,6 +136,7 @@ cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} find $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} -name '*.py' \ | xargs sed -i '1s|^#!.*python\b|#!%{__python3}|' %endif +%endif %clean rm -rf $RPM_BUILD_ROOT diff --git a/python.spec b/python.spec index fcfbacf..a9994cc 100644 --- a/python.spec +++ b/python.spec @@ -1,5 +1,6 @@ # -# This is template for pure python modules (noarch) +# This is template for pure python2/python3 modules (noarch) +# use template-specs/python3.spec for python3 only noarch packages # use template-specs/python-ext.spec for binary python packages # # @@ -29,20 +30,29 @@ Source0: https://files.pythonhosted.org/packages/source/P/PYPI_NAME/%{pypi_name} # Source0-md5: - #URL: https://pypi.org/project/PYPI_NAME/ URL: - -BuildRequires: rpm-pythonprov -BuildRequires: rpmbuild(macros) >= 1.714 %if %{with python2} -BuildRequires: python-modules +BuildRequires: python-modules >= 1:2.5 BuildRequires: python-setuptools +%if %{with tests} +#BuildRequires: python- +%endif %endif %if %{with python3} -BuildRequires: python3-modules +BuildRequires: python3-modules >= 1:3.2 BuildRequires: python3-setuptools +%if %{with tests} +#BuildRequires: python3- +%endif %endif +BuildRequires: rpm-pythonprov +BuildRequires: rpmbuild(macros) >= 1.714 # when using /usr/bin/env or other in-place substitutions #BuildRequires: sed >= 4.0 +%if %{with doc} +BuildRequires: sphinx-pdg # -2 or -3 +%endif # replace with other requires if defined in setup.py -Requires: python-modules +Requires: python-modules >= 1:2.5 BuildArch: noarch BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) @@ -54,7 +64,7 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) Summary: - Summary(pl.UTF-8): - Group: Libraries/Python -Requires: python3-modules +Requires: python3-modules >= 1:3.2 %description -n python3-%{module} @@ -79,17 +89,28 @@ Dokumentacja API modułu Pythona %{module}. %build %if %{with python2} -%py_build %{?with_tests:test} +%py_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python} -m pytest ... +%endif %endif %if %{with python3} -%py3_build %{?with_tests:test} +%py3_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python3} -m pytest ... +%endif %endif %if %{with doc} -cd docs -%{__make} -j1 html -rm -rf _build/html/_sources +%{__make} -C docs html +# if particular python version required - append: +# SPHINXBUILD=sphinx-build-3 +rm -rf docs/_build/html/_sources %endif %install @@ -98,11 +119,13 @@ rm -rf $RPM_BUILD_ROOT %if %{with python2} %py_install +%if %{with enable_if_package_uses_non_standard_setup_py} # when files are installed in other way that standard 'setup.py # they need to be (re-)compiled # change %{py_sitedir} to %{py_sitescriptdir} for 'noarch' packages! %py_ocomp $RPM_BUILD_ROOT%{py_sitedir} %py_comp $RPM_BUILD_ROOT%{py_sitedir} +%endif %py_postclean %endif @@ -111,7 +134,7 @@ rm -rf $RPM_BUILD_ROOT %py3_install %endif -# in case there are examples provided +%if %{with enable_if_there_are_examples_provided_in_package} %if %{with python2} install -d $RPM_BUILD_ROOT%{_examplesdir}/python-%{module}-%{version} cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python-%{module}-%{version} @@ -124,6 +147,7 @@ cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} find $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} -name '*.py' \ | xargs sed -i '1s|^#!.*python\b|#!%{__python3}|' %endif +%endif %clean rm -rf $RPM_BUILD_ROOT diff --git a/python3-ext.spec b/python3-ext.spec new file mode 100644 index 0000000..152b48d --- /dev/null +++ b/python3-ext.spec @@ -0,0 +1,117 @@ +# +# This is template for python 3 extension modules (including compiled C code) +# use template-specs/python3.spec for pure python packages +# +# Conditional build: +%bcond_without doc # don't build doc +%bcond_without tests # do not perform "make test" + +%define module template +Summary: - +Summary(pl.UTF-8): - +# Name must match the python module/package name (as on pypi or in 'import' statement) +Name: python3-%{module} +Version: _ +Release: 0.1 +License: - (enter GPL/GPL v2/GPL v3/LGPL/BSD/BSD-like/other license name here) +Group: Libraries/Python +# if pypi: +#Source0Download: https://pypi.org/simple/MODULE/ +Source0: https://files.pythonhosted.org/packages/source/M/MODULE/%{module}-%{version}.tar.gz +# Source0-md5: - +#URL: https://pypi.org/project/MODULE/ +URL: - +#BuildRequires: python3-setuptools +%if %{with tests} +#BuildRequires: python3- +%endif +BuildRequires: rpm-pythonprov +BuildRequires: rpmbuild(macros) >= 1.714 +BuildRequires: python3-devel >= 1:3.2 +# when using /usr/bin/env or other in-place substitutions +#BuildRequires: sed >= 4.0 +%if %{with doc} +BuildRequires: sphinx-pdg-3 +%endif +# replace with other requires if defined in setup.py +Requires: python-modules >= 1:2.5 +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%description + +%description -l pl.UTF-8 + +%package -n python3-%{module} +Summary: - +Summary(pl.UTF-8): - +Group: Libraries/Python +Requires: python3-modules >= 1:3.2 + +%description -n python3-%{module} + +%description -n python3-%{module} -l pl.UTF-8 + +%package apidocs +Summary: %{module} API documentation +Summary(pl.UTF-8): Dokumentacja API %{module} +Group: Documentation +%if "%{_rpmversion}" >= "4.6" +BuildArch: noarch +%endif + +%description apidocs +API documentation for %{module}. + +%description apidocs -l pl.UTF-8 +Dokumentacja API %{module}. + +%prep +%setup -q -n %{module}-%{version} + +# fix #!/usr/bin/env python -> #!/usr/bin/python: +#%{__sed} -i -e '1s,^#!.*python3,#!%{__python3},' %{name}.py + +%build +%py3_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python3} -m pytest ... +%endif + +%if %{with doc} +%{__make} -C docs html \ + SPHINXBUILD=sphinx-build-3 +rm -rf docs/_build/html/_sources +%endif + +%install +rm -rf $RPM_BUILD_ROOT + +%py3_install + +%if %{with enable_if_there_are_examples_provided_in_package} +install -d $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} +cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} +find $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} -name '*.py' \ + | xargs sed -i '1s|^#!.*python\b|#!%{__python3}|' +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(644,root,root,755) +%doc AUTHORS CREDITS ChangeLog NEWS README THANKS TODO +%dir %{py3_sitedir}/%{module} +%{py3_sitedir}/%{module}/*.py +%attr(755,root,root) %{py3_sitedir}/%{module}/*.so +%{py3_sitedir}/%{module}/__pycache__ +%{py3_sitedir}/%{module}-%{version}-py*.egg-info +%{_examplesdir}/%{name}-%{version} + +%if %{with doc} +%files apidocs +%defattr(644,root,root,755) +%doc docs/_build/html/* +%endif diff --git a/python3.spec b/python3.spec new file mode 100644 index 0000000..647659c --- /dev/null +++ b/python3.spec @@ -0,0 +1,115 @@ +# +# This is template for pure python 3 modules +# use template-specs/python.spec for pure python2/python3 packages +# use template-specs/python3-ext.spec for binary python3 packages +# +# Conditional build: +%bcond_without doc # don't build doc +%bcond_without tests # do not perform "make test" + +%define module template +Summary: - +Summary(pl.UTF-8): - +# Name must match the python module/package name (as on pypi or in 'import' statement) +Name: python3-%{module} +Version: _ +Release: 0.1 +License: - (enter GPL/GPL v2/GPL v3/LGPL/BSD/BSD-like/other license name here) +Group: Libraries/Python +# if pypi: +#Source0Download: https://pypi.org/simple/MODULE/ +Source0: https://files.pythonhosted.org/packages/source/M/MODULE/%{module}-%{version}.tar.gz +# Source0-md5: - +#URL: https://pypi.org/project/MODULE/ +URL: - +#BuildRequires: python3-setuptools +%if %{with tests} +#BuildRequires: python3- +%endif +BuildRequires: rpm-pythonprov +BuildRequires: rpmbuild(macros) >= 1.714 +BuildRequires: python3-modules >= 1:3.2 +# when using /usr/bin/env or other in-place substitutions +#BuildRequires: sed >= 4.0 +%if %{with doc} +BuildRequires: sphinx-pdg-3 +%endif +# replace with other requires if defined in setup.py +Requires: python-modules >= 1:2.5 +BuildArch: noarch +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%description + +%description -l pl.UTF-8 + +%package -n python3-%{module} +Summary: - +Summary(pl.UTF-8): - +Group: Libraries/Python +Requires: python3-modules >= 1:3.2 + +%description -n python3-%{module} + +%description -n python3-%{module} -l pl.UTF-8 + +%package apidocs +Summary: %{module} API documentation +Summary(pl.UTF-8): Dokumentacja API %{module} +Group: Documentation + +%description apidocs +API documentation for %{module}. + +%description apidocs -l pl.UTF-8 +Dokumentacja API %{module}. + +%prep +%setup -q -n %{module}-%{version} + +# fix #!/usr/bin/env python -> #!/usr/bin/python: +#%{__sed} -i -e '1s,^#!.*python3,#!%{__python3},' %{name}.py + +%build +%py3_build +# deprecated target, but sometimes still used: %{?with_tests:test} + +%if %{with tests} +%{__python3} -m pytest ... +%endif + +%if %{with doc} +%{__make} -C docs html \ + SPHINXBUILD=sphinx-build-3 +rm -rf docs/_build/html/_sources +%endif + +%install +rm -rf $RPM_BUILD_ROOT + +%py3_install + +%if %{with enable_if_there_are_examples_provided_in_package} +install -d $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} +cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} +find $RPM_BUILD_ROOT%{_examplesdir}/python3-%{module}-%{version} -name '*.py' \ + | xargs sed -i '1s|^#!.*python\b|#!%{__python3}|' +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(644,root,root,755) +%doc AUTHORS CREDITS ChangeLog NEWS README THANKS TODO +%dir %{py3_sitescriptdir}/%{module} +%{py3_sitescriptdir}/%{module}/*.py +%{py3_sitescriptdir}/%{module}/__pycache__ +%{py3_sitescriptdir}/%{module}-%{version}-py*.egg-info +%{_examplesdir}/%{name}-%{version} + +%if %{with doc} +%files apidocs +%defattr(644,root,root,755) +%doc docs/_build/html/* +%endif -- 2.44.0