delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/11/15/02:38:20

X-Spam-Check-By: sourceware.org
Message-ID: <455AC3CA.7010705@cwilson.fastmail.fm>
Date: Wed, 15 Nov 2006 02:37:46 -0500
From: Charles Wilson <cygwin AT cwilson DOT fastmail DOT fm>
User-Agent: Thunderbird 1.5.0.8 (Windows/20061025)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: [patch] cygport, find ... -exec
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--------------040007050306090306030901
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Usually, the 'find ... -exec cmd ...' idiom makes a lot of sense -- it's 
faster, one fewer forks (maybe MANY fewer), etc.

However, you sometimes run into troubles with extremely long filelists. 
As I did with ncurses (1183 files in the build/ directory) -- and I got 
a 'too many files' error from touch resulting from this command in 
__prepinstalldirs:

find ${B} -type f -exec touch -t $(date +%Y%m%d%H%M.%S) '{}' +;


The attached patch reverts to using -print0 | xargs -0 instead of -exec.

--
Chuck

--------------040007050306090306030901
Content-Type: text/plain;
 name="too-many-files.patch2"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="too-many-files.patch2"

Index: bin/cygport.in
===================================================================
RCS file: /cvsroot/cygwin-ports/cygport/bin/cygport.in,v
retrieving revision 1.29
diff -u -r1.29 cygport.in
--- bin/cygport.in	30 Oct 2006 06:09:47 -0000	1.29
+++ bin/cygport.in	15 Nov 2006 07:28:09 -0000
@@ -873,7 +873,7 @@
 
 	# circumvent pointless libtool relinking during install
 	find ${B} -name '*.la' -exec sed -i -e 's!^relink_command=.*!!' '{}' +;
-	find ${B} -type f -exec touch -t $(date +%Y%m%d%H%M.%S) '{}' +;
+	find ${B} -type f -print0 | xargs -0 touch -t $(date +%Y%m%d%H%M.%S)
 }
 
 # run 'make install'


--------------040007050306090306030901
Content-Type: text/plain; charset=us-ascii

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
--------------040007050306090306030901--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019