From: Paul Eggert Date: Mon, 26 Aug 2019 01:51:26 +0000 (-0700) Subject: install-sh: support -s with read-only source X-Git-Tag: v1.16.2~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d89a1aadedd26b8caf97f7202766706b2480f524;p=thirdparty%2Fautomake.git install-sh: support -s with read-only source Problem reported by Karl Berry in: https://lists.gnu.org/r/bug-gnulib/2019-08/msg00067.html * lib/install-sh: If -s is given, create the temporary file with $cp_umask so that ‘strip’ can write to it. --- diff --git a/lib/install-sh b/lib/install-sh index 8175c640f..20d8b2eae 100755 --- a/lib/install-sh +++ b/lib/install-sh @@ -451,7 +451,18 @@ do trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. #