X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=scripts%2Fbinutils-gdb%2Fbuild.sh;h=3d7c561a477f60e75105289a7c2f9ca803a8fe5a;hb=9246f142afaceec835664f0d5b1c78cb5cf0f92b;hp=61fe515ed6329a6ea345c2d68720097c6d623e1c;hpb=f561bfa091324d53901386cf782cc74ed455effb;p=lttng-ci.git diff --git a/scripts/binutils-gdb/build.sh b/scripts/binutils-gdb/build.sh index 61fe515..3d7c561 100755 --- a/scripts/binutils-gdb/build.sh +++ b/scripts/binutils-gdb/build.sh @@ -17,6 +17,44 @@ set -exu +mktemp_compat() { + case "$platform" in + macos*) + # On MacOSX, mktemp doesn't respect TMPDIR in the same way as many + # other systems. Use the final positional argument to force the + # tempfile or tempdir to be created inside $TMPDIR, which must + # already exist. + if [ -n "${TMPDIR}" ] ; then + mktemp "${@}" "${TMPDIR}/tmp.XXXXXXXXXX" + else + mktemp "${@}" + fi + ;; + *) + mktemp "${@}" + ;; + esac +} + +print_header() { + set +x + + local message=" $1 " + local message_len + local padding_len + + message_len="${#message}" + padding_len=$(( (80 - (message_len)) / 2 )) + + printf '\n'; printf -- '#%.0s' {1..80}; printf '\n' + printf -- '-%.0s' {1..80}; printf '\n' + printf -- '#%.0s' $(seq 1 $padding_len); printf '%s' "$message"; printf -- '#%.0s' $(seq 1 $padding_len); printf '\n' + printf -- '-%.0s' {1..80}; printf '\n' + printf -- '#%.0s' {1..80}; printf '\n\n' + + set -x +} + failed_configure() { # Assume we are in the configured build directory echo "#################### BEGIN config.log ####################" @@ -150,6 +188,18 @@ SRCDIR="$WORKSPACE/src/binutils-gdb" 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" @@ -158,19 +208,38 @@ export TMPDIR 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 @@ -178,6 +247,10 @@ if use_ccache; then 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" @@ -210,6 +283,12 @@ case "$conf" in ;; esac +case "$platform" in +macos-*) + CONF_OPTS+=("--disable-werror") + ;; +esac + # Build type # oot : out-of-tree build # dist : build via make dist @@ -223,7 +302,7 @@ case "$build" in echo "Out of tree build" # Create and enter a temporary build directory - builddir=$(mktemp -d) + builddir=$(mktemp_compat -d) cd "$builddir" "$SRCDIR/configure" "${CONF_OPTS[@]}" || failed_configure @@ -233,10 +312,17 @@ esac # 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) @@ -251,7 +337,10 @@ esac # 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" @@ -901,7 +990,7 @@ grep --extended-regexp --regexp="^(FAIL|XPASS|UNRESOLVED|DUPLICATE|ERROR):" "${W # 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