X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=gnulib-tool;h=ed71b1c3076bee2fd7d88674eb8c27914e87913e;hb=81040496d5e98d7913ea385763c3e4b4e85d74f5;hp=65de980846992110ff191e1b9a09fc8a4fa25e70;hpb=9098fb40dd5020ab216d9b761991a10ed51bd850;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index 65de98084..ed71b1c30 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1737,7 +1737,7 @@ func_emit_lib_Makefile_am () echo "AM_CPPFLAGS =" fi echo - if LC_ALL=C grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then + if LC_ALL=C grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *+\{0,1\}= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then # One of the snippets already specifies an installation location for the # library. Don't confuse automake by saying it should not be installed. : @@ -2068,10 +2068,10 @@ func_emit_initmacro_end () # the configure.ac resides; if it is run from a different directory, the # check is skipped. echo " m4_ifval(${macro_prefix_arg}_LIBSOURCES_LIST, [" - echo " m4_syscmd([test ! -d ]${macro_prefix_arg}_LIBSOURCES_DIR[ ||" + echo " m4_syscmd([test ! -d ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[ ||" echo " for gl_file in ]${macro_prefix_arg}_LIBSOURCES_LIST[ ; do" - echo " if test ! -r ]${macro_prefix_arg}_LIBSOURCES_DIR[/\$gl_file ; then" - echo " echo \"missing file ]${macro_prefix_arg}_LIBSOURCES_DIR[/\$gl_file\" >&2" + echo " if test ! -r ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[/\$gl_file ; then" + echo " echo \"missing file ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[/\$gl_file\" >&2" echo " exit 1" echo " fi" echo " done])dnl" @@ -2130,7 +2130,7 @@ func_emit_initmacro_done () echo " m4_foreach([_gl_NAME], [\$1], [" echo " m4_if(_gl_NAME, [alloca.c], [], [" echo " m4_define([${macro_prefix_arg}_LIBSOURCES_DIR], [$sourcebase_arg])" - echo " m4_append_uniq([${macro_prefix_arg}_LIBSOURCES_LIST], _gl_NAME, [ ])" + echo " m4_append([${macro_prefix_arg}_LIBSOURCES_LIST], _gl_NAME, [ ])" echo " ])" echo " ])" echo "])" @@ -2197,6 +2197,13 @@ func_import () s,^.*gl_LOCAL_DIR([[ ]*\([^])]*\).*$,cached_local_gnulib_dir="\1",p } /gl_MODULES(/ { + ta + :a + s/)/)/ + tb + N + ba + :b s,^.*gl_MODULES([[ ]*\([^])]*\).*$,cached_specified_modules="\1",p } /gl_AVOID(/ { @@ -3004,7 +3011,9 @@ func_import () esac ;; esac echo "gl_LOCAL_DIR([$relative_local_gnulib_dir])" - echo "gl_MODULES(["`echo $specified_modules`"])" + echo "gl_MODULES([" + echo "$specified_modules" | sed 's/^/ /g' + echo "])" echo "gl_AVOID([$avoidlist])" echo "gl_SOURCE_BASE([$sourcebase])" echo "gl_M4_BASE([$m4base])" @@ -3240,6 +3249,8 @@ func_import () # Update the .cvsignore and .gitignore files. { echo "$added_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|A|\1,' echo "$removed_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|R|\1,' + # Treat gnulib-comp.m4 like an added file, even if it already existed. + echo "$m4base/|A|gnulib-comp.m4" } | LC_ALL=C sort -t'|' -k1,1 > "$tmp"/fileset-changes { # Rearrange file descriptors. Needed because "while ... done < ..." # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh. @@ -3247,9 +3258,20 @@ func_import () func_update_ignorelist () { ignore="$1" + if test "$ignore" = .gitignore; then + # In a .gitignore file, "foo" applies to the current directory and all + # subdirectories, whereas "/foo" applies to the current directory only. + anchor='/' + escaped_anchor='\/' + doubly_escaped_anchor='\\/' + else + anchor='' + escaped_anchor='' + doubly_escaped_anchor='' + fi if test -f "$destdir/$dir$ignore"; then if test -n "$dir_added" || test -n "$dir_removed"; then - LC_ALL=C sort "$destdir/$dir$ignore" > "$tmp"/ignore + sed -e "s|^$anchor||" < "$destdir/$dir$ignore" | LC_ALL=C sort > "$tmp"/ignore echo "$dir_added" | sed -e '/^$/d' | LC_ALL=C sort -u \ | LC_ALL=C join -v 2 "$tmp"/ignore - > "$tmp"/ignore-added echo "$dir_removed" | sed -e '/^$/d' | LC_ALL=C sort -u \ @@ -3258,9 +3280,12 @@ func_import () if $doit; then echo "Updating $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)" mv -f "$destdir/$dir$ignore" "$destdir/$dir$ignore"~ - sed -e 's,^,/^,' -e 's,$,\$/d,' < "$tmp"/ignore-removed > "$tmp"/sed-ignore-removed - cat "$destdir/$dir$ignore"~ "$tmp"/ignore-added \ - | sed -f "$tmp"/sed-ignore-removed \ + { sed -e 's,^,/^,' -e 's,$,\$/d,' < "$tmp"/ignore-removed + if test -n "$anchor"; then sed -e "s,^,/^${doubly_escaped_anchor}," -e 's,$,\$/d,' < "$tmp"/ignore-removed; fi + } > "$tmp"/sed-ignore-removed + { cat "$destdir/$dir$ignore"~ + sed -e "s|^|$anchor|" < "$tmp"/ignore-added + } | sed -f "$tmp"/sed-ignore-removed \ > "$destdir/$dir$ignore" else echo "Update $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)" @@ -3277,7 +3302,7 @@ func_import () # Automake generates Makefile rules that create .dirstamp files. echo ".dirstamp" fi - echo "$dir_added" | sed -e '/^$/d' | LC_ALL=C sort -u + echo "$dir_added" | sed -e '/^$/d' -e "s|^|$anchor|" | LC_ALL=C sort -u } > "$destdir/$dir$ignore" else echo "Create $destdir/$dir$ignore" @@ -3401,6 +3426,18 @@ func_import () fi fi echo " - mention \"-I ${m4base}\" in ACLOCAL_AMFLAGS in Makefile.am," + { + # Find the first parent directory of $m4base that contains a Makefile.am. + sed_last='s,^.*/\([^/][^/]*\)//*$,\1/, +s,//*$,/,' + sed_butlast='s,[^/][^/]*//*$,,' + dir1="${m4base}/"; dir2="" + while test -n "$dir1" && test ! -f "${destdir}/${dir1}Makefile.am"; do + dir2=`echo "$dir1" | sed -e "$sed_last"`"$dir2" + dir1=`echo "$dir1" | sed -e "$sed_butlast"` + done + echo " - mention ${dir2}gnulib-cache.m4 in EXTRA_DIST in ${dir1}Makefile.am." + } echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after AC_PROG_CC," echo " - invoke ${macro_prefix}_INIT in $configure_ac." }