8f6bc2f Fix brp-python-bytecompile with the new features from compileall2

Authored and Committed by lbalhar 4 years ago
    Fix brp-python-bytecompile with the new features from compileall2
    Resolves: rhbz#1595265
    
    The problem this change is intended to solve is with how `real_libdir`
    is calculated. Let's assume we want to recursively byte-compile all
    `*.py` files in
    `/builddir/build/BUILDROOT/python-scales-1.0.9-250.fc32.x86_64/usr/lib/python3.8`.
    Then, `real_libdir` is this path without `$RPM_BUILD_ROOT` with
    the filename at the end which displays in the error message like this:
    
    ```
    Bytecompiling .py files below /builddir/build/BUILDROOT/python-scales-1.0.9-250.fc32.x86_64/usr/lib/python3.8 using /usr/bin/python3.8
    *** Error compiling '/builddir/build/BUILDROOT/python-scales-1.0.9-250.fc32.x86_64/usr/lib/python3.8/site-packages/greplin/bar.py'...
      File "/usr/lib/python3.8/bar.py", line 1
        import sin from math
                   ^
    SyntaxError: invalid syntax
    ```
    
    `/usr/lib/python3.8/bar.py` is obviously wrong.
    
    One of the new features of the `compileall2` module (which will
    be available in stdlib in Python 3.9) is that the path byte-compiled to
    `*.pyc` files is calculated for each file. This means that by using
    `-s` and `-p` we can strip `$RPM_BUILD_ROOT` and prepend `/` for each
    file individually which will fix the problem.
    
    ```
    Bytecompiling .py files below /builddir/build/BUILDROOT/python-scales-1.0.9-250.fc32.x86_64/usr/lib/python3.8 using /usr/bin/python3.8
    *** Error compiling '/builddir/build/BUILDROOT/python-scales-1.0.9-250.fc32.x86_64/usr/lib/python3.8/site-packages/greplin/bar.py'...
      File "/usr/lib/python3.8/site-packages/greplin/bar.py", line 1
        import sin from math
                   ^
    SyntaxError: invalid syntax
    ```
    
    This change has an effect only for Python >= 3.4.
    
        
file modified
+5 -3