mirror of
https://git.code.sf.net/p/linux-ima/ima-evm-utils
synced 2025-04-26 22:02:31 +02:00

Unlike the original ima-evm-utils ima_hash.test and sign_verify.test selftests, kernel tests may fail for any number of reasons (e.g. kernel config, permissions, missing applications, test infrastructure). For these tests, the full test log is needed to analyze the failure. Create a phony target in tests/Makefile.am named "check-logs". Based on test name, output different amounts of the test log. Reviewed-by: Petr Vorel <pvorel@suse.cz> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
114 lines
2.4 KiB
Bash
Executable File
114 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
|
|
|
if [ -n "$CI" ]; then
|
|
# If we under CI only thing we can analyze is logs so better to enable
|
|
# verbosity to a maximum.
|
|
set -x
|
|
# This is to make stdout and stderr synchronous in the logs.
|
|
exec 2>&1
|
|
|
|
mount -t securityfs -o rw securityfs /sys/kernel/security
|
|
fi
|
|
|
|
set -e
|
|
|
|
CC="${CC:-gcc}"
|
|
CFLAGS="${CFLAGS:--Wformat -Werror=format-security -Werror=implicit-function-declaration -Werror=return-type -fno-common}"
|
|
PREFIX="${PREFIX:-$HOME/ima-evm-utils-install}"
|
|
|
|
export LD_LIBRARY_PATH="$PREFIX/lib64:$PREFIX/lib:/usr/local/lib64:/usr/local/lib"
|
|
export PATH="$PREFIX/bin:/usr/local/bin:$PATH"
|
|
|
|
title()
|
|
{
|
|
echo "===== $1 ====="
|
|
}
|
|
|
|
log_exit()
|
|
{
|
|
local ret="${3:-$?}"
|
|
local log="$1"
|
|
local msg="$2"
|
|
local prefix
|
|
|
|
echo "=== $log ==="
|
|
[ $ret -eq 0 ] || prefix="FAIL: "
|
|
cat $log
|
|
echo
|
|
echo "$prefix$msg, see output of $log above"
|
|
exit $ret
|
|
}
|
|
|
|
cd `dirname $0`
|
|
|
|
if [ "$COMPILE_SSL" ]; then
|
|
echo "COMPILE_SSL: $COMPILE_SSL"
|
|
export CFLAGS="-I/opt/openssl3/include $CFLAGS"
|
|
export LD_LIBRARY_PATH="/opt/openssl3/lib64:/opt/openssl3/lib:$HOME/src/ima-evm-utils/src/.libs:$LD_LIBRARY_PATH"
|
|
export LDFLAGS="-L/opt/openssl3/lib64 -L/opt/openssl3/lib $LDFLAGS"
|
|
export PATH="/opt/openssl3/bin:$HOME/src/ima-evm-utils/src/.libs:$PATH"
|
|
fi
|
|
|
|
case "$VARIANT" in
|
|
i386)
|
|
echo "32-bit compilation"
|
|
export CFLAGS="-m32 $CFLAGS" LDFLAGS="-m32 $LDFLAGS"
|
|
export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
|
|
;;
|
|
cross-compile)
|
|
host="${CC%-gcc}"
|
|
export CROSS_COMPILE="${host}-"
|
|
host="--host=$host"
|
|
echo "cross compilation: $host"
|
|
echo "CROSS_COMPILE: '$CROSS_COMPILE'"
|
|
;;
|
|
*)
|
|
if [ "$VARIANT" ]; then
|
|
echo "Wrong VARIANT: '$VARIANT'" >&2
|
|
exit 1
|
|
fi
|
|
echo "native build"
|
|
;;
|
|
esac
|
|
|
|
title "compiler version"
|
|
$CC --version
|
|
echo "CFLAGS: '$CFLAGS'"
|
|
echo "LDFLAGS: '$LDFLAGS'"
|
|
echo "PREFIX: '$PREFIX'"
|
|
|
|
title "configure"
|
|
./autogen.sh
|
|
./configure --prefix=$PREFIX $host || log_exit config.log "configure failed"
|
|
|
|
title "make"
|
|
make -j$(nproc)
|
|
make install
|
|
|
|
title "test"
|
|
if [ "$VARIANT" = "cross-compile" ]; then
|
|
echo "skip make check on cross compilation"
|
|
exit 0
|
|
fi
|
|
|
|
ret=0
|
|
VERBOSE=1 make check || ret=$?
|
|
|
|
title "logs"
|
|
if [ $ret -eq 0 ]; then
|
|
cd tests; make check_logs; cd ..
|
|
exit 0
|
|
fi
|
|
|
|
cat tests/test-suite.log
|
|
|
|
if [ $ret -eq 77 ]; then
|
|
msg="WARN: some tests skipped"
|
|
ret=0
|
|
else
|
|
msg="FAIL: tests exited: $ret"
|
|
fi
|
|
|
|
log_exit tests/test-suite.log "$msg" $ret
|