line_re = re.compile(
r"^(PASS|XPASS|FAIL|XFAIL|KFAIL|DUPLICATE|UNTESTED|UNSUPPORTED|UNRESOLVED): (.*?\.exp): (.*)"
)
+running_re = re.compile(r"^Running .*/(gdb\.[^/]+/.*\.exp)")
+error_re = re.compile(r"^ERROR: (.*)")
pass_count = 0
fail_count = 0
)
SubElement(testsuite, "properties")
+cur_test = None
+
for line in sys.stdin:
+ m = running_re.match(line)
+ if m:
+ cur_test = m.group(1)
+ continue
+
+ m = error_re.match(line)
+ if m:
+ test = cur_test if cur_test else "<unknown test>"
+ msg = m.group(1)
+ print("ERROR: {} - {}".format(test, msg), file=sys.stderr)
+ error_count += 1
+
+ testcase_name = test
+ testcase = SubElement(
+ testsuite,
+ "testcase",
+ {"name": testcase_name, "classname": "classname", "time": "0"},
+ )
+ SubElement(testcase, "error", {"type": "ERROR"})
+
m = line_re.match(line)
if not m:
continue
else:
assert False
-testsuite.attrib["tests"] = str(pass_count + fail_count + skip_count)
+testsuite.attrib["tests"] = str(pass_count + fail_count + skip_count + error_count)
testsuite.attrib["failures"] = str(fail_count)
testsuite.attrib["skipped"] = str(skip_count)
testsuite.attrib["errors"] = str(error_count)
TMPDIR="$WORKSPACE/tmp"
PREFIX="/build"
+function use_ccache()
+{
+ case "$platform" in
+ macos-*)
+ return 1
+ ;;
+ *)
+ return 0
+ ;;
+ esac
+}
+
# Create tmp directory
rm -rf "$TMPDIR"
mkdir -p "$TMPDIR"
export TMPDIR
-export CFLAGS="-O2 -fsanitize=address"
-export CXXFLAGS="-O2 -fsanitize=address -D_GLIBCXX_DEBUG=1"
+export CFLAGS="-O2 -g -fsanitize=address"
+export CXXFLAGS="-O2 -g -fsanitize=address -D_GLIBCXX_DEBUG=1"
export LDFLAGS="-fsanitize=address"
-export CC="ccache cc"
-export CXX="ccache c++"
+export CC="cc"
+export CXX="c++"
+
+if use_ccache; then
+ CC="ccache $CC"
+ CXX="ccache $CXX"
+fi
+
+# To make GDB find libcc1.so
+export LD_LIBRARY_PATH="/usr/lib/gcc/x86_64-linux-gnu/11:${LD_LIBRARY_PATH:-}"
# Set platform variables
+export TAR=tar
+export MAKE=make
+
case "$platform" in
+macos-*)
+ export NPROC="getconf _NPROCESSORS_ONLN"
+ export PATH="/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
+ export CPPFLAGS="-I/opt/local/include"
+ export LDFLAGS="-L/opt/local/lib"
+ export PYTHON="python3.9"
+ export PYTHON_CONFIG="python3.9-config"
+ ;;
*)
- export MAKE=make
- export TAR=tar
export NPROC=nproc
;;
esac
# Print build env details
+print_header "Build environment details"
+print_hardware || true
print_os || true
print_tooling || true
ccache -c
fi
+# This job has been seen generating cores in /tmp, filling and and causing
+# problems. Remove any leftover core from a previous job.
+rm /tmp/core.* || true
+
# Enter the source directory
cd "$SRCDIR"
;;
esac
+case "$platform" in
+macos-*)
+ CONF_OPTS+=("--disable-werror")
+ ;;
+esac
+
# Build type
# oot : out-of-tree build
# dist : build via make dist
# We are now inside a configured build directory
# BUILD!
-$MAKE -j "$($NPROC)" V=1 MAKEINFO=/bin/true
+$MAKE -j "$($NPROC)" V=1 MAKEINFO=true
# Install in the workspace
-$MAKE install DESTDIR="$WORKSPACE"
+$MAKE install DESTDIR="$WORKSPACE" MAKEINFO=true
+
+case "$platform" in
+macos-*)
+ # Stop there, don't run tests on macOS.
+ exit 0
+ ;;
+esac
case "$target_board" in
unix | native-gdbserver | native-extended-gdbserver)
# Run tests, don't fail now, we know that "make check" is going to fail,
# since some tests don't pass.
-$MAKE -C gdb --keep-going check -j "$($NPROC)" RUNTESTFLAGS="$RUNTESTFLAGS" FORCE_PARALLEL="1" || true
+$MAKE -C gdb/testsuite site.exp
+# shellcheck disable=SC2016
+echo 'set gdb_test_timeout [expr 5 * $timeout]' >> gdb/testsuite/site.exp
+$MAKE -C gdb --keep-going check RUNTESTFLAGS="$RUNTESTFLAGS" || true
# Copy the dejagnu test results for archiving before cleaning the build dir
mkdir "${WORKSPACE}/results"
known_failures_re_file="known-failures-re-${target_board}"
grep --invert-match --fixed-strings --file="$known_failures_file" "${WORKSPACE}/results/gdb.sum" | \
grep --invert-match --extended-regexp --file="$known_failures_re_file" > "${WORKSPACE}/results/gdb.filtered.sum"
-grep --extended-regexp --regexp="^(FAIL|XPASS|UNRESOLVED|DUPLICATE):" "${WORKSPACE}/results/gdb.filtered.sum" > "${WORKSPACE}/results/gdb.fail.sum" || true
+grep --extended-regexp --regexp="^(FAIL|XPASS|UNRESOLVED|DUPLICATE|ERROR):" "${WORKSPACE}/results/gdb.filtered.sum" > "${WORKSPACE}/results/gdb.fail.sum" || true
# For informational purposes: check if some known failure lines did not appear
# in the gdb.sum.
echo "Known failures that don't appear in gdb.sum:"
-while read line; do
+while read -r line; do
if ! grep --silent --fixed-strings "$line" "${WORKSPACE}/results/gdb.sum"; then
echo "$line"
fi