diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2018-02-04 00:09:31 +0100 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2018-02-18 14:01:58 +0100 |
commit | 006c4dfede96091f5bed622c17946cbec067347f (patch) | |
tree | 02cef7933624146ab2a25b50fd952f5c28562f1c /lib/am | |
parent | 903a80e0def90b88c1e4eead353af126a31a5422 (diff) | |
download | automake-006c4dfede96091f5bed622c17946cbec067347f.tar.gz |
python: Avoid exceeding command-line length limit
With Python implementations following PEP-3174, a large number of files
are installed in the ‘__pycache__’ directory. As a consequence
“t/instmany-python.sh” test was failing due to the
‘uninstall-pythonPYTHON’ target deleting installed files in a single
‘rm’ command. Doing that in multiple steps avoids exceeding the
command-line length limit. This fixes bug#30335.
* lib/am/python.am (uninstall-%DIR%PYTHON): For byte-compiled files
installed in '__pycache__' directory, uninstall them by batch of 40.
[?FIRST?] (am__pep3147_tweak): Adapt.
Diffstat (limited to 'lib/am')
-rw-r--r-- | lib/am/python.am | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/lib/am/python.am b/lib/am/python.am index e29ecfcd0..21e6f842c 100644 --- a/lib/am/python.am +++ b/lib/am/python.am @@ -97,7 +97,7 @@ endif %?INSTALL% if %?INSTALL% ?FIRST?am__pep3147_tweak = \ -?FIRST? sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' +?FIRST? sed -e 's|\.py$$||' -e 's|[^/]*$$|&.*.pyc\n&.*.pyo|' .PHONY uninstall-am: uninstall-%DIR%PYTHON uninstall-%DIR%PYTHON: @@ -108,26 +108,19 @@ uninstall-%DIR%PYTHON: test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(%NDIR%dir)'; \ ## Also remove the .pyc and .pyo byte compiled versions. -## This is somewhat tricky, because for newer pythons we have to take -## PEP-3147 into account. pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ - py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ - echo "$$py_files_pep3147";\ - pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ - pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ - for files in \ - "$$py_files" \ - "$$pyc_files" \ - "$$pyo_files" \ -## Installation of '.py' files is not influenced by PEP-3147, so it -## is correct *not* to have $pyfiles_pep3147 here. - "$$pyc_files_pep3147" \ - "$$pyo_files_pep3147" \ - ; do \ + for files in "$$py_files" "$$pyc_files" "$$pyo_files"; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ +## This is somewhat tricky, because for newer pythons we have to take PEP-3147 +## into account. Avoid exceeding the command-line length limit. + dir='$(DESTDIR)$(%NDIR%dir)/__pycache__'; \ + echo "$$py_files" | $(am__pep3147_tweak) | $(am__base_list) | \ + while read files; do \ + $(am__uninstall_files_from_dir) || st=$$?; \ + done || exit $$?; \ exit $$st endif %?INSTALL% |