#!/bin/sh # called as "py-compile [--basedir DIR] PY_FILES ... if [ -z "$PYTHON" ]; then PYTHON=python fi basedir= case "$1" in --basedir) basedir=$2 shift 2 ;; --help) echo "Usage: py-compile [--basedir DIR] PY_FILES ..." echo "Byte compile some python scripts. This should be performed" echo "after they have been moved to the final installation location" exit 0 ;; --version) echo "py-compile version 0.0" exit 0 ;; esac if [ $# = 0 ]; then echo "No files given to $0" 1>&2 exit 1 fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then trans="path = file" else trans="path = os.path.join('$basedir', file)" fi $PYTHON -c " import sys, os, string, py_compile files = '''$*''' print 'Byte-compiling python modules...' for file in string.split(files): $trans if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'): continue print file, sys.stdout.flush() py_compile.compile(path) print" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, string, py_compile files = '''$*''' print 'Byte-compiling python modules (optimised versions) ...' for file in string.split(files): $trans if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'): continue print file, sys.stdout.flush() py_compile.compile(path) print" 2>/dev/null || :