diff --git a/macros.pybytecompile b/macros.pybytecompile index f5439cf..a41b3a2 100644 --- a/macros.pybytecompile +++ b/macros.pybytecompile @@ -3,25 +3,17 @@ # 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 +# Usage: +# %py_byte_compile +# Example: +# %py_byte_compile %{__python3} %{buildroot}%{_datadir}/spam/plugins/ + +# This will terminate build on SyntaxErrors, if you want to avoid that, +# use it in a subshell like this: +# (%{py_byte_compile }) || : %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} +python_binary="%1"\ +bytecode_compilation_path="%2"\ +find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -m py_compile\ +find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -m py_compile diff --git a/python-rpm-macros.spec b/python-rpm-macros.spec index bd849d7..e3d2d85 100644 --- a/python-rpm-macros.spec +++ b/python-rpm-macros.spec @@ -1,6 +1,6 @@ Name: python-rpm-macros Version: 3 -Release: 36%{?dist} +Release: 37%{?dist} Summary: The unversioned Python RPM macros License: MIT @@ -71,6 +71,9 @@ install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} \ %changelog +* Wed Aug 15 2018 Miro Hrončok - 3-37 +- Make %%py_byte_compile terminate build on SyntaxErrors (#1616219) + * Wed Aug 15 2018 Miro Hrončok - 3-36 - Make %%py_build wokr if %%__python is defined to custom value