Automagically byte compile python code.
authorjbj <devnull@localhost>
Fri, 20 Jun 2003 19:04:15 +0000 (19:04 +0000)
committerjbj <devnull@localhost>
Fri, 20 Jun 2003 19:04:15 +0000 (19:04 +0000)
CVS patchset: 6913
CVS date: 2003/06/20 19:04:15

scripts/Makefile.am
scripts/brp-python-bytecompile [new file with mode: 0644]

index c621212..3307a95 100644 (file)
@@ -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 (file)
index 0000000..77be2d5
--- /dev/null
@@ -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