util/testing: Update junit.xml to support coreboot builds

Up to this point, junit.xml has only been used to build tools, as abuild
has handled the coreboot builds.  To add additional tests not covered
by abuild, we need junit.xml to work with bare directories.

This also requires updating the build directory (BLD_DIR) for existing
builds using the junit.xml target.

Change-Id: If6e27e02e25e20f48e5a9372373de6058ca378dd
Signed-off-by: Martin Roth <gaumless@gmail.com>
Reviewed-on: https://review.coreboot.org/26421
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
This commit is contained in:
Martin Roth 2018-05-19 17:51:20 -06:00 committed by Martin Roth
parent 185202c469
commit c32c054cc4
1 changed files with 32 additions and 22 deletions

View File

@ -23,30 +23,40 @@ test-help help::
@echo ' test-cleanup - basic: Cleans coreboot directories' @echo ' test-cleanup - basic: Cleans coreboot directories'
# junit.xml is a helper target to wrap builds that don't create junit.xml output # junit.xml is a helper target to wrap builds that don't create junit.xml output
# BLD = Subdirectory the build lives in - The name of the build # BLD = The name of the build
# BLD_DIR = Top path from coreboot to the build subdirectory # BLD_DIR = Top path from coreboot to the build subdirectory
# MAKETARGET = target to build # MAKETARGET = target to build
junit.xml: junit.xml:
echo "Building $(BLD)" echo "Building $(BLD)"
echo '<?xml version="1.0" encoding="utf-8"?><testsuite>' > $@.tmp echo '<?xml version="1.0" encoding="utf-8"?><testsuite>' > $@.tmp
echo "<testcase classname='$(BLD)' name='$(BLD)'>" >> $@.tmp echo "<testcase classname='$(BLD)' name='$(BLD)'>" >> $@.tmp
-$(MAKE) -j $(CPUS) -C "$(BLD_DIR)$(BLD)" clean distclean > $@.tmp.2 2>&1 -if [ -z "$(BLD_DIR)" ]; then \
$(MAKE) -j $(CPUS) -C "$(BLD_DIR)$(BLD)" $(MAKETARGET) >> $@.tmp.2 2>&1 && type="system-out" || type="failure"; \ projdir=""; \
cat $@.tmp.2; \ xmlfile=junit_$(BLD).xml; \
if [ "$$type" = "failure" ]; then \ else \
echo "<failure type='buildFailed'>" >> $@.tmp; \ projdir="-C $(BLD_DIR)"; \
echo "Building $(BLD) Failed"; \ xmlfile="$(BLD_DIR)/$@"; \
else \ fi; \
echo "<$$type>" >> $@.tmp; \ if [ -z "$(SKIP_DISTCLEAN)" ]; then \
echo "Building $(BLD) Succeeded"; \ $(MAKE) -j $(CPUS) $$projdir clean distclean > $@.tmp.2 2>&1 ; \
fi; \ fi; \
echo '<![CDATA[' >> $@.tmp; \ if $(MAKE) -j $(CPUS) $$projdir $(MAKETARGET) >> $@.tmp.2 2>&1; then \
cat $@.tmp.2 >> $@.tmp; \ type="system-out"; \
echo "]]></$$type>" >>$@.tmp echo "<$$type>" >> $@.tmp; \
rm -f $@.tmp.2 echo "Building $(BLD) Succeeded"; \
echo "</testcase>" >> $@.tmp else \
echo "</testsuite>" >> $@.tmp type="failure"; \
mv $@.tmp "$(BLD_DIR)$(BLD)/$@" echo "<failure type='buildFailed'>" >> $@.tmp; \
echo "Building $(BLD) Failed"; \
fi; \
cat $@.tmp.2; \
echo '<![CDATA[' >> $@.tmp; \
cat $@.tmp.2 >> $@.tmp; \
echo "]]></$$type>" >>$@.tmp; \
rm -f $@.tmp.2; \
echo "</testcase>" >> $@.tmp; \
echo "</testsuite>" >> $@.tmp; \
mv $@.tmp "$$xmlfile"
echo echo
TOOLLIST= \ TOOLLIST= \
@ -77,10 +87,10 @@ what-jenkins-does:
util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD) -x -X $(top)/abuild-chromeos.xml util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD) -x -X $(top)/abuild-chromeos.xml
util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD) util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD)
(cd payloads/libpayload; unset COREBOOT_BUILD_DIR; $(MAKE) $(if $(JENKINS_NOCCACHE),,CONFIG_LP_CCACHE=y) V=$(V) Q=$(Q) junit.xml) (cd payloads/libpayload; unset COREBOOT_BUILD_DIR; $(MAKE) $(if $(JENKINS_NOCCACHE),,CONFIG_LP_CCACHE=y) V=$(V) Q=$(Q) junit.xml)
$(foreach tool, $(TOOLLIST), $(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=util/ BLD="$(tool)" MFLAGS= MAKEFLAGS= MAKETARGET= junit.xml; ) $(foreach tool, $(TOOLLIST), $(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR="util/$(tool)" BLD="$(tool)" MFLAGS= MAKEFLAGS= MAKETARGET= junit.xml; )
unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=nvramcui MFLAGS= MAKEFLAGS= MAKETARGET=all junit.xml unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/nvramcui BLD=nvramcui MFLAGS= MAKEFLAGS= MAKETARGET=all junit.xml
unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=coreinfo MFLAGS= MAKEFLAGS= MAKETARGET=defaultbuild junit.xml unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/coreinfo BLD=coreinfo MFLAGS= MAKEFLAGS= MAKETARGET=defaultbuild junit.xml
$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=util/ BLD=romcc MFLAGS= MAKEFLAGS= MAKETARGET=test junit.xml $(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=util/romcc BLD=romcc MFLAGS= MAKEFLAGS= MAKETARGET=test junit.xml
$(MAKE) -C src/soc/nvidia/tegra124/lp0 all clean $(MAKE) -C src/soc/nvidia/tegra124/lp0 all clean
$(MAKE) -C src/soc/nvidia/tegra210/lp0 all clean $(MAKE) -C src/soc/nvidia/tegra210/lp0 all clean