Subject: [PATCH] build: don't make output files read-only

From: Paul Eggert <[email-masked]>
Date: Tue, 17 Jun 2014 12:02:01 -0700

This led to problems, such as the prompt "mv: try to overwrite
'egrep', overriding mode 0555 (r-xr-xr-x)? " during a build.
It can be worked around, but the cure is worse than the disease;
making output files read-only is more trouble than it's worth.
* doc/Makefile.am (grep.1, egrep.1, fgrep.1):
* lib/Makefile.am (colorize.c):
* src/Makefile.am (egrep fgrep):
Don't make output files read-only.  Prefer separate commands to
'&&' when either will do.
---
 doc/Makefile.am | 11 +++++------
 lib/Makefile.am |  2 --
 src/Makefile.am |  5 ++---
 3 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 810e916..9a50434 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -25,11 +25,10 @@ EXTRA_DIST = grep.in.1
 CLEANFILES = grep.1 egrep.1 fgrep.1
 
 grep.1: grep.in.1
-	$(AM_V_GEN)rm -f $@ $@-t
-	$(AM_V_at)sed 's/@''VERSION@/$(VERSION)/' \
-	  < $(srcdir)/grep.in.1 > $@-t && chmod 444 $@-t && mv $@-t $@
+	$(AM_V_GEN)sed 's/@''VERSION@/$(VERSION)/' < $(srcdir)/grep.in.1 > $@-t
+	$(AM_V_at)mv $@-t $@
 
 egrep.1 fgrep.1: Makefile.am
-	$(AM_V_GEN)rm -f $@ $@-t
-	$(AM_V_at)inst=`echo grep | sed '$(transform)'`.1 \
-	  && echo ".so man1/$$inst" > $@-t && chmod 444 $@-t && mv $@-t $@
+	$(AM_V_GEN)inst=`echo grep | sed '$(transform)'`.1 \
+	  && echo ".so man1/$$inst" > $@-t
+	$(AM_V_at)mv $@-t $@
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 9bd7b0d..79d582b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -34,9 +34,7 @@ libgreputils_a_SOURCES += colorize.h
 EXTRA_DIST += colorize-posix.c colorize-w32.c
 CLEANFILES += colorize.c
 colorize.c:
-	$(AM_V_GEN)rm -f $@-t
 	$(AM_V_at)echo '#include <$(COLORIZE_SOURCE)>' >$@-t
-	$(AM_V_at)chmod a=rx $@-t
 	$(AM_V_at)mv $@-t $@
 
 libgreputils_a_LIBADD += $(LIBOBJS) $(ALLOCA)
diff --git a/src/Makefile.am b/src/Makefile.am
index 0697c63..11acdb1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -45,8 +45,7 @@ AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib
 EXTRA_DIST = dosbuf.c egrep.sh
 
 egrep fgrep: egrep.sh Makefile
-	$(AM_V_GEN)rm -f $@-t
-	$(AM_V_at)grep=`echo grep | sed -e '$(transform)'` &&		\
+	$(AM_V_GEN)grep=`echo grep | sed -e '$(transform)'` &&		\
 	case $@ in egrep) option=-E;; fgrep) option=-F;; esac &&	\
 	shell_does_substrings='set x/y && d=$${1%/*} && test "$$d" = x' && \
 	if $(SHELL) -c "$$shell_does_substrings" 2>/dev/null; then	\
@@ -58,7 +57,7 @@ egrep fgrep: egrep.sh Makefile
 	    -e "$$edit_substring"					\
 	    -e "s|[@]grep@|$$grep|g"					\
 	    -e "s|[@]option@|$$option|g" <$(srcdir)/egrep.sh >$@-t
-	$(AM_V_at)chmod a=rx $@-t
+	$(AM_V_at)chmod +x $@-t
 	$(AM_V_at)mv $@-t $@
 
 CLEANFILES = egrep fgrep *-t
-- 
1.9.3