[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Make tools/check scripts cross-friendly



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.