Skip to contentSkip to conversation

Make tools cross-friendly, try 2

PATCH In review Aron Griffis 2 participants 4 messages Jan 21, 2008

lore
Share & tools
lore
#0 lore raw

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 +++++++++++++++++++++++++++++++++++++++
#1 lore raw

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
diff -r ff90abf572f2 -r 79cf8ffbc667 tools/Makefile
@@ -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
#2 lore raw

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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_brctl
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_crypto_lib
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_iproute
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_openssl_devel
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_python
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_python_devel
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_python_xml
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_udev
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_x11_devel
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_xgettext
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_xml2
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_zlib_devel
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/check_zlib_lib
@@ -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
diff -r 79cf8ffbc667 -r f2f6aedc492b tools/check/chk
@@ -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

#3 lore raw
In reply to Aron Griffis

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 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:

(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 generate

ld.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,
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

+++++++++++++++++++++++++++++++++++++++

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