Move macros.pybytecompile in here from python3X-devel
macros.pybytecompile: Detect Python version through sys.version_info ...instead of guessing from the executable name. This should make it work on EPEL7 as well where we ship 3.4 and 3.6 https://bugzilla.redhat.com/show_bug.cgi?id=1599809
This commit is contained in:
parent
ef7f75882a
commit
0fe7b8e184
27
macros.pybytecompile
Normal file
27
macros.pybytecompile
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Note that the path could itself be a python file, or a directory
|
||||||
|
|
||||||
|
# Python's compile_all module only works on directories, and requires a max
|
||||||
|
# recursion depth
|
||||||
|
|
||||||
|
# Note that the py_byte_compile macro should work for all Python versions
|
||||||
|
# Which unfortunately makes the definition more complicated than it should be
|
||||||
|
|
||||||
|
%py_byte_compile()\
|
||||||
|
py2_byte_compile () {\
|
||||||
|
python_binary="%1"\
|
||||||
|
bytecode_compilation_path="%2"\
|
||||||
|
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2]) for f in sys.argv[1:]]' || :\
|
||||||
|
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2]) for f in sys.argv[1:]]' || :\
|
||||||
|
}\
|
||||||
|
\
|
||||||
|
py3_byte_compile () {\
|
||||||
|
python_binary="%1"\
|
||||||
|
bytecode_compilation_path="%2"\
|
||||||
|
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2], optimize=opt) for opt in range(2) for f in sys.argv[1:]]' || :\
|
||||||
|
}\
|
||||||
|
\
|
||||||
|
# Get version without a dot (36 instead of 3.6), bash doesn't compare floats well \
|
||||||
|
python_version=$(%1 -c "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))") \
|
||||||
|
# The bytecompilation syntax has changed between Python 3.4 and Python 3.5, so for 3.4 and earlier we use the "Python 2" syntax \
|
||||||
|
[ "$python_version" -ge 35 ] && py3_byte_compile "%1" "%2" || py2_byte_compile "%1" "%2" \
|
||||||
|
%{nil}
|
@ -1,6 +1,6 @@
|
|||||||
Name: python-rpm-macros
|
Name: python-rpm-macros
|
||||||
Version: 3
|
Version: 3
|
||||||
Release: 21%{?dist}
|
Release: 22%{?dist}
|
||||||
Summary: The unversioned Python RPM macros
|
Summary: The unversioned Python RPM macros
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@ -9,6 +9,7 @@ Source1: macros.python-srpm
|
|||||||
Source2: macros.python2
|
Source2: macros.python2
|
||||||
Source3: macros.python3
|
Source3: macros.python3
|
||||||
Source4: macros.python3_other
|
Source4: macros.python3_other
|
||||||
|
Source5: macros.pybytecompile
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
# For %%python3_pkgversion used in %%python_provide
|
# For %%python3_pkgversion used in %%python_provide
|
||||||
@ -46,12 +47,13 @@ RPM macros for building Python 3 packages.
|
|||||||
|
|
||||||
%install
|
%install
|
||||||
mkdir -p %{buildroot}/%{rpmmacrodir}
|
mkdir -p %{buildroot}/%{rpmmacrodir}
|
||||||
install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} \
|
install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} \
|
||||||
%{buildroot}/%{rpmmacrodir}/
|
%{buildroot}/%{rpmmacrodir}/
|
||||||
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%{rpmmacrodir}/macros.python
|
%{rpmmacrodir}/macros.python
|
||||||
|
%{rpmmacrodir}/macros.pybytecompile
|
||||||
|
|
||||||
%files -n python-srpm-macros
|
%files -n python-srpm-macros
|
||||||
%{rpmmacrodir}/macros.python-srpm
|
%{rpmmacrodir}/macros.python-srpm
|
||||||
@ -65,6 +67,11 @@ install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} \
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Jul 14 2018 Tomas Orsava <torsava@redhat.com> - 3-22
|
||||||
|
- Move macros.pybytecompile in here from python3X-devel
|
||||||
|
- macros.pybytecompile: Detect Python version through sys.version_info instead
|
||||||
|
of guessing from the executable name
|
||||||
|
|
||||||
* Mon Jul 09 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 3-21
|
* Mon Jul 09 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 3-21
|
||||||
- Backport %%python3_platform and add %%python3_other_platform.
|
- Backport %%python3_platform and add %%python3_other_platform.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user