Re: Commit templates are not readable after 'make install'
Show 32 quoted lines
> Fix permission bits on sources checked out with an overtight umask
>
> Two patches 9907721 (templates/Makefile: don't depend on local umask
> setting, 2008-02-28) and 96cda0b (templates/Makefile: install is
> unnecessary, just use mkdir -p, 2008-08-21) tried to prevent an overtight
> umask the builder/installer might have from screwing over the installation
> procedure, but we forgot there was another source of trouble. If the
> person who checked out the source tree had an overtight umask, it will
> leak out to the built products, which is propagated to the installation
> destination.
>
> templates/Makefile | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git c/templates/Makefile w/templates/Makefile
> index 0722a92..a12c6e2 100644
> --- c/templates/Makefile
> +++ w/templates/Makefile
> @@ -31,9 +31,11 @@ boilerplates.made : $(bpsrc)
> dir=`expr "$$dst" : '\(.*\)/'` && \
> mkdir -p blt/$$dir && \
> case "$$boilerplate" in \
> - *--) ;; \
> - *) cp -p $$boilerplate blt/$$dst ;; \
> - esac || exit; \
> + *--) continue;; \
> + esac && \
> + cp $$boilerplate blt/$$dst && \
> + if test -x "blt/$$dst"; then rx=rx; else rx=r; fi && \
> + chmod a+$$rx "blt/$$dst" || exit; \
> done && \
> date >$@
Since only hooks need to be executable, how about this instead:
diff --git a/templates/Makefile b/templates/Makefile
index 0722a92..80cd000 100644
--- a/templates/Makefile
+++ b/templates/Makefile
@@ -32,7 +32,12 @@ boilerplates.made : $(bpsrc)
mkdir -p blt/$$dir && \
case "$$boilerplate" in \
*--) ;; \
- *) cp -p $$boilerplate blt/$$dst ;; \
+ hooks--*) \
+ cp -p "$$boilerplate" "blt/$$dst" && \
+ chmod a+rx "blt/$$dst";; \
+ *) \
+ cp -p "$$boilerplate" "blt/$$dst" && \
+ chmod a+r "blt/$$dst";; \
esac || exit; \
done && \
date >$@