Churchyard (talk | contribs) (Created page with "== Default Python version macros == For situations when an application (i.e. not a library) is compatible with both Python 3 and Python 2, the default Python version should b...") |
Churchyard (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== Default Python version macros == | == Default Python version macros == | ||
For situations when an application (i.e. not a library) is compatible with both Python 3 and Python 2, the default Python version should be used. Depending on Fedora | For situations when an application (i.e. not a library) is compatible with both Python 3 and Python 2, the default Python version should be used. Depending on Fedora release number the default Python version might differ. For packagers' convenience and better spec readability, the following set of macros is provided: | ||
{| | {| | ||
Line 21: | Line 21: | ||
|} | |} | ||
Example spec file using this approach | Example spec file using this approach: | ||
<pre> | <pre> | ||
Line 61: | Line 61: | ||
%build | %build | ||
# this will use the default Python interpreter | |||
%{__python_default} setup.py build | %{__python_default} setup.py build | ||
%install | %install | ||
%{__python_default} setup.py install | # this will use the default Python interpreter | ||
%{__python_default} setup.py install --skip-build --root %{buildroot} | |||
%files | %files | ||
%doc README.rst LICENSE | %doc README.rst LICENSE | ||
%{_bindir}/%{name} | %{_bindir}/%{name} | ||
# Files will end up in proper locations | |||
%{python_default_sitelib}/%{name} | %{python_default_sitelib}/%{name} | ||
%{python_default_sitelib}/%{name}-%{version}-py?.?.egg-info | %{python_default_sitelib}/%{name}-%{version}-py?.?.egg-info | ||
Line 75: | Line 78: | ||
... | ... | ||
</pre> | </pre> | ||
This package will use Python 3 (or 2) on Fedora releases where Python 3 (or 2) is the default. |
Revision as of 19:47, 17 October 2014
Default Python version macros
For situations when an application (i.e. not a library) is compatible with both Python 3 and Python 2, the default Python version should be used. Depending on Fedora release number the default Python version might differ. For packagers' convenience and better spec readability, the following set of macros is provided:
Macro | Fedora >= 22 | Fedora <= 21 |
---|---|---|
python_default_version | 3 | 2 |
__python_default | %{__python3} | %{__python2} |
python_default_sitelib | %{python3_sitelib} | %{python2_sitelib} |
python_default_sitearch | %{python3_sitearch} | %{python2_sitearch} |
python_default_devel | python3-devel | python2-devel |
python_default_prefix | python3- | python- |
python_default_prefix_only3 | python3- | (empty string) |
Example spec file using this approach:
Name: fooapp Version: 1.0.0 Release: 1%{?dist} Summary: This is just an example License: MIT URL: http://example.com/ Source0: http://pypi.python.org/packages/source/f/%{name}/%{name}-%{version}.tar.gz BuildArch: noarch # This will be python3-devel or python2-devel: BuildRequires: %{python_default_devel} # This will be python-setuptools or python3-setuptools BuildRequires: %{python_default_prefix}setuptools # This will be python3-pytest or pytest BuildRequires: %{python_default_prefix_only3}pytest # Unfortunately with weird package names, we have to do if/else %if %{python_default_version} > 2 BuildRequires: python3-cairo Requires: python3-cairo %else BuildRequires: pycairo Requires: pycairo %endif %description This is just an example %prep %setup -q # change the shebangs if neccessary sed -i 's|#!/usr/bin/env python|#!%{__python_default}|g' *.py %build # this will use the default Python interpreter %{__python_default} setup.py build %install # this will use the default Python interpreter %{__python_default} setup.py install --skip-build --root %{buildroot} %files %doc README.rst LICENSE %{_bindir}/%{name} # Files will end up in proper locations %{python_default_sitelib}/%{name} %{python_default_sitelib}/%{name}-%{version}-py?.?.egg-info %changelog ...
This package will use Python 3 (or 2) on Fedora releases where Python 3 (or 2) is the default.