updpkgsums: retain permissions on rewritten PKGBUILD
This could have been easy with something like chown's --reference flag, but this is GNU specific. Instead, just truncate and rewrite the file. Our exit trap cleans up after us. Fixes: https://bugs.archlinux.org/task/43272 Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
39fe2d0e39
commit
ca5a2771ae
1 changed files with 3 additions and 5 deletions
|
@ -82,9 +82,6 @@ fi
|
||||||
export BUILDDIR=$(mktemp -d --tmpdir updpkgsums.XXXXXX)
|
export BUILDDIR=$(mktemp -d --tmpdir updpkgsums.XXXXXX)
|
||||||
newbuildfile=$(mktemp --tmpdir updpkgsums.XXXXXX)
|
newbuildfile=$(mktemp --tmpdir updpkgsums.XXXXXX)
|
||||||
|
|
||||||
# In case the eventual replacement fails, we don't want to leave behind
|
|
||||||
# $newbuildfile as garbage in $TMPDIR. This fails silently if the replacement
|
|
||||||
# succeeds.
|
|
||||||
trap "rm -rf '$BUILDDIR' '$newbuildfile'" EXIT
|
trap "rm -rf '$BUILDDIR' '$newbuildfile'" EXIT
|
||||||
newsums=$(makepkg -g -p "$buildfile") || die 'Failed to generate new checksums'
|
newsums=$(makepkg -g -p "$buildfile") || die 'Failed to generate new checksums'
|
||||||
awk -v newsums="$newsums" '
|
awk -v newsums="$newsums" '
|
||||||
|
@ -100,8 +97,9 @@ awk -v newsums="$newsums" '
|
||||||
END { if (!w) print newsums }
|
END { if (!w) print newsums }
|
||||||
' "$buildfile" > "$newbuildfile" || die 'Failed to write new PKGBUILD'
|
' "$buildfile" > "$newbuildfile" || die 'Failed to write new PKGBUILD'
|
||||||
|
|
||||||
# Replace the original buildfile.
|
# Rewrite the original buildfile. Use cat instead of mv/cp to preserve
|
||||||
if ! mv -- "$newbuildfile" "$buildfile"; then
|
# permissions implicitly.
|
||||||
|
if ! cat -- "$newbuildfile" >"$buildfile"; then
|
||||||
die "Failed to update %s. The file has not been modified." "$buildfile"
|
die "Failed to update %s. The file has not been modified." "$buildfile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue