add full xml logging to abuild to work on the complete information
authorStefan Reinauer <stepan@openbios.org>
Sat, 27 May 2006 00:22:02 +0000 (00:22 +0000)
committerStefan Reinauer <stepan@openbios.org>
Sat, 27 May 2006 00:22:02 +0000 (00:22 +0000)
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2314 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

util/abuild/abuild.sh

index b0ccf666fb3c52fc0266760f3c55e4cf476c8f34..87986b21f760d1f41e10e55623212764c8166c2d 100755 (executable)
@@ -5,6 +5,7 @@
 #  This script builds LinuxBIOS images for all available targets.
 #
 #  (C) 2004 by Stefan Reinauer <stepan@openbios.org>
+#  (C) 2006 by coresystems GmbH <info@coresystems.de>
 #
 #  This file is subject to the terms and conditions of the GNU General
 #  Public License. See the file COPYING in the main directory of this
@@ -15,6 +16,7 @@
 
 # Where shall we place all the build trees?
 TARGET=$( pwd )/linuxbios-builds
+XMLFILE=$( pwd )/abuild.xml
 
 # path to payload. Should be more generic
 PAYLOAD=/dev/null
@@ -26,6 +28,9 @@ CONTEXT=5
 MAKE="make"
 PYTHON=python
 
+# this can be changed to xml by -x
+mode=text
+
 ARCH=`uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
        -e s/arm.*/arm/ -e s/sa110/arm/ -e s/x86_64/amd64/ \
        -e "s/Power Macintosh/ppc/"`
@@ -35,6 +40,18 @@ function debug
        test "$verbose" == "true" && echo $*
 }
 
+function xml
+{
+       test "$mode" == "xml" && echo "$*" >> $XMLFILE
+}
+
+function xmlfile
+{
+       test "$mode" == "xml" && { echo '<![CDATA['; cat $1; echo ']]>'; } >> $XMLFILE
+}
+
+
+
 function vendors
 {
        # make this a function so we can easily select
@@ -72,10 +89,12 @@ function create_config
         if [ -f $TARGCONFIG ]; then
                cp $TARGCONFIG $TARGET/Config-${VENDOR}_${MAINBOARD}.lb
                echo "Used existing test target $TARGCONFIG"
+               xml "  <config>$TARGCONFIG</config>"
                return 
        fi
 
        echo -n "  Creating config file..."
+       xml "  <config>autogenerated</config>"
        ( cat << EOF
 # This will make a target directory of ./VENDOR_MAINBOARD
 
@@ -154,8 +173,16 @@ function create_builddir
        $PYTHON $config_py $config_lb $LBROOT &> $build_dir/config.log
        if [ $? -eq 0 ]; then
                echo "ok"
+               xml "  <builddir>ok</builddir>"
+               xml ""
+               return 0
        else
                echo "FAILED! Log excerpt:"
+               xml "  <builddir>failed</builddir>"
+               xml "  <log>"
+               xmlfile $build_dir/config.log
+               xml "  </log>"
+               xml ""
                tail -n $CONTEXT $build_dir/config.log
                return 1
        fi
@@ -183,11 +210,19 @@ function compile_target
        etime=`date +%s`
        duration=$(( $etime - $stime ))
        if [ $ret -eq 0 ]; then
+               xml "  <compile>ok</compile>"
+               xml "  <compiletime>${duration}s</compiletime>"
                echo "ok" > compile.status
                echo "ok. (took ${duration}s)"
                cd $CURR
                return 0
        else
+               xml "  <compile>failed</compile>"
+               xml "  <compiletime>${duration}s</compiletime>"
+               xml "  <log>"
+               xmlfile make.log
+               xml "  </log>"
+
                echo "FAILED after ${duration}s! Log excerpt:"
                tail -n $CONTEXT make.log
                cd $CURR
@@ -229,6 +264,14 @@ function build_target
        CROSS_COMPILE=''
 
        echo -n "Processing mainboard/$VENDOR/$MAINBOARD"
+
+       xml "<mainboard>"
+       xml ""
+       xml "  <vendor>$VENDOR</vendor>"
+       xml "  <device>$MAINBOARD</device>"
+       xml ""
+       xml "  <architecture>$TARCH</architecture>"
+       xml ""
        
        [ -r "$LBROOT/src/mainboard/${VENDOR}/${MAINBOARD}/abuild.info" ] && \
                source $LBROOT/src/mainboard/${VENDOR}/${MAINBOARD}/abuild.info
@@ -255,6 +298,12 @@ function build_target
                        done
                fi
 
+               xml "  <compiler>"
+               xml "    <path>`which ${CROSS_COMPILE}gcc`</path>"
+               xml "    <version>`${CROSS_COMPILE}gcc --version | head -1`</version>"
+               xml "  </compiler>"
+               xml ""
+               
                # TBD: look for suitable cross compiler suite
                # cross-$TARCH-gcc and cross-$TARCH-ld
                
@@ -272,6 +321,9 @@ function build_target
        {
                echo " ( mainboard/$VENDOR/$MAINBOARD previously ok )"
                echo
+               xml "  <status>previouslyok</status>"
+               xml ""
+               xml "</mainboard>"
                return 0
        }
 
@@ -279,14 +331,22 @@ function build_target
        {
                echo " ( broken mainboard/$VENDOR/$MAINBOARD skipped )"
                echo
+               xml "  <status>knownbroken</status>"
+               xml ""
+               xml "</mainboard>"
                return 0
        }
        
        create_buildenv $VENDOR $MAINBOARD
        if [ $? -eq 0 ]; then
-               compile_target $VENDOR $MAINBOARD
+               compile_target $VENDOR $MAINBOARD && 
+                       xml "<status>ok</status>" ||
+                       xml "<status>broken</status>"
        fi
 
+       xml ""
+       xml "</mainboard>"
+
        echo
 }
 
@@ -303,6 +363,7 @@ function myhelp
        echo "    [-t|--target <vendor/board>]  attempt to build target vendor/board only"
        echo "    [-V|--version]                  print version number and exit"
        echo "    [-h|--help]                     print this help and exit"
+       echo "    [-x|--xml]                      write xml log file $XMLFILE"
        echo "    [lbroot]                        absolute path to LinuxBIOS sources"
        echo "                            (defaults to $LBROOT)"
        echo
@@ -312,9 +373,10 @@ function myversion
 {
        cat << EOF
 
-LinuxBIOS autobuild: V0.1.
+LinuxBIOS autobuild: V0.2.
 
-Copyright (C) 2004 by Stefan Reinauer, <stepan@openbios.org>
+Copyright (C) 2004 by Stefan Reinauer <stepan@openbios.org>
+Copyright (C) 2006 by coresystems GmbH <info@coresystems.de>
 This program is free software; you may redistribute it under the terms
 of the GNU General Public License. This program has absolutely no
 warranty.
@@ -340,6 +402,7 @@ fi
 eval set "$args"
 while true ; do
        case "$1" in
+               -x|--xml)       shift; mode=xml; rm -f $XMLFILE ;;
                -t|--target)    shift; target="$1"; shift;;
                -a|--all)       shift; buildall=true;;
                -b|--broken)    shift; buildbroken=true;;
@@ -357,6 +420,9 @@ test -z "$1" || LBROOT=$1
 
 debug "LBROOT=$LBROOT"
 
+xml '<?xml version="1.0" encoding="utf-8"?>'
+xml '<abuild>'
+
 if [ "$target" != "" ]; then
        # build a single board
        VENDOR=`echo $target|cut -f1 -d/`
@@ -370,4 +436,5 @@ else
                done
        done
 fi
+xml '</abuild>'