Files
Jan Beulich 1615934e29 CI: collect certain intermediate files as artifacts (part 2)
Build issues may also surface for analysis jobs. Collect intermediate
files (if any) there as well. Include xen/.config too, since it's not
otherwise collected.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
2026-05-22 08:17:34 +02:00

79 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# Stop immediately if any executed command has exit status different from 0.
set -e
script_name="$(basename "$0")"
fatal() {
echo "${script_name}: $*" >&2
exit 1
}
usage() {
fatal "Usage: ${script_name} <ARM64|X86_64>"
}
if [ $# -ne 1 ]; then
usage
fi
if [ "$1" = "X86_64" ]; then
export CROSS_COMPILE=
export XEN_TARGET_ARCH=x86_64
elif [ "$1" = "ARM64" ]; then
export CROSS_COMPILE=aarch64-linux-gnu-
export XEN_TARGET_ARCH=arm64
else
fatal "Unknown configuration: $1"
fi
if [[ -f /proc/cpuinfo ]]; then
PROCESSORS=$(grep -c ^processor /proc/cpuinfo)
else
PROCESSORS=6
fi
# Variables driving the build
CC=${CROSS_COMPILE}gcc-12
CXX=${CROSS_COMPILE}g++-12
runtime_failures_docs() {
doc="C-runtime-failures.rst"
builddir="automation/eclair_analysis"
cd "${builddir}"
printf "/*\n\n" >"${doc}.c"
sed -e 's|\*/|*//*|g' "../../docs/misra/${doc}" >>"${doc}.c"
# At least a dummy decl is needed to comply with the C standard.
printf "\n\n*/\ntypedef int dummy_typedef;\n" >>"${doc}.c"
# The C language standard applicable to Xen is C99 (with extensions),
# therefore even this dummy file needs to be compiled with -std=c99.
# Cannot redirect to /dev/null because it would be excluded from the analysis
"${CC}" -std=c99 -c "${doc}.c" -o "${doc}.o"
cd -
}
(
runtime_failures_docs
ret=0
mkdir -p intermediates
make "-j${PROCESSORS}" "-l${PROCESSORS}.0" \
"CROSS_COMPILE=${CROSS_COMPILE}" \
"CC=${CC}" \
"CXX=${CXX}" \
"XEN_TARGET_ARCH=${XEN_TARGET_ARCH}" \
-C xen || ret=$?
# Preserve Xen intermediate files. Some may be there only upon build failure.
for f in xen/.config xen/.xen-syms.* xen/.xen.efi.*; do
if [[ -f $f ]]; then
cp $f intermediates/
fi
done
exit $ret
)