From 86704da569d91112768240b28a05e77fc1ac2d13 Mon Sep 17 00:00:00 2001 From: jbj Date: Fri, 20 Jun 2003 19:04:15 +0000 Subject: [PATCH] Automagically byte compile python code. CVS patchset: 6913 CVS date: 2003/06/20 19:04:15 --- scripts/Makefile.am | 6 ++++-- scripts/brp-python-bytecompile | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 scripts/brp-python-bytecompile diff --git a/scripts/Makefile.am b/scripts/Makefile.am index c621212..3307a95 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -3,7 +3,8 @@ AUTOMAKE_OPTIONS = 1.4 foreign EXTRA_DIST = \ - brp-compress brp-redhat brp-strip brp-strip-comment-note \ + brp-compress brp-python-bytecompile brp-redhat \ + brp-strip brp-strip-comment-note \ brp-strip-shared brp-strip-static-archive brp-sparc64-linux \ check-files check-prereqs convertrpmrc.sh cross-build \ find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \ @@ -23,7 +24,8 @@ all: configdir = ${prefix}/lib/rpm config_SCRIPTS = \ - brp-compress brp-redhat brp-strip brp-strip-comment-note \ + brp-compress brp-python-bytecompile brp-redhat \ + brp-strip brp-strip-comment-note \ brp-strip-shared brp-strip-static-archive brp-sparc64-linux \ check-files check-prereqs convertrpmrc.sh cross-build \ find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \ diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile new file mode 100644 index 0000000..77be2d5 --- /dev/null +++ b/scripts/brp-python-bytecompile @@ -0,0 +1,26 @@ +#!/bin/sh + +# If using normal root, avoid changing anything. +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then + exit 0 +fi + +# If we don't have a python interpreter, avoid changing anything. +python=${1:-/usr/bin/python} +if [ ! -x "$python" ]; 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 + +# Generate normal (.pyc) byte-compiled files. +$python -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT"'", '"$depth"', "/", 1)' > /dev/null + +# Generate optimized (.pyo) byte-compiled files. +$python -O -c 'import compileall; compileall.compile_dir("'"$RPM_BUILD_ROOT"'", '"$depth"', "/", 1)' > /dev/null -- 2.7.4