X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=scripts%2Fcommon%2Fscan-build.sh;h=3782f4f32034c8118dd12e50b7999c31ebeef57a;hb=942c30466ead5ae90452bc97d61c5d761b2ad16e;hp=e46a52034062717f62cff050fc8760f738b2d87f;hpb=a57a60d92c9197bd23c1d4efbc89476a1872a48d;p=lttng-ci.git diff --git a/scripts/common/scan-build.sh b/scripts/common/scan-build.sh index e46a520..3782f4f 100755 --- a/scripts/common/scan-build.sh +++ b/scripts/common/scan-build.sh @@ -1,7 +1,7 @@ #!/bin/bash -exu # -# Copyright (C) 2015 - Jonathan Rajotte-Julien -# 2016 - Michael Jeanson +# Copyright (C) 2015 Jonathan Rajotte-Julien +# Copyright (C) 2019 Michael Jeanson # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,51 +16,103 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# Required variables +WORKSPACE=${WORKSPACE:-} -# do not exit immediately if any command fails -set +e +DEPS_INC="$WORKSPACE/deps/build/include" +DEPS_LIB="$WORKSPACE/deps/build/lib" +DEPS_PKGCONFIG="$DEPS_LIB/pkgconfig" +DEPS_BIN="$WORKSPACE/deps/build/bin" + +export PATH="$DEPS_BIN:$PATH" +export LD_LIBRARY_PATH="$DEPS_LIB:${LD_LIBRARY_PATH:-}" +export PKG_CONFIG_PATH="$DEPS_PKGCONFIG" +export CPPFLAGS="-I$DEPS_INC" +export LDFLAGS="-L$DEPS_LIB" SRCDIR="$WORKSPACE/src/$PROJECT_NAME" TMPDIR="$WORKSPACE/tmp" -PREFIX="$WORKSPACE/build" + +NPROC=$(nproc) +export CFLAGS="-O0 -g -DDEBUG" # Directory to archive the scan-build report SCAN_BUILD_ARCHIVE="${WORKSPACE}/scan-build-archive" -# Create build and tmp directories -rm -rf "$PREFIX" "$TMPDIR" -mkdir -p "$PREFIX" "$TMPDIR" +# Create tmp directory +rm -rf "$TMPDIR" +mkdir -p "$TMPDIR" export TMPDIR # temp directory to store the scan-build report -SCAN_BUILD_TMPDIR=$( mktemp -d ) - -# liburcu -URCU_INCS="$WORKSPACE/deps/liburcu/build/include/" -URCU_LIBS="$WORKSPACE/deps/liburcu/build/lib/" - -# lttng-ust -UST_INCS="$WORKSPACE/deps/lttng-ust/build/include/" -UST_LIBS="$WORKSPACE/deps/lttng-ust/build/lib/" - -export CFLAGS="-O0 -g -DDEBUG" - -export CPPFLAGS="-I$URCU_INCS -I$UST_INCS" -export LDFLAGS="-L$URCU_LIBS -L$UST_LIBS" -export LD_LIBRARY_PATH="$URCU_LIBS:$UST_LIBS:${LD_LIBRARY_PATH:-}" +SCAN_BUILD_TMPDIR=$(mktemp -d) + +case "$PROJECT_NAME" in +babeltrace) + export BABELTRACE_DEV_MODE=1 + export BABELTRACE_DEBUG_MODE=1 + export BABELTRACE_MINIMAL_LOG_LEVEL=TRACE + CONF_OPTS="--enable-python-bindings --enable-python-bindings-doc --enable-python-plugins" + BUILD_TYPE="autotools" + ;; +liburcu) + CONF_OPTS="" + BUILD_TYPE="autotools" + ;; +lttng-modules) + CONF_OPTS="" + BUILD_TYPE="autotools" + ;; +lttng-tools) + CONF_OPTS="" + BUILD_TYPE="autotools" + ;; +lttng-ust) + CONF_OPTS="--enable-java-agent-all --enable-python-agent" + BUILD_TYPE="autotools" + export CLASSPATH="/usr/share/java/log4j-1.2.jar" + ;; +linux-rseq) + CONF_OPTS="" + BUILD_TYPE="linux-rseq" + ;; +*) + echo "Generic project, no configure options." + CONF_OPTS="" + BUILD_TYPE="autotools" + ;; +esac + +if [ -d "$WORKSPACE/src/linux" ]; then + export KERNELDIR="$WORKSPACE/src/linux" +fi # Enter the source directory cd "$SRCDIR" -# Run bootstrap in the source directory prior to configure -./bootstrap - +# Build +case "$BUILD_TYPE" in +autotools) + # Prepare build dir for autotools based projects + if [ -f "./bootstrap" ]; then + ./bootstrap + ./configure $CONF_OPTS + fi -./configure --prefix="$PREFIX" + scan-build -k -o "${SCAN_BUILD_TMPDIR}" make -j"$NPROC" V=1 + ;; +linux-rseq) + make defconfig + make -j"$NPROC" prepare + scan-build -k -o "${SCAN_BUILD_TMPDIR}" make -j"$NPROC" kernel/rseq.o kernel/do_on_cpu/core.o kernel/do_on_cpu/interpreter.o kernel/do_on_cpu/validate.o V=1 + ;; +*) + echo "Unsupported build type: $BUILD_TYPE" + exit 1 + ;; +esac -# generate the scan-build report -scan-build -k -o "${SCAN_BUILD_TMPDIR}" make -j "$(nproc)" # get the directory name of the report created by scan-build SCAN_BUILD_REPORT=$(find "${SCAN_BUILD_TMPDIR}" -maxdepth 1 -not -empty -not -name "$(basename "${SCAN_BUILD_TMPDIR}")")