/usr/lib/rpm
NameSizeModeActions
fileattrs/-0755rm
macros.d/-0755rm
platform/-0755rm
redhat/-0755rm
brp-compress15020755editdlrm
brp-java-gcjcompile14180755editdlrm
brp-python-bytecompile38680755editdlrm
brp-python-hardlink6320755editdlrm
brp-scl-compress18090755editdlrm
brp-scl-python-bytecompile31090755editdlrm
brp-strip4280755editdlrm
brp-strip-comment-note7410755editdlrm
brp-strip-shared7060755editdlrm
brp-strip-static-archive4940755editdlrm
check-buildroot12850755editdlrm
check-files10430755editdlrm
check-prereqs4180755editdlrm
check-rpaths10390755editdlrm
check-rpaths-worker50550755editdlrm
config.guess441660755editdlrm
config.sub364080755editdlrm
debugedit476880755editdlrm
debuginfo.prov3750755editdlrm
desktop-file.prov6020755editdlrm
elfdeps167680755editdlrm
find-debuginfo.sh200540755editdlrm
find-lang.sh82350755editdlrm
find-provides910755editdlrm
find-requires910755editdlrm
fontconfig.prov4890755editdlrm
kabi.sh4680755editdlrm
kmod.prov6820755editdlrm
libtooldeps.sh7180755editdlrm
macros439880644editdlrm
macros.perl4730644editdlrm
macros.php1920644editdlrm
macros.python9060644editdlrm
metainfo.prov4380755editdlrm
mkinstalldirs35390755editdlrm
mono-find-provides11070755editdlrm
mono-find-requires19160755editdlrm
ocaml-find-provides.sh16590755editdlrm
ocaml-find-requires.sh21350755editdlrm
pkgconfigdeps.sh13710755editdlrm
python-macro-helper6340644editdlrm
pythondeps.sh9210755editdlrm
pythondistdeps.py111840755editdlrm
rpm.daily2960644editdlrm
rpm.log610644editdlrm
rpm.supp6880644editdlrm
rpm2cpio.sh12490755editdlrm
rpmdb_dump169040755editdlrm
rpmdb_load292960755editdlrm
rpmdb_loadcvt14670755editdlrm
rpmdb_recover169040755editdlrm
rpmdb_stat168720755editdlrm
rpmdb_upgrade127520755editdlrm
rpmdb_verify168560755editdlrm
rpmdeps173440755editdlrm
rpmpopt-4.14.3114700644editdlrm
rpmrc171540644editdlrm
scldeps.sh2540755editdlrm
script.req3220755editdlrm
sepdebugcrcfix162320755editdlrm
tgpg9290755editdlrm
Edit: /usr/lib/rpm/brp-python-bytecompile (3868B)
#!/bin/bash errors_terminate=$2 extra=$3 # If using normal root, avoid changing anything. if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then exit 0 fi # Figure out how deep we need to descend. We could pick an insanely high # number and hope it's enough, but somewhere, somebody's sure to run into it. depth=`(find "$RPM_BUILD_ROOT" -type f -name "*.py" -print0 ; echo /) | \ xargs -0 -n 1 dirname | sed 's,[^/],,g' | sort -u | tail -n 1 | wc -c` if [ -z "$depth" -o "$depth" -le "1" ]; then exit 0 fi function python_bytecompile() { local options=$1 local python_binary=$2 local exclude=$3 local python_libdir=$4 local depth=$5 local real_libdir=$6 cat << EOF | $python_binary $options import compileall, sys, os, re python_libdir = "$python_libdir" depth = $depth real_libdir = "$real_libdir" build_root = "$RPM_BUILD_ROOT" exclude = r"$exclude" class Filter: def search(self, path): ret = not os.path.realpath(path).startswith(build_root) if exclude: ret = ret or re.search(exclude, path) return ret sys.exit(not compileall.compile_dir(python_libdir, depth, real_libdir, force=1, rx=Filter(), quiet=1)) EOF } # .pyc/.pyo files embed a "magic" value, identifying the ABI version of Python # bytecode that they are for. # # The files below RPM_BUILD_ROOT could be targeting multiple versions of # python (e.g. a single build that emits several subpackages e.g. a # python26-foo subpackage, a python31-foo subpackage etc) # # Support this by assuming that below each /usr/lib/python$VERSION/, all # .pyc/.pyo files are to be compiled for /usr/bin/python$VERSION. # # For example, below /usr/lib/python2.6/, we're targeting /usr/bin/python2.6 # and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1 shopt -s nullglob for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/python[0-9]\.[0-9]+$"`; do python_binary=/usr/bin/$(basename $python_libdir) if [ "$python_binary" = "/usr/bin/python3.6" ]; then python_binary=/usr/libexec/platform-python fi real_libdir=${python_libdir/$RPM_BUILD_ROOT/} echo "Bytecompiling .py files below $python_libdir using $python_binary" # Generate normal (.pyc) byte-compiled files. python_bytecompile "" "$python_binary" "" "$python_libdir" "$depth" "$real_libdir" if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then # One or more of the files had a syntax error exit 1 fi # Generate optimized (.pyo) byte-compiled files. python_bytecompile "-O" "$python_binary" "" "$python_libdir" "$depth" "$real_libdir" if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then # One or more of the files had a syntax error exit 1 fi done # Handle other locations in the filesystem using the default python implementation # if extra is set to 0, don't do this if [ 0$extra -eq 0 ]; then exit 0 fi # If we don't have a default python interpreter, we cannot proceed default_python=${1:-/usr/bin/python} if [ ! -x "$default_python" ]; then exit 0 fi # Figure out if there are files to be bytecompiled with the default_python at all # this prevents unnecessary default_python invocation find "$RPM_BUILD_ROOT" -type f -name "*.py" | grep -Ev "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]+|/usr/share/doc" || exit 0 # Generate normal (.pyc) byte-compiled files. python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]+|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/" if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then # One or more of the files had a syntax error exit 1 fi # Generate optimized (.pyo) byte-compiled files. python_bytecompile "-O" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]+|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/" if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then # One or more of the files had a syntax error exit 1 fi exit 0