From: Wolfgang Bumiller Date: Thu, 19 Dec 2019 17:54:30 +0000 (+0100) Subject: Makefile: bail out on error in for-loops X-Git-Tag: 4.8.1~15^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F205%2Fhead;p=thirdparty%2Fshadow.git Makefile: bail out on error in for-loops `make` runs each line in a shell and bails out on error, however, the shell is not started with `-e`, so commands in `for` loops can fail without the error actually causing `make` to bail out with a failure status. For instance, the following make snippet will end successfully, printing 'SUCCESS', despite the first `chmod` failing: all: touch a b for i in a-missing-file a b; do \ chmod 666 $$i; \ done @echo SUCCESS To prevent wrong paths in install scripts from remaining unnoticed, let's activate `set -e` in the `for` loop subshells. Signed-off-by: Wolfgang Bumiller --- diff --git a/src/Makefile.am b/src/Makefile.am index 7b0aeec8e..f175928a6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -136,17 +136,17 @@ install-am: all-am $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ln -sf newgrp $(DESTDIR)$(ubindir)/sg ln -sf vipw $(DESTDIR)$(usbindir)/vigr - for i in $(suidbins); do \ + set -e; for i in $(suidbins); do \ chmod $(suidperms) $(DESTDIR)$(bindir)/$$i; \ done - for i in $(suidubins); do \ + set -e; for i in $(suidubins); do \ chmod $(suidperms) $(DESTDIR)$(ubindir)/$$i; \ done - for i in $(suidusbins); do \ + set -e; for i in $(suidusbins); do \ chmod $(suidperms) $(DESTDIR)$(usbindir)/$$i; \ done if WITH_TCB - for i in $(shadowsgidubins); do \ + set -e; for i in $(shadowsgidubins); do \ chown root:shadow $(DESTDIR)$(ubindir)/$$i; \ chmod $(sgidperms) $(DESTDIR)$(ubindir)/$$i; \ done