From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Christoph Egger" Subject: Re: [PATCH 2 of 2] Make tools/check scripts cross-friendly Date: Mon, 21 Jan 2008 12:05:42 +0100 Message-ID: <200801211205.42249.Christoph.Egger@amd.com> References: <735710fbd87c8c3701bb.1200715351@jenkins.nashua> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <735710fbd87c8c3701bb.1200715351@jenkins.nashua> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: Aron Griffis List-Id: xen-devel@lists.xenproject.org check_udev fails due to a typo in the patch. See inline for other comments. Christoph On Saturday 19 January 2008 05:02:31 Aron Griffis wrote: > # HG changeset patch > # User Aron Griffis > # Date 1200715193 18000 > # Node ID 735710fbd87c8c3701bb2e33746500793acf14bf > # Parent 79cf8ffbc6678f201d35724bf083ea9749818597 > 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 > [snip] > diff -r 79cf8ffbc667 -r 735710fbd87c tools/check/check_udev > --- a/tools/check/check_udev Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_udev Fri Jan 18 22:59:53 2008 -0500 > @@ -1,34 +1,19 @@ > #!/bin/sh > # CHECK-INSTALL > > -RC=3D0 > +. funcs.sh > > -case ${OS} in > +case $OS in > OpenBSD|NetBSD|FreeBSD) > - TOOL=3D"vnconfig" > - which ${TOOL} 1>/dev/null 2>&1 || RC=3D1 > + has_or_fail vncconfig ^^^^^^ Typo!! > ;; > Linux) > - TOOL=3D"udevinfo" > - UDEV_VERSION=3D"0" > - test -x "$(which ${TOOL} 2>/dev/null)" && \ > - UDEV_VERSION=3D$(${TOOL} -V | sed -e 's/^[^0-9]* > \([0-9]\{1,\}\)[^0-9]\{0,\}/\1/') - if test "${UDEV_VERSION}" -ge 059; th= en > - RC=3D0 > - else > - TOOL=3D"hotplug" > - which ${TOOL} 1>/dev/null 2>&1 || RC=3D1 > - 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=3D"" > - echo "Unknown OS" && RC=3D1 > + fail "unknown OS" > ;; > esac > - > -if test ${RC} -ne 0; then > - echo > - echo " *** Check for ${TOOL} FAILED" > -fi > - > -exit ${RC} > diff -r 79cf8ffbc667 -r 735710fbd87c tools/check/check_x11_devel > --- a/tools/check/check_x11_devel Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_x11_devel Fri Jan 18 22:59:53 2008 -0500 > @@ -1,15 +1,8 @@ > #!/bin/sh > # CHECK-BUILD > > -RC=3D0 > +. funcs.sh > > -set -e > -test -r /usr/include/X11/keysymdef.h || \ > -test -r /usr/X11R6/include/X11/keysymdef.h || RC=3D1 > - > -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 79cf8ffbc667 -r 735710fbd87c tools/check/check_xgettext > --- a/tools/check/check_xgettext Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_xgettext Fri Jan 18 22:59:53 2008 -0500 > @@ -1,14 +1,6 @@ > #!/bin/sh > # CHECK-BUILD > > -RC=3D0 > +. funcs.sh > > -TOOL=3D"xgettext" > -which ${TOOL} 1>/dev/null 2>&1 || RC=3D1 > - > -if test ${RC} -ne 0; then > - echo > - echo " *** Check for the gettext utility (${TOOL}) FAILED" > -fi > - > -exit ${RC} > +has_or_fail xgettext > diff -r 79cf8ffbc667 -r 735710fbd87c tools/check/check_xml2 > --- a/tools/check/check_xml2 Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_xml2 Fri Jan 18 22:59:53 2008 -0500 > @@ -1,5 +1,7 @@ > #!/bin/sh > # CHECK-BUILD CHECK-INSTALL > + > +. funcs.sh > > if [ ! "$LIBXENAPI_BINDINGS" =3D "y" -a ! "$ACM_SECURITY" =3D "y" ] > then > @@ -7,32 +9,6 @@ then > exit 0 > fi > > -RC=3D0 > - > -XML2_CONFIG=3D"$(which xml2-config)" > -tmpfile=3D$(mktemp) > - > -if test -z ${XML2_CONFIG}; then > - RC=3D1 > -else > - ${XML2_CONFIG} --libs 2>&1 > /dev/null > - RC=3D$? > -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=3D1 > - 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=3D`xml2-config --libs` || fail "xml2-config --libs failed" > +test_link $xml2_libs || fail "dependency libraries for xml2 are missing" > diff -r 79cf8ffbc667 -r 735710fbd87c tools/check/check_zlib_devel > --- a/tools/check/check_zlib_devel Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_zlib_devel Fri Jan 18 22:59:53 2008 -0500 > @@ -1,14 +1,6 @@ > #!/bin/sh > # CHECK-BUILD > > -RC=3D0 > +. funcs.sh > > -set -e > -test -r /usr/include/zlib.h || RC=3D1 > - > -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 79cf8ffbc667 -r 735710fbd87c tools/check/check_zlib_lib > --- a/tools/check/check_zlib_lib Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/check_zlib_lib Fri Jan 18 22:59:53 2008 -0500 > @@ -1,24 +1,12 @@ > #!/bin/sh > # CHECK-BUILD CHECK-INSTALL > > -RC=3D0 > +. funcs.sh > > -case $(uname -s) in > +case $OS in > FreeBSD|NetBSD|OpenBSD) > exit 0 > ;; > -*) > - ;; > esac > > -PATH=3D/sbin:$PATH > - > -set -e > -ldconfig -p 2>&1 | grep -q libz.so || RC=3D1 > - > -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 79cf8ffbc667 -r 735710fbd87c tools/check/chk > --- a/tools/check/chk Fri Jan 18 22:59:53 2008 -0500 > +++ b/tools/check/chk Fri Jan 18 22:59:53 2008 -0500 > @@ -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=3D${PATH}:/sbin:/usr/sbin > +PATH=3D$PATH:/sbin:/usr/sbin > OS=3D`uname -s` > export PATH OS > > -if test "${OS}" =3D "SunOS"; then > +if [ "$OS" =3D "SunOS" ]; then What does this fix? Don't change this if you can't test on Solaris. > exit 0 > fi > > @@ -38,7 +37,7 @@ esac > > failed=3D0 > > -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 79cf8ffbc667 -r 735710fbd87c tools/check/funcs.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/tools/check/funcs.sh Fri Jan 18 22:59:53 2008 -0500 > @@ -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=3D: > + 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=3D/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. We can > + # only fix it if it's writeable. > + [ "$OS" !=3D Linux ] || \ > + [ -f "$CROSS_SYS_ROOT/etc/ld.so.cache" ] || \ > + ldconfig -r "$CROSS_SYS_ROOT" && \ > + ldconfig -p ${CROSS_SYS_ROOT+-r "$CROSS_SYS_ROOT"} | grep -Fq "$1" > + return $? > + ) > +} This can be more readable with "if test" constructs. > + > +test_link() { > + # subshell to trap removal of tmpfile > + ( > + unset tmpfile > + trap 'rm -f "$tmpfile"; exit' 0 1 2 15 > + tmpfile=3D`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-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel =2D-=20 AMD Saxony, Dresden, Germany Operating System Research Center Legal Information: AMD Saxony Limited Liability Company & Co. KG Sitz (Gesch=E4ftsanschrift): Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland Registergericht Dresden: HRA 4896 vertretungsberechtigter Komplement=E4r: AMD Saxony LLC (Sitz Wilmington, Delaware, USA) Gesch=E4ftsf=FChrer der AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy