# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1200995057 0
# Node ID 6ba04ec03decc9af427e1a15ba97da8e9f73e9b9
# Parent 5b9b3b41fe89ce89ddbd2392d8ec0e63e97be23c
Make tools/check scripts cross-friendly
This patch introduces tools/check/funcs.sh with some
cross-friendly abstractions, then modifies the check_*
scripts to use them.
Signed-off-by: Aron Griffis <aron@xxxxxx>
---
tools/check/check_brctl | 24 ++---------
tools/check/check_crypto_lib | 20 +--------
tools/check/check_curl | 41 +++----------------
tools/check/check_iproute | 25 +++--------
tools/check/check_openssl_devel | 12 -----
tools/check/check_python | 11 -----
tools/check/check_python_devel | 11 -----
tools/check/check_python_xml | 9 +---
tools/check/check_udev | 31 +++-----------
tools/check/check_x11_devel | 15 +------
tools/check/check_xgettext | 12 -----
tools/check/check_xml2 | 34 ++--------------
tools/check/check_zlib_devel | 12 -----
tools/check/check_zlib_lib | 18 +-------
tools/check/chk | 9 +---
tools/check/funcs.sh | 85 ++++++++++++++++++++++++++++++++++++++++
16 files changed, 147 insertions(+), 222 deletions(-)
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_brctl
--- a/tools/check/check_brctl Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_brctl Tue Jan 22 09:44:17 2008 +0000
@@ -1,27 +1,13 @@
#!/bin/sh
# CHECK-INSTALL
-RC=0
+. funcs.sh
-case ${OS} in
+case $OS in
OpenBSD|NetBSD|FreeBSD)
- # These systems have a bridge builtin
- TOOL="brconfig"
- which ${TOOL} 1>/dev/null 2>&1 || RC=1
- ;;
+ has_or_fail brconfig ;;
Linux)
- TOOL="brctl"
- which ${TOOL} 1>/dev/null 2>&1 || RC=1
- ;;
+ has_or_fail brctl ;;
*)
- TOOL=""
- echo "Unknown OS" && RC=1
- ;;
+ fail "unknown OS" ;;
esac
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for the bridge control utils (${TOOL}) FAILED"
-fi
-
-exit ${RC}
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_crypto_lib
--- a/tools/check/check_crypto_lib Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_crypto_lib Tue Jan 22 09:44:17 2008 +0000
@@ -1,23 +1,11 @@
#!/bin/sh
# CHECK-BUILD CHECK-INSTALL
-RC=0
+. funcs.sh
-case $(uname -s) in
+case $OS in
FreeBSD|NetBSD|OpenBSD)
- exit 0
- ;;
-*)
- ;;
+ exit 0 ;;
esac
-PATH=/sbin:$PATH
-set -e
-ldconfig -p 2>&1 | grep -q libcrypto.so || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for crypto library FAILED"
-fi
-
-exit ${RC}
+has_lib libcrypto.so || fail "missing libcrypto.so"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_curl
--- a/tools/check/check_curl Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_curl Tue Jan 22 09:44:17 2008 +0000
@@ -1,38 +1,13 @@
#!/bin/sh
# CHECK-BUILD CHECK-INSTALL
-if [ ! "$LIBXENAPI_BINDINGS" = "y" ]
-then
- echo -n "unused, "
- exit 0
+. funcs.sh
+
+if [ "$LIBXENAPI_BINDINGS" != "y" ]; then
+ echo -n "unused, "
+ exit 0
fi
-RC=0
-
-CURL_CONFIG="$(which curl-config)"
-tmpfile=$(mktemp)
-
-if test -z ${CURL_CONFIG}; then
- RC=1
-else
- ${CURL_CONFIG} --libs 2>&1 > /dev/null
- RC=$?
-fi
-
-if test $RC -ne 0; then
- echo "FAILED"
- echo " *** curl-config is missing. "
- echo " *** Please install curl-devel."
-elif ! ld $($CURL_CONFIG --libs) -o $tmpfile >/dev/null 2>&1; then
- echo "FAILED"
- echo " *** dependency libraries for curl are missing: "
- RC=1
- for i in $(ld $($CURL_CONFIG --libs) -o $tmpfile 2>&1 >/dev/null); do
- case $i in
- -l*) echo lib${i#-l}
- esac
- done
-fi
-rm -f $tmpfile
-
-exit $RC
+has_or_fail curl-config
+curl_libs=`curl-config --libs` || fail "curl-config --libs failed"
+test_link $curl_libs || fail "dependency libraries for curl are missing"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_iproute
--- a/tools/check/check_iproute Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_iproute Tue Jan 22 09:44:17 2008 +0000
@@ -1,26 +1,15 @@
#!/bin/sh
# CHECK-INSTALL
-RC=0
+. funcs.sh
-case ${OS} in
+PATH=/sbin:$PATH
+
+case $OS in
OpenBSD|NetBSD|FreeBSD)
- TOOL="ifconfig"
- eval ${TOOL} -a 1>/dev/null 2>&1 || RC=1
- ;;
+ has_or_fail ifconfig ;;
Linux)
- TOOL="ip addr"
- eval ${TOOL} list 1>/dev/null 2>&1 || RC=1
- ;;
+ has_or_fail ip ;;
*)
- TOOL=""
- echo "Unknown OS" && RC=1
- ;;
+ fail "unknown OS" ;;
esac
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for iproute (${TOOL}) FAILED"
-fi
-
-exit ${RC}
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_openssl_devel
--- a/tools/check/check_openssl_devel Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_openssl_devel Tue Jan 22 09:44:17 2008 +0000
@@ -1,14 +1,6 @@
#!/bin/sh
# CHECK-BUILD
-RC=0
+. funcs.sh
-set -e
-test -r /usr/include/openssl/md5.h || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for openssl headers FAILED"
-fi
-
-exit ${RC}
+has_header openssl/md5.h || fail "missing openssl headers"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_python
--- a/tools/check/check_python Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_python Tue Jan 22 09:44:17 2008 +0000
@@ -1,16 +1,9 @@
#!/bin/sh
# CHECK-BUILD CHECK-INSTALL
-RC=0
+. funcs.sh
python -c '
import sys
sys.exit(sys.version_info[0] < 2 or sys.version_info[1] < 2)
-' || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for Python version >= 2.2 FAILED"
-fi
-
-exit ${RC}
+' || fail "need python version >= 2.2"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_python_devel
--- a/tools/check/check_python_devel Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_python_devel Tue Jan 22 09:44:17 2008 +0000
@@ -1,7 +1,7 @@
#!/bin/sh
# CHECK-BUILD
-RC=0
+. funcs.sh
python -c '
import os.path, sys
@@ -9,11 +9,4 @@ for p in sys.path:
if os.path.exists(p + "/config/Makefile"):
sys.exit(0)
sys.exit(1)
-' || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for python development environment FAILED"
-fi
-
-exit ${RC}
+' || fail "can't find python devel files"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_python_xml
--- a/tools/check/check_python_xml Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_python_xml Tue Jan 22 09:44:17 2008 +0000
@@ -1,8 +1,7 @@
#!/bin/sh
# CHECK-INSTALL
-python -c 'import xml.dom.minidom' 2>/dev/null || {
- echo
- echo " *** Check for python-xml package FAILED"
- exit 1
-}
+. funcs.sh
+
+python -c 'import xml.dom.minidom' 2>/dev/null || \
+fail "can't import xml.dom.minidom"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_udev
--- a/tools/check/check_udev Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_udev Tue Jan 22 09:44:17 2008 +0000
@@ -1,34 +1,19 @@
#!/bin/sh
# CHECK-INSTALL
-RC=0
+. funcs.sh
-case ${OS} in
+case $OS in
OpenBSD|NetBSD|FreeBSD)
- TOOL="vnconfig"
- which ${TOOL} 1>/dev/null 2>&1 || RC=1
+ has_or_fail vnconfig
;;
Linux)
- TOOL="udevinfo"
- UDEV_VERSION="0"
- test -x "$(which ${TOOL} 2>/dev/null)" && \
- UDEV_VERSION=$(${TOOL} -V | sed -e 's/^[^0-9]*
\([0-9]\{1,\}\)[^0-9]\{0,\}/\1/')
- if test "${UDEV_VERSION}" -ge 059; then
- RC=0
- else
- TOOL="hotplug"
- which ${TOOL} 1>/dev/null 2>&1 || RC=1
- fi
+ has_or_fail udevinfo
+ [ "`udevinfo -V | awk '{print $NF}'`" -ge 59 ] 2>/dev/null || \
+ has hotplug || \
+ fail "udev is too old, upgrade to version 59 or later"
;;
*)
- TOOL=""
- echo "Unknown OS" && RC=1
+ fail "unknown OS"
;;
esac
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for ${TOOL} FAILED"
-fi
-
-exit ${RC}
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_x11_devel
--- a/tools/check/check_x11_devel Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_x11_devel Tue Jan 22 09:44:17 2008 +0000
@@ -1,15 +1,8 @@
#!/bin/sh
# CHECK-BUILD
-RC=0
+. funcs.sh
-set -e
-test -r /usr/include/X11/keysymdef.h || \
-test -r /usr/X11R6/include/X11/keysymdef.h || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for x11 headers FAILED"
-fi
-
-exit ${RC}
+has_header X11/keysymdef.h || \
+has_header /usr/X11R6/include/X11/keysymdef.h || \
+fail "can't find X11 headers"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_xgettext
--- a/tools/check/check_xgettext Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_xgettext Tue Jan 22 09:44:17 2008 +0000
@@ -1,14 +1,6 @@
#!/bin/sh
# CHECK-BUILD
-RC=0
+. funcs.sh
-TOOL="xgettext"
-which ${TOOL} 1>/dev/null 2>&1 || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for the gettext utility (${TOOL}) FAILED"
-fi
-
-exit ${RC}
+has_or_fail xgettext
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_xml2
--- a/tools/check/check_xml2 Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_xml2 Tue Jan 22 09:44:17 2008 +0000
@@ -1,5 +1,7 @@
#!/bin/sh
# CHECK-BUILD CHECK-INSTALL
+
+. funcs.sh
if [ ! "$LIBXENAPI_BINDINGS" = "y" -a ! "$ACM_SECURITY" = "y" ]
then
@@ -7,32 +9,6 @@ then
exit 0
fi
-RC=0
-
-XML2_CONFIG="$(which xml2-config)"
-tmpfile=$(mktemp)
-
-if test -z ${XML2_CONFIG}; then
- RC=1
-else
- ${XML2_CONFIG} --libs 2>&1 > /dev/null
- RC=$?
-fi
-
-if test $RC -ne 0; then
- echo "FAILED"
- echo " *** xml2-config is missing. "
- echo " *** Please install libxml2-devel."
-elif ! ld $($XML2_CONFIG --libs) -o $tmpfile >/dev/null 2>&1; then
- echo "FAILED"
- echo " *** dependency libraries for xml2 are missing: "
- RC=1
- for i in $(ld $($XML2_CONFIG --libs) -o $tmpfile 2>&1 >/dev/null); do
- case $i in
- -l*) echo lib${i#-l}
- esac
- done
-fi
-rm -f $tmpfile
-
-exit $RC
+has_or_fail xml2-config
+xml2_libs=`xml2-config --libs` || fail "xml2-config --libs failed"
+test_link $xml2_libs || fail "dependency libraries for xml2 are missing"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_zlib_devel
--- a/tools/check/check_zlib_devel Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_zlib_devel Tue Jan 22 09:44:17 2008 +0000
@@ -1,14 +1,6 @@
#!/bin/sh
# CHECK-BUILD
-RC=0
+. funcs.sh
-set -e
-test -r /usr/include/zlib.h || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for zlib headers FAILED"
-fi
-
-exit ${RC}
+has_header zlib.h || fail "can't find zlib headers"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/check_zlib_lib
--- a/tools/check/check_zlib_lib Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/check_zlib_lib Tue Jan 22 09:44:17 2008 +0000
@@ -1,24 +1,12 @@
#!/bin/sh
# CHECK-BUILD CHECK-INSTALL
-RC=0
+. funcs.sh
-case $(uname -s) in
+case $OS in
FreeBSD|NetBSD|OpenBSD)
exit 0
;;
-*)
- ;;
esac
-PATH=/sbin:$PATH
-
-set -e
-ldconfig -p 2>&1 | grep -q libz.so || RC=1
-
-if test ${RC} -ne 0; then
- echo
- echo " *** Check for zlib library FAILED"
-fi
-
-exit ${RC}
+has_lib libz.so || fail "can't find zlib"
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/chk
--- a/tools/check/chk Tue Jan 22 09:43:53 2008 +0000
+++ b/tools/check/chk Tue Jan 22 09:44:17 2008 +0000
@@ -7,17 +7,16 @@ func_usage ()
echo
echo "Check suitability for Xen build or install."
echo "Exit with 0 if OK, 1 if not."
- echo "Prints only failed tests."
echo
echo "Calling with 'clean' removes generated files."
exit 1
}
-PATH=${PATH}:/sbin:/usr/sbin
+PATH=$PATH:/sbin:/usr/sbin
OS=`uname -s`
export PATH OS
-if test "${OS}" = "SunOS"; then
+if [ "$OS" = "SunOS" ]; then
exit 0
fi
@@ -38,7 +37,7 @@ esac
failed=0
-echo "Xen ${check} " $(date)
+echo "Xen ${check} " `date`
for f in check_* ; do
case $f in
*~)
@@ -50,7 +49,7 @@ for f in check_* ; do
if ! [ -x $f ] ; then
continue
fi
- if ! grep -q ${check} $f ; then
+ if ! grep -Fq "$check" $f ; then
continue
fi
echo -n "Checking $f: "
diff -r 5b9b3b41fe89 -r 6ba04ec03dec tools/check/funcs.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/check/funcs.sh Tue Jan 22 09:44:17 2008 +0000
@@ -0,0 +1,85 @@
+# has is the same as which, except it handles cross environments
+has() {
+ if [ -z "$CROSS_COMPILE" ]; then
+ command which "$@"
+ return $?
+ fi
+
+ check_sys_root || return 1
+
+ # subshell to prevent pollution of caller's IFS
+ (
+ IFS=:
+ for p in $PATH; do
+ if [ -x "$CROSS_SYS_ROOT/$p/$1" ]; then
+ echo "$CROSS_SYS_ROOT/$p/$1"
+ return 0
+ fi
+ done
+ return 1
+ )
+}
+
+has_or_fail() {
+ has "$1" >/dev/null || fail "can't find $1"
+}
+
+has_header() {
+ case $1 in
+ /*) ;;
+ *) set -- "/usr/include/$1" ;;
+ esac
+
+ check_sys_root || return 1
+
+ test -r "$CROSS_SYS_ROOT$1"
+ return $?
+}
+
+has_lib() {
+ check_sys_root || return 1
+
+ # subshell to prevent pollution of caller's environment
+ (
+ PATH=/sbin:$PATH # for ldconfig
+
+ # This relatively common in a sys-root; libs are installed but
+ # ldconfig hasn't run there, so ldconfig -p won't work.
+ if [ "$OS" = Linux -a ! -f "$CROSS_SYS_ROOT/etc/ld.so.cache" ]; then
+ echo "Please run ldconfig -r \"$CROSS_SYS_ROOT\" to generate
ld.so.cache"
+ # fall through; ldconfig test below should fail
+ fi
+ ldconfig -p ${CROSS_SYS_ROOT+-r "$CROSS_SYS_ROOT"} | grep -Fq "$1"
+ return $?
+ )
+}
+
+test_link() {
+ # subshell to trap removal of tmpfile
+ (
+ unset tmpfile
+ trap 'rm -f "$tmpfile"; exit' 0 1 2 15
+ tmpfile=`mktemp` || return 1
+ ld "$@" -o "$tmpfile" >/dev/null 2>&1
+ return $?
+ )
+}
+
+# this function is used commonly above
+check_sys_root() {
+ [ -z "$CROSS_COMPILE" ] && return 0
+ if [ -z "$CROSS_SYS_ROOT" ]; then
+ echo "please set CROSS_SYS_ROOT in the environment"
+ return 1
+ fi
+ if [ ! -d "$CROSS_SYS_ROOT" ]; then
+ echo "no sys-root found at $CROSS_SYS_ROOT"
+ return 1
+ fi
+}
+
+fail() {
+ echo
+ echo " *** `basename "$0"` FAILED${*+: $*}"
+ exit 1
+}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|