churchyard / rpms / python3

Forked from rpms/python3 6 years ago
Clone

Blame macros.pybytecompile3.7

4aab458
# Note that the path could itself be a python file, or a directory
4aab458
4aab458
# Python's compile_all module only works on directories, and requires a max
4aab458
# recursion depth
4aab458
6a6a8d4
# Note that the py_byte_compile macro should work for python2 as well
6a6a8d4
# Which unfortunately makes the definition more complicated than it should be
6a6a8d4
# The condition should be reversed once /usr/bin/python is python3!
6a6a8d4
4aab458
%py_byte_compile()\
6a6a8d4
py2_byte_compile () {\
6a6a8d4
    python_binary="%1"\
6a6a8d4
    bytecode_compilation_path="%2"\
6a6a8d4
    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:]]' || :\
6a6a8d4
    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:]]' || :\
6a6a8d4
}\
6a6a8d4
\
6a6a8d4
py3_byte_compile () {\
6a6a8d4
    python_binary="%1"\
6a6a8d4
    bytecode_compilation_path="%2"\
6a6a8d4
    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:]]' || :\
6a6a8d4
}\
6a6a8d4
\
6a6a8d4
[[ "%1" == *python3* ]] || py2_byte_compile "%1" "%2" && py3_byte_compile "%1" "%2" \
4aab458
%{nil}