WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

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

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Make tools/check scripts cross-friendly
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 22 Jan 2008 05:20:10 -0800
Delivery-date: Tue, 22 Jan 2008 05:20:09 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Make tools/check scripts cross-friendly, Xen patchbot-unstable <=