diff --git a/lang/python/python-package-install.sh b/lang/python/python-package-install.sh index 6b4fe54b1..2ca2abc16 100644 --- a/lang/python/python-package-install.sh +++ b/lang/python/python-package-install.sh @@ -43,11 +43,7 @@ process_filespec() { delete_empty_dirs() { local dst_dir="$1" if [ -d "$dst_dir/usr" ] ; then - for _ in $(seq 1 10) ; do - find "$dst_dir/usr" -empty -type d -exec rmdir {} \; || continue - break - done - rmdir "$dst_dir/usr" || true + find "$dst_dir/usr" -empty -type d -delete fi } @@ -60,7 +56,7 @@ filespec="$6" SED="${SED:-sed -e}" -find "$src_dir" -name "*\.exe" -exec rm -f {} \; +find "$src_dir" -name "*.exe" -delete process_filespec "$src_dir" "$dst_dir" "$filespec" || { echo "process filespec error-ed" @@ -75,7 +71,7 @@ fi if [ "$mode" == "sources" ] ; then # Copy only python source files - find "$dst_dir" -not -type d -not -name "*\.py" -exec rm -f {} \; + find "$dst_dir" -not -type d -not -name "*.py" -delete delete_empty_dirs "$dst_dir" exit 0 @@ -83,6 +79,8 @@ fi legacy= [ "$ver" == "3" ] && legacy="-b" +# default max recursion is 10 +max_recursion_level=20 # XXX [So that you won't goof as I did] # Note: Yes, I tried to use the -O & -OO flags here. @@ -90,14 +88,14 @@ legacy= # So, we just stuck to un-optimized byte-codes, # which is still way better/faster than running # Python sources all the time. -$python -m compileall $legacy -d '/' "$dst_dir" || { +$python -m compileall -r "$max_recursion_level" $legacy -d '/' "$dst_dir" || { echo "python -m compileall err-ed" exit 1 } # Delete source files and pyc [ un-optimized bytecode files ] # We may want to make this optimization thing configurable later, but not sure atm -find "$dst_dir" -type f -name "*\.py" -exec rm -f {} \; +find "$dst_dir" -type f -name "*.py" -delete delete_empty_dirs "$dst_dir" diff --git a/lang/python/python/patches/021-compileall-add-recursion-option.patch b/lang/python/python/patches/021-compileall-add-recursion-option.patch new file mode 100644 index 000000000..fa75a4285 --- /dev/null +++ b/lang/python/python/patches/021-compileall-add-recursion-option.patch @@ -0,0 +1,33 @@ +diff --git a/Lib/compileall.py b/Lib/compileall.py +index 5cfa8bed3f..8716c9c0ca 100644 +--- a/Lib/compileall.py ++++ b/Lib/compileall.py +@@ -152,10 +152,10 @@ def main(): + """Script main program.""" + import getopt + try: +- opts, args = getopt.getopt(sys.argv[1:], 'lfqd:x:i:') ++ opts, args = getopt.getopt(sys.argv[1:], 'lr:fqd:x:i:') + except getopt.error, msg: + print msg +- print "usage: python compileall.py [-l] [-f] [-q] [-d destdir] " \ ++ print "usage: python compileall.py [-l] [-r recursion] [-f] [-q] [-d destdir] " \ + "[-x regexp] [-i list] [directory|file ...]" + print + print "arguments: zero or more file and directory names to compile; " \ +@@ -164,6 +164,7 @@ def main(): + print + print "options:" + print "-l: don't recurse into subdirectories" ++ print "-r recursion: control the maximum recursion level" + print "-f: force rebuild even if timestamps are up-to-date" + print "-q: output only error messages" + print "-d destdir: directory to prepend to file paths for use in " \ +@@ -187,6 +188,7 @@ def main(): + flist = None + for o, a in opts: + if o == '-l': maxlevels = 0 ++ if o == '-r': maxlevels = int(a) + if o == '-d': ddir = a + if o == '-f': force = 1 + if o == '-q': quiet = 1