jjb: babeltrace: use clang-format-16
[lttng-ci.git] / scripts / binutils-gdb / build.sh
index 61fe515ed6329a6ea345c2d68720097c6d623e1c..3d7c561a477f60e75105289a7c2f9ca803a8fe5a 100755 (executable)
 
 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
This page took 0.024156 seconds and 4 git commands to generate.