From c57f7509a3fb3b8a749b63aac1e35b73771b8172 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Wed, 5 Oct 2011 14:26:33 +0200 Subject: [PATCH] xbps-triggers: new trigger to generate/remove python byte-code files. --- srcpkgs/xbps-triggers/files/pycompile | 84 +++++++++++++++++++++++++++ srcpkgs/xbps-triggers/template | 2 +- 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100755 srcpkgs/xbps-triggers/files/pycompile diff --git a/srcpkgs/xbps-triggers/files/pycompile b/srcpkgs/xbps-triggers/files/pycompile new file mode 100755 index 00000000000..f82dec9897f --- /dev/null +++ b/srcpkgs/xbps-triggers/files/pycompile @@ -0,0 +1,84 @@ +#!/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 -O -m compileall -f -q ${f} + done + for f in ${pycompile_module}; do + echo "Byte-compiling python code for module ${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 diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template index d48589b515f..02579d4c3be 100644 --- a/srcpkgs/xbps-triggers/template +++ b/srcpkgs/xbps-triggers/template @@ -1,6 +1,6 @@ # Template file for 'xbps-triggers' pkgname=xbps-triggers -version=0.19 +version=0.21 build_style=custom-install short_desc="XBPS triggers" maintainer="Juan RP "