Mercurial > hg > octave-nkf > gnulib-hg
changeset 7321:3bf1b669d1e1
Rewrite all file names at once.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 18 Sep 2006 13:03:14 +0000 |
parents | 9349ee4e633c |
children | 46d98b687a87 |
files | ChangeLog gnulib-tool |
diffstat | 2 files changed, 64 insertions(+), 53 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-09-17 Bruno Haible <bruno@clisp.org> + + * gnulib-tool (func_create_testdir): Rewrite all files at once. + +2006-09-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + Speed up by a factor of 1.13. + * gnulib-tool (func_import): Rewrite all old_files at once; likewise + for new_files, and the input to func_add_or_update. + 2006-09-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Speed up by a factor of 1.61.
--- a/gnulib-tool +++ b/gnulib-tool @@ -22,7 +22,7 @@ progname=$0 package=gnulib -cvsdatestamp='$Date: 2006-09-18 12:55:35 $' +cvsdatestamp='$Date: 2006-09-18 13:03:14 $' last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'` version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'` @@ -1546,28 +1546,30 @@ # Copy files or make symbolic links. Remove obsolete files. delimiter=' ' - for f in $old_files; do - case "$f" in - build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;; - doc/*) g=`echo "$f" | sed -e "s,^doc/,$cached_docbase/,"` ;; - lib/*) g=`echo "$f" | sed -e "s,^lib/,$cached_sourcebase/,"` ;; - m4/*) g=`echo "$f" | sed -e "s,^m4/,$cached_m4base/,"` ;; - tests/*) g=`echo "$f" | sed -e "s,^tests/,$cached_testsbase/,"` ;; - *) g="$f" ;; - esac - echo "$g""$delimiter""$f" - done | LC_ALL=C sort > "$tmp"/old-files - for f in $new_files; do - case "$f" in - build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;; - doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;; - lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;; - m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;; - tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;; - *) g="$f" ;; - esac - echo "$g""$delimiter""$f" - done | LC_ALL=C sort > "$tmp"/new-files + sed_rewrite_old_files="\ + s,^build-aux/,$auxdir/, + s,^doc/,$cached_docbase/, + s,^lib/,$cached_sourcebase/, + s,^m4/,$cached_m4base/, + s,^tests/,$cached_testsbase/," + sed_rewrite_new_files="\ + s,^build-aux/,$auxdir/, + s,^doc/,$docbase/, + s,^lib/,$sourcebase/, + s,^m4/,$m4base/, + s,^tests/,$testsbase/," + # Construct a table with 2 columns: rewritten-file-name original-file-name, + # representing the files according to the last gnulib-tool invocation. + for f in $old_files; do echo $f; done \ + | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_old_files" \ + | LC_ALL=C sort \ + > "$tmp"/old-files + # Construct a table with 2 columns: rewritten-file-name original-file-name, + # representing the files after this gnulib-tool invocation. + for f in $new_files; do echo $f; done \ + | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" \ + | LC_ALL=C sort \ + > "$tmp"/new-files # First the files that are in old-files, but not in new-files: sed_take_first_column='s,'"$delimiter"'.*,,' for g in `LC_ALL=C join -t"$delimiter" -v1 "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_first_column"`; do @@ -1582,7 +1584,10 @@ fi done # func_add_or_update handles a file that ought to be present afterwards. - # Uses parameters f, g, already_present. + # Uses parameters + # - f the original file name + # - g the rewritten file name + # - already_present nonempty if the file already exists, empty otherwise func_add_or_update () { func_dest_tmpfilename "$g" @@ -1644,30 +1649,20 @@ # Then the files that are in new-files, but not in old-files: sed_take_last_column='s,^.*'"$delimiter"',,' already_present= - for f in `LC_ALL=C join -t"$delimiter" -v2 "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_last_column"`; do - case "$f" in - build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;; - doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;; - lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;; - m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;; - tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;; - *) g="$f" ;; - esac + LC_ALL=C join -t"$delimiter" -v2 "$tmp"/old-files "$tmp"/new-files \ + | sed -e "$sed_take_last_column" \ + | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/added-files + while read g f; do func_add_or_update - done + done < "$tmp"/added-files # Then the files that are in new-files and in old-files: already_present=true - for f in `LC_ALL=C join -t"$delimiter" "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_last_column"`; do - case "$f" in - build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;; - doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;; - lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;; - m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;; - tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;; - *) g="$f" ;; - esac + LC_ALL=C join -t"$delimiter" "$tmp"/old-files "$tmp"/new-files \ + | sed -e "$sed_take_last_column" \ + | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/kept-files + while read g f; do func_add_or_update - done + done < "$tmp"/kept-files # Command-line invocation printed in a comment in generated gnulib-cache.m4. actioncmd="gnulib-tool --import" @@ -2016,6 +2011,7 @@ # Subdirectory names. sourcebase=gllib m4base=glm4 + docbase=gldoc testsbase=gltests # Determine final module list. @@ -2035,6 +2031,7 @@ for d in `echo "$files" | sed -n -e 's,^\(.*\)/[^/]*,\1,p'`; do case "$d" in build-aux) mkdir -p "$testdir/$auxdir" ;; + doc) mkdir -p "$testdir/$docbase" ;; lib) mkdir -p "$testdir/$sourcebase" ;; m4) mkdir -p "$testdir/$m4base" ;; tests) mkdir -p "$testdir/$testsbase" ;; @@ -2043,15 +2040,19 @@ done # Copy files or make symbolic links. - for f in $files; do + delimiter=' ' + sed_rewrite_files="\ + s,^build-aux/,$auxdir/, + s,^doc/,$docbase/, + s,^lib/,$sourcebase/, + s,^m4/,$m4base/, + s,^tests/,$testsbase/," + for f in $files; do echo $f; done \ + | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_files" \ + | LC_ALL=C sort \ + > "$tmp"/files + while read g f; do func_lookup_file "$f" - case "$f" in - build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;; - lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;; - m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;; - tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;; - *) g="$f" ;; - esac if test -n "$lookedup_tmp"; then cp -p "$lookedup_file" "$testdir/$g" else @@ -2062,7 +2063,7 @@ ln -s "$lookedup_file" "$testdir/$g" fi fi - done + done < "$tmp"/files # Create $sourcebase/Makefile.am. mkdir -p "$testdir/$sourcebase"