emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#30335: closed ( ‘make uninstall’ exceeds command-


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#30335: closed ( ‘make uninstall’ exceeds command-line length limit)
Date: Sun, 18 Feb 2018 13:14:02 +0000

Your message dated Sun, 18 Feb 2018 14:13:33 +0100
with message-id <address@hidden>
and subject line Re: bug#30335: ‘make uninstall’ exceeds command-line length 
limit
has caused the debbugs.gnu.org bug report #30335,
regarding ‘make uninstall’ exceeds command-line length limit
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
30335: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=30335
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: ‘make uninstall’ exceeds command-line length limit Date: Sat, 03 Feb 2018 15:09:59 +0100 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)
"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.

Attachment: instmany-python.log
Description: Text document

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

--- End Message ---
--- Begin Message --- Subject: Re: bug#30335: ‘make uninstall’ exceeds command-line length limit Date: Sun, 18 Feb 2018 14:13:33 +0100 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)
Mathieu Lirzin <address@hidden> writes:

> "t/instmany-python.sh" test fails for the ‘uninstall’ target.

This is fixed by commit 006c4dfede96091f5bed622c17946cbec067347f

>From 006c4dfede96091f5bed622c17946cbec067347f Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <address@hidden>
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

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]