* Aubrey Jaffer wrote on Sat, Feb 20, 2010 at 11:16:01PM CET: > I took a look at guile-1.9.7/doc/ref/Makefile for an example > (appended). This is beyond my scripting knowledge; "sed 's|.|.|g'" > looks like a no-op to me.
On the left-hand side of a sed 's' command, there is a regex, and a period is a regular expression that matches a single character. On the right-hand side, a period is just an ordinary character. Thus, the command replaces all characters by periods. This string of periods is then used in a later sed command to strip off '$(srcdir)/' strings from file names. > It is doing "test -f" like your example. If I have an old build of > guile.info and update guile.texi, then the "test -f" line looks to me > like it would install the old guile.info; that seems wrong. What do you conclude that from? The file is looked for in the build directory first, and only then in the source directory. If you see some demonstrably-wrong behavior with automake-generated code, please write a bug report to bug-automake with a description how to reproduce it; thanks. > INFO_DEPS = $(srcdir)/guile.info > ... > install-info-am: $(INFO_DEPS) > @$(NORMAL_INSTALL) > test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" > @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ > list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ > for file in $$list; do \ > case $$file in \ > $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ > esac; \ > if test -f $$file; then d=.; else d=$(srcdir); fi; \ > file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ > for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ > $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ > if test -f $$ifile; then \ > echo "$$ifile"; \ > else : ; fi; \ > done; \ > done | $(am__base_list) | \ > while read files; do \ > echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ > $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done [...] Cheers, Ralf
