Make tools cross-friendly, try 2
PATCH 1/1 Make tools cross-friendly, try 2
Hi,
This is an update of the patchset originally posted here:
http://lists.xensource.com/archives/html/xen-devel/2008-01/msg00620.html
This update includes changes suggested by Christoph's review, in particular:
- fix vnconfig typo
- make the ldconfig logic better
That last fix actually behaves a bit differently than before, but I think it's better to alert the user than assume we can create the cache. Here's the delta:
# 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 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 $?
I did not revert the SunOS test. I have a high degree of confidence that it's correct, and IMHO it's better to be consistent.
Thanks,
Aron
17 files changed, 160 insertions(+), 224 deletions(-) tools/Makefile | 15 +++++- 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 +++++++++++++++++++++++++++++++++++++++
PATCH 1/1 Make tools/Makefile cross-friendly
# HG changeset patch
# User Aron Griffis <[email protected]>
# Date 1200715193 18000
# Node ID 79cf8ffbc6678f201d35724bf083ea9749818597 # Parent ff90abf572f2d5aa7d4a7f764b3c343b66a06210 Make tools/Makefile cross-friendly
Pass Xen cross-compilation options through to ioemu. Export CROSS_SYS_ROOT for use by scripts. Unexport IOEMU_DIR since it isn't used outside of the Makefile.
tools/Makefile +13 -2
@@ -26,6 +26,12 @@ ifeq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_A ifeq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH)) SUBDIRS-$(PYTHON_TOOLS) += python SUBDIRS-$(PYTHON_TOOLS) += pygrub +endif + +# For the sake of linking, set the sys-root +ifneq ($(CROSS_COMPILE),) +CROSS_SYS_ROOT ?= /usr/$(CROSS_COMPILE:-=)/sys-root +export CROSS_SYS_ROOT endif .PHONY: all
@@ -65,10 +71,15 @@ check_clean: .PHONY: ioemu ioemuinstall ioemuclean ifeq ($(CONFIG_IOEMU),y) -export IOEMU_DIR ?= ioemu +IOEMU_DIR ?= ioemu +ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH)) +IOEMU_CONFIGURE_CROSS ?= --cross-prefix=$(CROSS_COMPILE) \ + --interp-prefix=$(CROSS_SYS_ROOT) +endif ioemu ioemuinstall: [ -f $(IOEMU_DIR)/config-host.mak ] || \ - (cd $(IOEMU_DIR) && sh configure --prefix=/usr) + ( cd $(IOEMU_DIR) && sh configure --prefix=/usr \ + $(IOEMU_CONFIGURE_CROSS) ) $(MAKE) -C $(IOEMU_DIR) $(patsubst ioemu%,%,$@) ioemuclean: $(MAKE) -C $(IOEMU_DIR) distclean
PATCH 1/1 Make tools/check scripts cross-friendly
In reply to Aron Griffis# HG changeset patch
# User Aron Griffis <[email protected]>
# Date 1200929111 18000
# Node ID f2f6aedc492be200642868501255c332b9e4186b # 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.
tools/check/check_brctl +5 -19
@@ -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}
tools/check/check_crypto_lib +4 -16
@@ -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"
tools/check/check_curl +8 -33
46 lines not on this page · raw message
tools/check/check_iproute +7 -18
@@ -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}
tools/check/check_openssl_devel +2 -10
@@ -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"
tools/check/check_python +2 -9
@@ -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"
tools/check/check_python_devel +2 -9
@@ -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"
tools/check/check_python_xml +4 -5
@@ -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"
tools/check/check_udev +8 -23
@@ -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}
tools/check/check_x11_devel +4 -11
@@ -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"
tools/check/check_xgettext +2 -10
@@ -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
tools/check/check_xml2 +5 -29
@@ -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"
tools/check/check_zlib_devel +2 -10
@@ -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"
tools/check/check_zlib_lib +3 -15
@@ -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"
tools/check/chk +4 -5
@@ -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: "
tools/check/funcs.sh new file +85 -0
85 lines not on this page · raw message
The patchset looks ok to me.
If Keir likes them, they can go in. :)
Christoph
Quoted 55 lines · On Monday 21 January 2008 16:29:31 Aron Griffis wrote:
Hi,
This is an update of the patchset originally posted here:
http://lists.xensource.com/archives/html/xen-devel/2008-01/msg00620.html
This update includes changes suggested by Christoph's review, in particular:
- fix vnconfig typo
- make the ldconfig logic betterThat last fix actually behaves a bit differently than before, but I think it's better to alert the user than assume we can create the cache. Here's the delta:
(quoted diff) +3
-5# 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 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 generateld.so.cache" + # fall through; ldconfig test below should fail
(quoted diff) +1
-0+ fi ldconfig -p ${CROSS_SYS_ROOT+-r "$CROSS_SYS_ROOT"} | grep -Fq "$1" return $?I did not revert the SunOS test. I have a high degree of confidence that it's correct, and IMHO it's better to be consistent.
Thanks,
Aron17 files changed, 160 insertions(+), 224 deletions(-) tools/Makefile | 15 +++++- 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+++++++++++++++++++++++++++++++++++++++
Signature · 12 lines
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