Move macros.pybytecompile in here from python3X-devel

Backporting to el6 branch from #10 (epel7).
This commit is contained in:
Carl George 2019-03-06 08:11:49 -06:00
parent 5e1687a64c
commit 0fa5a2d811
2 changed files with 36 additions and 2 deletions

27
macros.pybytecompile Normal file
View 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}

View File

@ -1,6 +1,6 @@
Name: python-rpm-macros
Version: 3
Release: 13%{?dist}
Release: 14%{?dist}
Summary: The unversioned Python RPM macros
License: MIT
@ -8,6 +8,7 @@ Source0: macros.python
Source1: macros.python-srpm
Source2: macros.python2
Source3: macros.python3
Source5: macros.pybytecompile
BuildArch: noarch
# For %%python3_pkgversion used in %%python_provide
@ -45,12 +46,13 @@ RPM macros for building Python 3 packages.
%install
mkdir -p %{buildroot}/%{rpmmacrodir}
install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} \
install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE5} \
%{buildroot}/%{rpmmacrodir}
%files
%{rpmmacrodir}/macros.python
%{rpmmacrodir}/macros.pybytecompile
%files -n python-srpm-macros
%{rpmmacrodir}/macros.python-srpm
@ -63,6 +65,11 @@ install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} \
%changelog
* Wed Mar 06 2019 Carl George <carl@george.computer> - 3-14
- 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-13
- Backport %%python3_platform macro.