#!/bin/sh # # Trigger to compile python code into native bytecode and remove # generated bytecode files. # # Packages need to set the variable pycompile_dirs with a list # of directories (absolute path) separated by spaces, and WITHOUT # the first slash, e.g: # # pycompile_dirs="usr/blah/foo usr/zoo/d00d" # # or if the code resides in standard site-packages directory, # need to set the pycompile_module variable: # # pycompile_module="blah foo" # # Arguments: $ACTION = [run/targets] # $TARGET = [post-install/pre-remove] # $PKGNAME # $VERSION # $UPDATE = [yes/no] # ACTION="$1" TARGET="$2" PKGNAME="$3" VERSION="$4" UPDATE="$5" # Current python version used in XBPS. PYVER="2.7" export PATH="$PATH:/usr/local/bin" compile() { for f in ${pycompile_dirs}; do echo "Byte-compiling python code in ${f}..." python -m compileall -f -q ${f} && \ python -O -m compileall -f -q ${f} done for f in ${pycompile_module}; do echo "Byte-compiling python code for module ${f}..." python -m compileall -f -q \ usr/lib/python${PYVER}/site-packages/${f} && \ python -O -m compileall -f -q \ usr/lib/python${PYVER}/site-packages/${f} done } remove() { for f in ${pycompile_dirs}; do echo "Removing byte-compiled python files in ${f}..." find ${f} -type f -name \*.py[co] -delete 2>&1 >/dev/null done for f in ${pycompile_module}; do echo "Removing byte-compiled python code for module ${f}..." find usr/lib/python${PYVER}/site-packages/${f} \ -type f -name \*.py[co] -delete 2>&1 >/dev/null done } case "$ACTION" in targets) echo "post-install pre-remove" ;; run) [ ! -x usr/bin/python ] && exit 0 [ -z "${pycompile_dirs}" -a -z "${pycompile_module}" ] && exit 0 case "$TARGET" in post-install) compile ;; pre-remove) remove ;; *) exit 1 ;; esac ;; *) exit 1 ;; esac exit 0