diff --git a/scripts/run-regression-tests b/scripts/run-regression-tests index 4a93159a4..c2dab0ed9 100755 --- a/scripts/run-regression-tests +++ b/scripts/run-regression-tests @@ -58,12 +58,15 @@ source "$(dirname "$0")/kernel-functions" function usage { - echo "Usage: $0 [-c ] [-d ] [-f] [-h] [-j ] [-p ] [-q] ..." + echo "Usage: $0 [-c ] [-d ] [-h] [-j ] [-k] [-l]" \ + "[-p] [-q] ..." echo " -c - cache directory for Linux kernel tarballs." echo " -d - directory for temporary regression test files." echo " -h - display this help information." echo " -j - number of jobs that 'make' should run simultaneously." echo " -k - remove temporary files before exiting." + echo " -l - skip local SCST compilation." + echo " -p - generate separate kernel patches." echo " -q - download kernel sources silently." echo " ... - kernel versions to test." } @@ -83,15 +86,18 @@ function test_scst_tree_patches { if [ "${rc}" = 0 ]; then echo "OK" fi + return "${rc}" } # Copy the entire SCST source code tree from "$1" into the current directory. # Only copy those files which are administered by Subversion. function duplicate_scst_source_tree { if [ -e "$1/AskingQuestions" ]; then - "${scriptsdir}"/list-source-files "$1" | - tar -C "$1" --files-from=- -c -f - | - tar -x -f - + ( set -o pipefail + "${scriptsdir}"/list-source-files "$1" | + tar -C "$1" --files-from=- -c -f - | + tar -x -f - + ) else return 1 fi @@ -114,7 +120,6 @@ function make_rpm { function make_dpkg { local outputfile="${outputdir}/make-dpkg-output.txt" - outputfile="${outputdir}/make-${t}-output.txt" echo "Testing whether 'make dpkg' works fine ..." if make dpkg > "${outputfile}" 2>&1; then echo "OK" @@ -210,9 +215,11 @@ function generate_kernel_patch { kver="$(kernel_version "${1/^*}")" driver_options=(-l) - "${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" "$2" "$1" > "${patchfile}" + "${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" "$2" "$1" \ + > "${patchfile}" || return $? - "${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -n "$2" "$1" > "${patchfile_m}" + "${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -n "$2" "$1" \ + > "${patchfile_m}" || return $? "${scriptsdir}"/generate-kernel-patch "${driver_options[@]}" -p "${outputdir}/${patchdir}" "$2" "$1" } @@ -339,7 +346,8 @@ CONFIG_LTO_CLANG \ rm -f "${patchoutput}" for p in "${outputdir}/${patchdir}"/*; do echo "==== $p" >>"${patchoutput}" - patch -p1 -f -s <"${p}" >>"${patchoutput}" 2>&1 + patch -p1 -f -s <"${p}" >>"${patchoutput}" 2>&1 || + exit $? done fi && make -s allmodconfig &>"${outputdir}/make-config-output.txt" && @@ -620,10 +628,11 @@ fi if ! mkdir -p "${outputdir}"; then if [ -e "${outputdir}" ]; then - echo "Error: directory ${outputdir} already exists." + echo "Error: path ${outputdir} exists and is not a directory." else echo "Error: could not create directory ${outputdir}." fi + exit 1 fi test_scst_tree_patches || exit $? @@ -640,8 +649,10 @@ if [ "${run_local_compilation}" = "true" ]; then fi fi +global_multiple_patches="${multiple_patches}" for kv in ${kernel_versions} do + multiple_patches="${global_multiple_patches}" echo "==========================" printf "= kernel %-15s =\n" "${kv}" echo "==========================" @@ -653,13 +664,12 @@ do run_sparse="true" run_smatch="true" ipv6="true" - global_multiple_patches="${multiple_patches}" while true; do kv_without_opt="${kv%-?}" if [ "${kv_without_opt}" = "${kv}" ]; then kv_without_opt="${kv%-??}" fi - kopt="${kv#${kv_without_opt}}" + kopt="${kv#"${kv_without_opt}"}" case "${kopt}" in '-4') ipv6="false";; '-f') full_check="true";;