Browse Source

Merge pull request #8584 from jefferyto/python-compileall-recursion-level

python,python3: Increase max recursion level when generating bytecode
lilik-openwrt-22.03
Rosen Penev 5 years ago
committed by GitHub
parent
commit
9f15edf744
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 9 deletions
  1. +7
    -9
      lang/python/python-package-install.sh
  2. +33
    -0
      lang/python/python/patches/021-compileall-add-recursion-option.patch

+ 7
- 9
lang/python/python-package-install.sh View File

@ -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"


+ 33
- 0
lang/python/python/patches/021-compileall-add-recursion-option.patch View File

@ -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…
Cancel
Save