[pacman-dev] [PATCH] libmakepkg: Add check_buildoption for distcc and ccache
Jan Alexander Steffens (heftig)
jan.steffens at gmail.com
Sat Sep 19 20:01:27 UTC 2015
This reduces code duplication a bit. It also highlights how these
options are checked.
v2: makepkg used to check OPTIONS too, which could override BUILDENV.
Fix the implementation to avoid this.
Signed-off-by: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
---
scripts/libmakepkg/util/option.sh | 30 ++++++++++++++++++++++++++++++
scripts/makepkg.sh.in | 8 ++++----
2 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/scripts/libmakepkg/util/option.sh b/scripts/libmakepkg/util/option.sh
index 1b2d94d..4ef8766 100644
--- a/scripts/libmakepkg/util/option.sh
+++ b/scripts/libmakepkg/util/option.sh
@@ -106,3 +106,33 @@ check_buildenv() {
# not found
return 127
}
+
+##
+# Check if option is present in BUILDENV and not inverted in options
+#
+# usage : check_buildoption( $option, $expected_val )
+# return : 0 - matches expected
+# 1 - does not match expected
+# 127 - not found
+##
+check_buildoption() {
+ in_opt_array "$1" ${BUILDENV[@]}
+ case $? in
+ 0) # assert enabled
+ [[ $2 = y ]] || return 1 ;;
+ 1) # assert disabled
+ [[ $2 = n ]] || return 1 ;;
+ *) # not found
+ return 127 ;;
+ esac
+
+ in_opt_array "$1" ${options[@]}
+ case $? in
+ 0) # assert enabled
+ [[ $2 = y ]] || return 1 ;;
+ 1) # assert disabled
+ [[ $2 = n ]] || return 1 ;;
+ esac
+
+ return 0
+}
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ec8218f..a8bac02 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -857,13 +857,13 @@ run_prepare() {
run_build() {
# use distcc if it is requested (check buildenv and PKGBUILD opts)
- if check_buildenv "distcc" "y" && ! check_option "distcc" "n"; then
+ if check_buildoption "distcc" "y"; then
[[ -d /usr/lib/distcc/bin ]] && export PATH="/usr/lib/distcc/bin:$PATH"
export DISTCC_HOSTS
fi
# use ccache if it is requested (check buildenv and PKGBUILD opts)
- if check_buildenv "ccache" "y" && ! check_option "ccache" "n"; then
+ if check_buildoption "ccache" "y"; then
[[ -d /usr/lib/ccache/bin ]] && export PATH="/usr/lib/ccache/bin:$PATH"
fi
@@ -1562,7 +1562,7 @@ check_software() {
fi
# distcc - compilation with distcc
- if check_buildenv "distcc" "y" && ! check_option "distcc" "n"; then
+ if check_buildoption "distcc" "y"; then
if ! type -p distcc >/dev/null; then
error "$(gettext "Cannot find the %s binary required for distributed compilation.")" "distcc"
ret=1
@@ -1570,7 +1570,7 @@ check_software() {
fi
# ccache - compilation with ccache
- if check_buildenv "ccache" "y" && ! check_option "ccache" "n"; then
+ if check_buildoption "ccache" "y"; then
if ! type -p ccache >/dev/null; then
error "$(gettext "Cannot find the %s binary required for compiler cache usage.")" "ccache"
ret=1
--
2.5.2
More information about the pacman-dev
mailing list