[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |