Merge pull request #8584 from jefferyto/python-compileall-recursion-level
python,python3: Increase max recursion level when generating bytecode
This commit is contained in:
commit
9f15edf744
2 changed files with 40 additions and 9 deletions
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue