[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length l
From: |
Stefano Lattarini |
Subject: |
[Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files |
Date: |
Fri, 13 Jul 2012 12:19:21 +0200 |
* lib/am/distdir.am (am.mkdir-for-dist, am.write-list-of-distfiles): New
internal functions.
(distdir): Using them and the 'am.xargs-map' function, in a way that
should prevent failures due to excessive command line lengths.
With this, the tests 'dist-many.sh' and 'dist-many2.sh' pass on the
systems where we verified they were previously failing.
Signed-off-by: Stefano Lattarini <address@hidden>
---
lib/am/distdir.am | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index 371a57d..fd2c39d 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -69,6 +69,12 @@ am__dist_parent_dirs = \
$(call am__memoize,am__dist_parent_dirs,$(strip $(sort \
$(filter-out ., $(patsubst ./%,%,$(dir $(am__dist_files_cooked)))))))
+am.mkdir-for-dist = \
+ @$(MKDIR_P) $(patsubst %,"$(distdir)"/%,$1)$(am__newline)
+am.write-list-of-distfiles = \
+ @lst='$1'; for x in $$lst; do echo $$x; done \
+ >> $(am__dir)/address@hidden(am__newline)
+
if %?TOPDIR_P%
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -127,7 +133,7 @@ if %?SUBDIRS%
AM_RECURSIVE_TARGETS += distdir
endif %?SUBDIRS%
-distdir: $(am__dist_files)
+distdir: $(am__dist_files) | $(am__dir)
##
## For Gnits users, this is pretty handy. Look at 15 lines
## in case some explanatory text is desirable.
@@ -149,16 +155,19 @@ if %?TOPDIR_P%
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
endif %?TOPDIR_P%
-## Make the subdirectories for the files.
- @$(if $(am__dist_parent_dirs),\
- $(MKDIR_P) $(patsubst %,"$(distdir)"/%,$(am__dist_parent_dirs)))
+## Make the subdirectories for the files, avoiding to exceed command
+## line length limitations.
+ $(call am.xargs-map,am.mkdir-for-dist,$(am__dist_parent_dirs))
## Install the files and directories, applying a "VPATH rewrite"
## by hand where needed.
## To get the files in the distribution directory, use 'cp', not 'ln'.
## There are situations in which 'ln' can fail. For instance a file to
## distribute could actually be a cross-filesystem symlink -- this can
## easily happen if "gettextize" was run on the distribution.
- @lst='$(am__dist_files_cooked)'; for file in $$lst; do \
+ @rm -f $(am__dir)/address@hidden
+ $(call am.xargs-map,am.write-list-of-distfiles, \
+ $(am__dist_files_cooked))
+ @while read file; do \
## Always look for the file or directory to distribute in the build
## directory first, in VPATH spirit.
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
@@ -191,7 +200,7 @@ endif %?TOPDIR_P%
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
- done
+ done < $(am__dir)/address@hidden
##
## Test for directory existence here because previous automake
## invocation might have created some directories. Note that we
--
1.7.9.5
- [Automake-NG] [PATCH 0/3] Distribute many files without hitting command line length limits, Stefano Lattarini, 2012/07/13
- [Automake-NG] [PATCH 2/3] [ng] coverage: distributing lots of files, Stefano Lattarini, 2012/07/13
- [Automake-NG] [PATCH 1/3] [ng] dist: memoize some internal variables, Stefano Lattarini, 2012/07/13
- [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files,
Stefano Lattarini <=
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Akim Demaille, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Stefano Lattarini, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Eric Blake, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Stefano Lattarini, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Eric Blake, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Stefano Lattarini, 2012/07/14
- Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files, Akim Demaille, 2012/07/18
Re: [Automake-NG] [PATCH 0/3] Distribute many files without hitting command line length limits, Stefano Lattarini, 2012/07/16