[pacman-dev] [PATCH 2/3] makepkg: catch errors sourcing files
Dave Reisner
d at falconindy.com
Tue Feb 14 13:57:59 EST 2012
create source_safe() function which temporarily disables extglob and
exits on error.
Signed-off-by: Dave Reisner <dreisner at archlinux.org>
---
scripts/makepkg.sh.in | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 61c95af..c7bde9c 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -858,6 +858,15 @@ error_function() {
exit 2 # $E_BUILD_FAILED
}
+source_safe() {
+ shopt -u extglob
+ if ! source "$@"; then
+ error "$(gettext "Failed to source %s")" "$1"
+ exit 1
+ fi
+ shopt -s extglob
+}
+
run_function_safe() {
local restoretrap
@@ -1781,7 +1790,7 @@ devel_update() {
if [[ -f $BUILDFILE && -w $BUILDFILE ]]; then
@SEDINPLACE@ "s/^pkgver=[^ ]*/pkgver=$newpkgver/" "$BUILDFILE"
@SEDINPLACE@ "s/^pkgrel=[^ ]*/pkgrel=1/" "$BUILDFILE"
- source "$BUILDFILE"
+ source_safe "$BUILDFILE"
fi
fi
fi
@@ -1990,7 +1999,7 @@ MAKEPKG_CONF=${MAKEPKG_CONF:-$confdir/makepkg.conf}
# Source the config file; fail if it is not found
if [[ -r $MAKEPKG_CONF ]]; then
- source "$MAKEPKG_CONF"
+ source_safe "$MAKEPKG_CONF"
else
error "$(gettext "%s not found.")" "$MAKEPKG_CONF"
plain "$(gettext "Aborting...")"
@@ -2000,7 +2009,7 @@ fi
# Source user-specific makepkg.conf overrides, but only if no override config
# file was specified
if [[ $MAKEPKG_CONF = "$confdir/makepkg.conf" && -r ~/.makepkg.conf ]]; then
- source ~/.makepkg.conf
+ source_safe ~/.makepkg.conf
fi
# set pacman command if not already defined
@@ -2116,9 +2125,7 @@ if [[ ! -f $BUILDFILE ]]; then
else
# PKGBUILD passed through a pipe
BUILDFILE=/dev/stdin
- shopt -u extglob
- source "$BUILDFILE"
- shopt -s extglob
+ source_safe "$BUILDFILE"
fi
else
crlftest=$(file "$BUILDFILE" | grep -F 'CRLF' || true)
@@ -2130,9 +2137,7 @@ else
if [[ ${BUILDFILE:0:1} != "/" ]]; then
BUILDFILE="$startdir/$BUILDFILE"
fi
- shopt -u extglob
- source "$BUILDFILE"
- shopt -s extglob
+ source_safe "$BUILDFILE"
fi
# set defaults if they weren't specified in buildfile
--
1.7.9
More information about the pacman-dev
mailing list