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() {
|
delete_empty_dirs() {
|
||||||
local dst_dir="$1"
|
local dst_dir="$1"
|
||||||
if [ -d "$dst_dir/usr" ] ; then
|
if [ -d "$dst_dir/usr" ] ; then
|
||||||
for _ in $(seq 1 10) ; do
|
find "$dst_dir/usr" -empty -type d -delete
|
||||||
find "$dst_dir/usr" -empty -type d -exec rmdir {} \; || continue
|
|
||||||
break
|
|
||||||
done
|
|
||||||
rmdir "$dst_dir/usr" || true
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +56,7 @@ filespec="$6"
|
||||||
|
|
||||||
SED="${SED:-sed -e}"
|
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" || {
|
process_filespec "$src_dir" "$dst_dir" "$filespec" || {
|
||||||
echo "process filespec error-ed"
|
echo "process filespec error-ed"
|
||||||
|
@ -75,7 +71,7 @@ fi
|
||||||
|
|
||||||
if [ "$mode" == "sources" ] ; then
|
if [ "$mode" == "sources" ] ; then
|
||||||
# Copy only python source files
|
# 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"
|
delete_empty_dirs "$dst_dir"
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -83,6 +79,8 @@ fi
|
||||||
|
|
||||||
legacy=
|
legacy=
|
||||||
[ "$ver" == "3" ] && legacy="-b"
|
[ "$ver" == "3" ] && legacy="-b"
|
||||||
|
# default max recursion is 10
|
||||||
|
max_recursion_level=20
|
||||||
|
|
||||||
# XXX [So that you won't goof as I did]
|
# XXX [So that you won't goof as I did]
|
||||||
# Note: Yes, I tried to use the -O & -OO flags here.
|
# 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,
|
# So, we just stuck to un-optimized byte-codes,
|
||||||
# which is still way better/faster than running
|
# which is still way better/faster than running
|
||||||
# Python sources all the time.
|
# 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"
|
echo "python -m compileall err-ed"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Delete source files and pyc [ un-optimized bytecode files ]
|
# Delete source files and pyc [ un-optimized bytecode files ]
|
||||||
# We may want to make this optimization thing configurable later, but not sure atm
|
# 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"
|
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