To avoid unwanted files to stay in the PKGBUILD directory after calling
makepkg -g, we use a temporary build directory.

This also prevent modifications of the current user work.

Signed-off-by: Sébastien Luttringer <[email protected]>
---
 contrib/updpkgsums.sh.in | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/contrib/updpkgsums.sh.in b/contrib/updpkgsums.sh.in
index ffea96b..401b8de 100644
--- a/contrib/updpkgsums.sh.in
+++ b/contrib/updpkgsums.sh.in
@@ -21,6 +21,7 @@ shopt -s extglob
 
 declare -r myname='updpkgsums'
 declare -r myver='@PACKAGE_VERSION@'
+declare -i ret=0
 
 usage() {
        printf 'usage: %s [buildfile]\n\n' "$myname"
@@ -71,12 +72,26 @@ if [[ ! -w . ]]; then
        exit 1
 fi
 
+# Generate the new sums
+# Use a temporary build directory to avoid unintented/unwanted side effects on
+# the current user work.
+# Ensure we clean the BUILDDIR before continue
+export BUILDDIR=$(mktemp --directory $myname.XXXXX)
+newsums=$(makepkg -g -p "$buildfile")
+ret=$?
+rm -r -f "$BUILDDIR"
+
+# Check we have generated new checksums before continue
+if (( $ret != 0 )); then
+       echo '==> ERROR: Unable to generate new checksums'
+       exit 1
+fi
+
 {
-       # Generate the new sums and try to unlink the file before writing stdin 
back
-       # into it. This final precaution shouldn't fail based on the previous 
checks,
+       # Unlink the file before writing stdin back into it.
+       # This final precaution shouldn't fail based on the previous checks,
        # but it's better to be extra careful before unlinking files.
-       newsums=$(makepkg -g -p "$buildfile") && rm -f "$buildfile" &&
-       exec awk -v newsums="$newsums" '
+       rm -f "$buildfile" && exec awk -v newsums="$newsums" '
        /^[[:blank:]]*(md|sha)[[:digit:]]+sums=/,/\)[[:blank:]]*(#.*)?$/ {
                if (!w) {
                        print newsums
-- 
1.8.2


Reply via email to