From: "Christoph Egger" <Christoph.Egger@amd.com>
To: xen-devel@lists.xensource.com
Cc: Aron Griffis <aron@hp.com>
Subject: Re: [PATCH 2 of 2] Make tools/check scripts cross-friendly
Date: Mon, 21 Jan 2008 12:05:42 +0100 [thread overview]
Message-ID: <200801211205.42249.Christoph.Egger@amd.com> (raw)
In-Reply-To: <735710fbd87c8c3701bb.1200715351@jenkins.nashua>
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 <aron@hp.com>
> # 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 <aron@hp.com>
>
[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=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 vncconfig
^^^^^^
Typo!!
> ;;
> 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 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=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 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=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 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" = "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 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=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 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=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 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=${PATH}:/sbin:/usr/sbin
> +PATH=$PATH:/sbin:/usr/sbin
> OS=`uname -s`
> export PATH OS
>
> -if test "${OS}" = "SunOS"; then
> +if [ "$OS" = "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=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 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=:
> + 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. We can
> + # only fix it if it's writeable.
> + [ "$OS" != 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=`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
--
AMD Saxony, Dresden, Germany
Operating System Research Center
Legal Information:
AMD Saxony Limited Liability Company & Co. KG
Sitz (Geschäftsanschrift):
Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland
Registergericht Dresden: HRA 4896
vertretungsberechtigter Komplementär:
AMD Saxony LLC (Sitz Wilmington, Delaware, USA)
Geschäftsführer der AMD Saxony LLC:
Dr. Hans-R. Deppe, Thomas McCoy
next prev parent reply other threads:[~2008-01-21 11:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-19 4:02 [PATCH 0 of 2] Make tools cross-friendly Aron Griffis
2008-01-19 4:02 ` [PATCH 1 of 2] Make tools/Makefile cross-friendly Aron Griffis
2008-01-19 8:26 ` Keir Fraser
2008-01-19 14:48 ` Aron Griffis
2008-01-19 15:33 ` Aron Griffis
2008-01-19 4:02 ` [PATCH 2 of 2] Make tools/check scripts cross-friendly Aron Griffis
2008-01-21 11:05 ` Christoph Egger [this message]
2008-01-21 14:50 ` Aron Griffis
-- strict thread matches above, loose matches on Subject: below --
2008-01-21 15:29 [PATCH 0 of 2] Make tools cross-friendly, try 2 Aron Griffis
2008-01-21 15:29 ` [PATCH 2 of 2] Make tools/check scripts cross-friendly Aron Griffis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200801211205.42249.Christoph.Egger@amd.com \
--to=christoph.egger@amd.com \
--cc=aron@hp.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.