From 33466000d63e88e7a2ac7b1278a5966595fba707 Mon Sep 17 00:00:00 2001
From: Allan McRae <allan@archlinux.org>
Date: Tue, 27 Jan 2015 10:57:00 +1000
Subject: makepkg: split PKGBUILD/makepkg.conf option checking to libmakepkg

Signed-off-by: Allan McRae <allan@archlinux.org>
---
 scripts/libmakepkg/util/option.sh | 108 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 scripts/libmakepkg/util/option.sh

(limited to 'scripts/libmakepkg')

diff --git a/scripts/libmakepkg/util/option.sh b/scripts/libmakepkg/util/option.sh
new file mode 100644
index 00000000..fc649288
--- /dev/null
+++ b/scripts/libmakepkg/util/option.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+#
+#   option.sh - functions to test if build/packaging options are enabled
+#
+#   Copyright (c) 2009-2015 Pacman Development Team <pacman-dev@archlinux.org>
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ -n "$LIBMAKEPKG_UTIL_OPTION_SH" ] && return
+LIBMAKEPKG_UTIL_OPTION_SH=1
+
+
+##
+#  usage : in_opt_array( $needle, $haystack )
+# return : 0   - enabled
+#          1   - disabled
+#          127 - not found
+##
+in_opt_array() {
+	local needle=$1; shift
+
+	local i opt
+	for (( i = $#; i > 0; i-- )); do
+		opt=${!i}
+		if [[ $opt = "$needle" ]]; then
+			# enabled
+			return 0
+		elif [[ $opt = "!$needle" ]]; then
+			# disabled
+			return 1
+		fi
+	done
+
+	# not found
+	return 127
+}
+
+
+##
+# Checks to see if options are present in makepkg.conf or PKGBUILD;
+# PKGBUILD options always take precedence.
+#
+#  usage : check_option( $option, $expected_val )
+# return : 0   - matches expected
+#          1   - does not match expected
+#          127 - not found
+##
+check_option() {
+	in_opt_array "$1" ${options[@]}
+	case $? in
+		0) # assert enabled
+			[[ $2 = y ]]
+			return ;;
+		1) # assert disabled
+			[[ $2 = n ]]
+			return
+	esac
+
+	# fall back to makepkg.conf options
+	in_opt_array "$1" ${OPTIONS[@]}
+	case $? in
+		0) # assert enabled
+			[[ $2 = y ]]
+			return ;;
+		1) # assert disabled
+			[[ $2 = n ]]
+			return
+	esac
+
+	# not found
+	return 127
+}
+
+
+##
+# Check if option is present in BUILDENV
+#
+#  usage : check_buildenv( $option, $expected_val )
+# return : 0   - matches expected
+#          1   - does not match expected
+#          127 - not found
+##
+check_buildenv() {
+	in_opt_array "$1" ${BUILDENV[@]}
+	case $? in
+		0) # assert enabled
+			[[ $2 = "y" ]]
+			return ;;
+		1) # assert disabled
+			[[ $2 = "n" ]]
+			return ;;
+	esac
+
+	# not found
+	return 127
+}
-- 
cgit v1.2.3-70-g09d2