Package: automake;
Reported by: Mathieu Lirzin <mthl <at> gnu.org>
Date: Sat, 3 Feb 2018 14:11:02 UTC
Severity: normal
Tags: fixed
Done: Mathieu Lirzin <mthl <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Mathieu Lirzin <mthl <at> gnu.org> Subject: bug#30335: closed (Re: bug#30335: ‘make uninstall’ exceeds command-line length limit) Date: Sun, 18 Feb 2018 13:14:05 +0000
[Message part 1 (text/plain, inline)]
Your bug report #30335: ‘make uninstall’ exceeds command-line length limit which was filed against the automake package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 30335 <at> debbugs.gnu.org. -- 30335: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=30335 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Mathieu Lirzin <mthl <at> gnu.org> To: 30335-done <at> debbugs.gnu.org Subject: Re: bug#30335: ‘make uninstall’ exceeds command-line length limit Date: Sun, 18 Feb 2018 14:13:33 +0100[Message part 3 (text/plain, inline)]Mathieu Lirzin <mthl <at> gnu.org> writes: > "t/instmany-python.sh" test fails for the ‘uninstall’ target. This is fixed by commit 006c4dfede96091f5bed622c17946cbec067347f[0001-python-Avoid-exceeding-command-line-length-limit.patch (text/x-patch, inline)]From 006c4dfede96091f5bed622c17946cbec067347f Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin <mthl <at> gnu.org> Date: Sun, 4 Feb 2018 00:09:31 +0100 Subject: [PATCH] python: Avoid exceeding command-line length limit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- lib/am/python.am | 25 +++++++++---------------- 1 file 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% -- 2.16.1[Message part 5 (text/plain, inline)]-- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37
[Message part 6 (message/rfc822, inline)]
From: Mathieu Lirzin <mthl <at> gnu.org> To: bug-automake <at> gnu.org Subject: ‘make uninstall’ exceeds command-line length limit Date: Sat, 03 Feb 2018 15:09:59 +0100[Message part 7 (text/plain, inline)]"t/instmany-python.sh" test fails for the ‘uninstall’ target. Here is the failing part which runs a 6558 characters command: --8<---------------cut here---------------start------------->8--- ( cd '/home/mthl/src/automake/t/instmany-python.dir/inst/lib/python3.5/site-packages' && rm -f __pycache__/npython1.cpython-35.opt-1.pyc __pycache__/npython1.cpython-35.pyc __pycache__/npython2.cpython-35.opt-1.pyc __pycache__/npython2.cpython-35.pyc __pycache__/npython3.cpython-35.opt-1.pyc __pycache__/npython3.cpython-35.pyc __pycache__/npython4.cpython-35.opt-1.pyc __pycache__/npython4.cpython-35.pyc __pycache__/npython5.cpython-35.opt-1.pyc __pycache__/npython5.cpython-35.pyc __pycache__/npython6.cpython-35.opt-1.pyc __pycache__/npython6.cpython-35.pyc __pycache__/npython7.cpython-35.opt-1.pyc __pycache__/npython7.cpython-35.pyc __pycache__/npython8.cpython-35.opt-1.pyc __pycache__/npython8.cpython-35.pyc __pycache__/npython9.cpython-35.opt-1.pyc __pycache__/npython9.cpython-35.pyc __pycache__/npython10.cpython-35.opt-1.pyc __pycache__/npython10.cpython-35.pyc __pycache__/npython11.cpython-35.opt-1.pyc __pycache__/npython11.cpython-35.pyc __pycache__/npython12.cpython-35.opt-1.pyc __pycache__/npython12.cpython-35.pyc __pycache__/npython13.cpython-35.opt-1.pyc __pycache__/npython13.cpython-35.pyc __pycache__/npython14.cpython-35.opt-1.pyc __pycache__/npython14.cpython-35.pyc __pycache__/npython15.cpython-35.opt-1.pyc __pycache__/npython15.cpython-35.pyc __pycache__/npython16.cpython-35.opt-1.pyc __pycache__/npython16.cpython-35.pyc __pycache__/npython17.cpython-35.opt-1.pyc __pycache__/npython17.cpython-35.pyc __pycache__/npython18.cpython-35.opt-1.pyc __pycache__/npython18.cpython-35.pyc __pycache__/npython19.cpython-35.opt-1.pyc __pycache__/npython19.cpython-35.pyc __pycache__/npython20.cpython-35.opt-1.pyc __pycache__/npython20.cpython-35.pyc __pycache__/npython21.cpython-35.opt-1.pyc __pycache__/npython21.cpython-35.pyc __pycache__/npython22.cpython-35.opt-1.pyc __pycache__/npython22.cpython-35.pyc __pycache__/npython23.cpython-35.opt-1.pyc __pycache__/npython23.cpython-35.pyc __pycache__/npython24.cpython-35.opt-1.pyc __pycache__/npython24.cpython-35.pyc __pycache__/npython25.cpython-35.opt-1.pyc __pycache__/npython25.cpython-35.pyc __pycache__/npython26.cpython-35.opt-1.pyc __pycache__/npython26.cpython-35.pyc __pycache__/npython27.cpython-35.opt-1.pyc __pycache__/npython27.cpython-35.pyc __pycache__/npython28.cpython-35.opt-1.pyc __pycache__/npython28.cpython-35.pyc __pycache__/npython29.cpython-35.opt-1.pyc __pycache__/npython29.cpython-35.pyc __pycache__/npython30.cpython-35.opt-1.pyc __pycache__/npython30.cpython-35.pyc __pycache__/npython31.cpython-35.opt-1.pyc __pycache__/npython31.cpython-35.pyc __pycache__/npython32.cpython-35.opt-1.pyc __pycache__/npython32.cpython-35.pyc __pycache__/npython33.cpython-35.opt-1.pyc __pycache__/npython33.cpython-35.pyc __pycache__/npython34.cpython-35.opt-1.pyc __pycache__/npython34.cpython-35.pyc __pycache__/npython35.cpython-35.opt-1.pyc __pycache__/npython35.cpython-35.pyc __pycache__/npython36.cpython-35.opt-1.pyc __pycache__/npython36.cpython-35.pyc __pycache__/npython37.cpython-35.opt-1.pyc __pycache__/npython37.cpython-35.pyc __pycache__/npython38.cpython-35.opt-1.pyc __pycache__/npython38.cpython-35.pyc __pycache__/npython39.cpython-35.opt-1.pyc __pycache__/npython39.cpython-35.pyc __pycache__/npython40.cpython-35.opt-1.pyc __pycache__/npython40.cpython-35.pyc __pycache__/npython41.cpython-35.opt-1.pyc __pycache__/npython41.cpython-35.pyc __pycache__/npython42.cpython-35.opt-1.pyc __pycache__/npython42.cpython-35.pyc __pycache__/npython43.cpython-35.opt-1.pyc __pycache__/npython43.cpython-35.pyc __pycache__/npython44.cpython-35.opt-1.pyc __pycache__/npython44.cpython-35.pyc __pycache__/npython45.cpython-35.opt-1.pyc __pycache__/npython45.cpython-35.pyc __pycache__/npython46.cpython-35.opt-1.pyc __pycache__/npython46.cpython-35.pyc __pycache__/npython47.cpython-35.opt-1.pyc __pycache__/npython47.cpython-35.pyc __pycache__/npython48.cpython-35.opt-1.pyc __pycache__/npython48.cpython-35.pyc __pycache__/npython49.cpython-35.opt-1.pyc __pycache__/npython49.cpython-35.pyc __pycache__/npython50.cpython-35.opt-1.pyc __pycache__/npython50.cpython-35.pyc __pycache__/npython51.cpython-35.opt-1.pyc __pycache__/npython51.cpython-35.pyc __pycache__/npython52.cpython-35.opt-1.pyc __pycache__/npython52.cpython-35.pyc __pycache__/npython53.cpython-35.opt-1.pyc __pycache__/npython53.cpython-35.pyc __pycache__/npython54.cpython-35.opt-1.pyc __pycache__/npython54.cpython-35.pyc __pycache__/npython55.cpython-35.opt-1.pyc __pycache__/npython55.cpython-35.pyc __pycache__/npython56.cpython-35.opt-1.pyc __pycache__/npython56.cpython-35.pyc __pycache__/npython57.cpython-35.opt-1.pyc __pycache__/npython57.cpython-35.pyc __pycache__/npython58.cpython-35.opt-1.pyc __pycache__/npython58.cpython-35.pyc __pycache__/npython59.cpython-35.opt-1.pyc __pycache__/npython59.cpython-35.pyc __pycache__/npython60.cpython-35.opt-1.pyc __pycache__/npython60.cpython-35.pyc __pycache__/npython61.cpython-35.opt-1.pyc __pycache__/npython61.cpython-35.pyc __pycache__/npython62.cpython-35.opt-1.pyc __pycache__/npython62.cpython-35.pyc __pycache__/npython63.cpython-35.opt-1.pyc __pycache__/npython63.cpython-35.pyc __pycache__/npython64.cpython-35.opt-1.pyc __pycache__/npython64.cpython-35.pyc __pycache__/npython65.cpython-35.opt-1.pyc __pycache__/npython65.cpython-35.pyc __pycache__/npython66.cpython-35.opt-1.pyc __pycache__/npython66.cpython-35.pyc __pycache__/npython67.cpython-35.opt-1.pyc __pycache__/npython67.cpython-35.pyc __pycache__/npython68.cpython-35.opt-1.pyc __pycache__/npython68.cpython-35.pyc __pycache__/npython69.cpython-35.opt-1.pyc __pycache__/npython69.cpython-35.pyc __pycache__/npython70.cpython-35.opt-1.pyc __pycache__/npython70.cpython-35.pyc __pycache__/npython71.cpython-35.opt-1.pyc __pycache__/npython71.cpython-35.pyc __pycache__/npython72.cpython-35.opt-1.pyc __pycache__/npython72.cpython-35.pyc __pycache__/npython73.cpython-35.opt-1.pyc __pycache__/npython73.cpython-35.pyc __pycache__/npython74.cpython-35.opt-1.pyc __pycache__/npython74.cpython-35.pyc __pycache__/npython75.cpython-35.opt-1.pyc __pycache__/npython75.cpython-35.pyc __pycache__/npython76.cpython-35.opt-1.pyc __pycache__/npython76.cpython-35.pyc __pycache__/npython77.cpython-35.opt-1.pyc __pycache__/npython77.cpython-35.pyc __pycache__/npython78.cpython-35.opt-1.pyc __pycache__/npython78.cpython-35.pyc __pycache__/npython79.cpython-35.opt-1.pyc __pycache__/npython79.cpython-35.pyc __pycache__/npython80.cpython-35.opt-1.pyc __pycache__/npython80.cpython-35.pyc __pycache__/npython81.cpython-35.opt-1.pyc __pycache__/npython81.cpython-35.pyc ) /home/mthl/src/automake/t/instmany-python.dir/x-bin/rm: safe command line limit of 2500 characters exceeded --8<---------------cut here---------------end--------------->8--- See the attached log for more details.[instmany-python.log (text/plain, attachment)][Message part 9 (text/plain, inline)]-- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.