mirror of
https://github.com/xHyroM/void-packages.git
synced 2024-11-24 23:31:04 +01:00
117 lines
3 KiB
Text
117 lines
3 KiB
Text
|
#!/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"
|
||
|
#
|
||
|
# Or if a module is stored in top-level site-packages directory:
|
||
|
#
|
||
|
# pycompile_module="foo.py"
|
||
|
#
|
||
|
# Additionally another var can be used to specify the target python version:
|
||
|
#
|
||
|
# pycompile_version="3.4"
|
||
|
#
|
||
|
# Arguments: $ACTION = [run/targets]
|
||
|
# $TARGET = [post-install/pre-remove]
|
||
|
# $PKGNAME
|
||
|
# $VERSION
|
||
|
# $UPDATE = [yes/no]
|
||
|
#
|
||
|
ACTION="$1"
|
||
|
TARGET="$2"
|
||
|
PKGNAME="$3"
|
||
|
VERSION="$4"
|
||
|
UPDATE="$5"
|
||
|
|
||
|
export PATH="usr/bin:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||
|
|
||
|
update_ldcache() {
|
||
|
if [ -x sbin/ldconfig -o -x bin/ldconfig ]; then
|
||
|
echo "Updating ldconfig(8) cache..."
|
||
|
ldconfig -X || :
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
compile()
|
||
|
{
|
||
|
for f in ${pycompile_dirs}; do
|
||
|
echo "Byte-compiling python code in ${f}..."
|
||
|
python${pycompile_version} -m compileall -f -q ./${f} && \
|
||
|
python${pycompile_version} -O -m compileall -f -q ./${f}
|
||
|
done
|
||
|
for f in ${pycompile_module}; do
|
||
|
echo "Byte-compiling python${pycompile_version} code for module ${f}..."
|
||
|
if [ -d "usr/lib/python${pycompile_version}/site-packages/${f}" ]; then
|
||
|
python${pycompile_version} -m compileall -f -q \
|
||
|
usr/lib/python${pycompile_version}/site-packages/${f} && \
|
||
|
python${pycompile_version} -O -m compileall -f -q \
|
||
|
usr/lib/python${pycompile_version}/site-packages/${f}
|
||
|
else
|
||
|
python${pycompile_version} -m compileall -f -q \
|
||
|
usr/lib/python${pycompile_version}/site-packages/${f} && \
|
||
|
python${pycompile_version} -O -m compileall -f -q \
|
||
|
usr/lib/python${pycompile_version}/site-packages/${f}
|
||
|
fi
|
||
|
done
|
||
|
update_ldcache
|
||
|
}
|
||
|
|
||
|
remove()
|
||
|
{
|
||
|
for f in ${pycompile_dirs}; do
|
||
|
echo "Removing byte-compiled python${pycompile_version} files in ${f}..."
|
||
|
find ./${f} -type f -name \*.py[co] -delete 2>&1 >/dev/null
|
||
|
find ./${f} -type d -name __pycache__ -delete 2>&1 >/dev/null
|
||
|
done
|
||
|
for f in ${pycompile_module}; do
|
||
|
echo "Removing byte-compiled python${pycompile_version} code for module ${f}..."
|
||
|
if [ -d usr/lib/python${pycompile_version}/site-packages/${f} ]; then
|
||
|
find usr/lib/python${pycompile_version}/site-packages/${f} \
|
||
|
-type f -name \*.py[co] -delete 2>&1 >/dev/null
|
||
|
find usr/lib/python${pycompile_version}/site-packages/${f} \
|
||
|
-type d -name __pycache__ -delete 2>&1 >/dev/null
|
||
|
else
|
||
|
rm -f usr/lib/python${pycompile_version}/site-packages/${f%.py}.py[co]
|
||
|
fi
|
||
|
done
|
||
|
update_ldcache
|
||
|
}
|
||
|
|
||
|
case "$ACTION" in
|
||
|
targets)
|
||
|
echo "post-install pre-remove"
|
||
|
;;
|
||
|
run)
|
||
|
[ ! -x usr/bin/python${pycompile_version} ] && 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
|