[arch-projects] [devtools] [PATCH 5/7] lib/common.sh: Adjust to work properly with `set -u`

Luke Shumaker lukeshu at lukeshu.com
Mon Jan 15 16:57:57 UTC 2018


From: Luke Shumaker <lukeshu at parabola.nu>

Support for working with `set -u` was broken by 94160d6.  Egg on my
face; I'm the one who wants `set -u` support, and I'm the author of
that commit!

libmakepkg does not work with `set -u`; but mostly because of the include
guards!  So we just need to temporarily disable `set -u` (nounset) while
loading libmakepkg.  Instead of introducing a new variable, just store the
initial nounset status in _INCLUDE_COMMON_SH; rather than a useless
fixed-string "true".

While we're at it, disable POSIX-mode (just in case we're running as "sh"
instead of "bash"), since libmakepkg uses bash-isms that won't parse in
POSIX mode.
---
 lib/common.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/common.sh b/lib/common.sh
index a3c2ec2..821f8df 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -4,10 +4,12 @@
 # License: Unspecified
 
 [[ -z ${_INCLUDE_COMMON_SH:-} ]] || return 0
-_INCLUDE_COMMON_SH=true
+_INCLUDE_COMMON_SH="$(set +o|grep nounset)"
 
+set +u +o posix
 # shellcheck disable=1091
 . /usr/share/makepkg/util.sh
+$_INCLUDE_COMMON_SH
 
 # Avoid any encoding problems
 export LANG=C
-- 
2.15.1


More information about the arch-projects mailing list