mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
There are a bunch of tests in tools/tests/, let them run in CI. For each subdirectory expect "make run" will run the test, and observe its exit code. This way, adding new tests is easy, and they will be automatically picked up. For better visibility, log test output to junit xml format, and let gitlab ingest it. Set SUT_ADDR variable with name/address of the system under test, so a network can be used to extract the file. The actual address is set using DHCP. And for the test internal network, still add the 192.168.0.1 IP (but don't replace the DHCP-provided one). Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Reviewed-by: Stefano Stabellini <stefano.stabellini@amd.com>
115 lines
3.4 KiB
Python
Executable File
115 lines
3.4 KiB
Python
Executable File
#!/bin/bash -ex
|
|
|
|
test -f /etc/os-release && cat "$_"
|
|
|
|
# Construct $cc such that it matches what `make` will chose when taking
|
|
# CROSS_COMPILE into account. Do not modify $CC directly, as that will cause
|
|
# `make` to double-account CROSS_COMPILE.
|
|
cc="${CROSS_COMPILE}${CC}"
|
|
|
|
$cc --version
|
|
|
|
# random config or default config
|
|
if [[ "${RANDCONFIG}" == "y" ]]; then
|
|
|
|
# Append job-specific fixed configuration
|
|
if [[ -n "${EXTRA_FIXED_RANDCONFIG}" ]]; then
|
|
echo "${EXTRA_FIXED_RANDCONFIG}" >> xen/tools/kconfig/allrandom.config
|
|
fi
|
|
|
|
make -j$(nproc) -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
|
|
|
|
# RANDCONFIG implies HYPERVISOR_ONLY
|
|
HYPERVISOR_ONLY="y"
|
|
else
|
|
# Start off with arch's defconfig
|
|
make -C xen defconfig
|
|
|
|
echo "CONFIG_DEBUG=${debug}" >> xen/.config
|
|
|
|
if [[ -n "${EXTRA_XEN_CONFIG}" ]]; then
|
|
echo "${EXTRA_XEN_CONFIG}" >> xen/.config
|
|
fi
|
|
|
|
make -j$(nproc) -C xen olddefconfig
|
|
fi
|
|
|
|
# Save the config file before building because build failure causes the script
|
|
# to exit early -- bash is invoked with -e.
|
|
cp xen/.config xen-config
|
|
|
|
# Directory for the artefacts to be dumped into
|
|
mkdir -p binaries
|
|
|
|
collect_xen_artefacts()
|
|
{
|
|
local f
|
|
|
|
for f in xen/xen xen/xen.efi; do
|
|
if [[ -f $f ]]; then
|
|
cp $f binaries/
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
|
|
# Cppcheck analysis invokes Xen-only build
|
|
xen/scripts/xen-analysis.py --run-cppcheck --cppcheck-misra -- -j$(nproc)
|
|
|
|
# Preserve artefacts
|
|
collect_xen_artefacts
|
|
cp xen/cppcheck-report/xen-cppcheck.txt xen-cppcheck.txt
|
|
elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
|
|
# Xen-only build
|
|
make -j$(nproc) xen
|
|
|
|
# Preserve artefacts
|
|
collect_xen_artefacts
|
|
else
|
|
# Full build. Figure out our ./configure options
|
|
cfgargs=()
|
|
cfgargs+=("--enable-docs")
|
|
|
|
# booleans for which compiler is in use
|
|
cc_is_gcc="$($cc --version | grep -q gcc && echo "y" || :)"
|
|
cc_is_clang="$($cc --version | grep -q clang && echo "y" || :)"
|
|
|
|
# The compiler version as an integer. e.g. GCC 4.9.2 => 0x040902
|
|
cc_ver="$($cc -dumpversion | awk -F. '{ printf "0x%02x%02x%02x", $1, $2, $3 }')"
|
|
|
|
if [[ "${cc_is_clang}" == "y" ]]; then
|
|
# SeaBIOS cannot be built with clang
|
|
cfgargs+=("--with-system-seabios=/usr/share/no-seabios.bin")
|
|
# iPXE cannot be built with clang
|
|
cfgargs+=("--with-system-ipxe=/usr/share/no-ipxe.pxe")
|
|
# newlib cannot be built with clang so we cannot build stubdoms
|
|
cfgargs+=("--disable-stubdom")
|
|
fi
|
|
|
|
if ldd /bin/ls | grep -q musl; then
|
|
# disable --disable-werror for QEMUU when building with MUSL
|
|
cfgargs+=("--with-extra-qemuu-configure-args=\"--disable-werror\"")
|
|
fi
|
|
|
|
# QEMU is only for those who ask
|
|
if [[ "$BUILD_QEMU_XEN" != "y" ]]; then
|
|
cfgargs+=("--with-system-qemu=/bin/false")
|
|
fi
|
|
|
|
# SeaBIOS requires GCC 4.6 or later
|
|
if [[ "${cc_is_gcc}" == "y" && "${cc_ver}" -lt 0x040600 ]]; then
|
|
cfgargs+=("--with-system-seabios=/usr/share/no-seabios.bin")
|
|
fi
|
|
|
|
./configure "${cfgargs[@]}"
|
|
make -j$(nproc) dist
|
|
|
|
# Preserve artefacts
|
|
# Note: Some smoke tests depending on finding binaries/xen on a full build
|
|
# even though dist/ contains everything, while some containers don't even
|
|
# build Xen
|
|
cp -r dist binaries/
|
|
cp -r tools/tests binaries/
|
|
collect_xen_artefacts
|
|
fi
|