X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=scripts%2Flttng-tools%2Frelease.sh;h=430ab4e59259cf763a27c7112737d9b6c441a3d0;hb=048c647e998eb004b780d5ef6fd1b9aa73f5f444;hp=a2b61ca77e09dfcaa5a8120e7ef9f002d6e5f333;hpb=c95cf818753c9d8f6b6c16709c4c216117088dd0;p=lttng-ci.git diff --git a/scripts/lttng-tools/release.sh b/scripts/lttng-tools/release.sh index a2b61ca..430ab4e 100644 --- a/scripts/lttng-tools/release.sh +++ b/scripts/lttng-tools/release.sh @@ -1,4 +1,4 @@ -#!/bin/bash -exu +#!/bin/bash # # Copyright (C) 2015 Jonathan Rajotte-Julien # Copyright (C) 2020 Michael Jeanson @@ -16,6 +16,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +set -exu + # Version compare functions vercomp () { set +u @@ -71,6 +73,9 @@ verne() { export TERM="xterm-256color" +# Required variables +WORKSPACE=${WORKSPACE:-} + DEPS_INC="$WORKSPACE/deps/build/include" DEPS_LIB="$WORKSPACE/deps/build/lib" DEPS_PKGCONFIG="$DEPS_LIB/pkgconfig" @@ -84,11 +89,13 @@ export CPPFLAGS="-I$DEPS_INC" export LDFLAGS="-L$DEPS_LIB" export JAVA_HOME="/usr/lib/jvm/default-java" -export CLASSPATH="$DEPS_JAVA/*:/usr/share/java/*" +export CLASSPATH="$DEPS_JAVA/*:/usr/share/java/log4j-core.jar:/usr/share/java/log4j-1.2.jar" SRCDIR="$WORKSPACE/src/lttng-tools" +OUTDIR="$WORKSPACE/out" TAPDIR="$WORKSPACE/tap" -PREFIX="$WORKSPACE/out" + +failed_tests=0 # Create tmp directory TMPDIR="$WORKSPACE/tmp" @@ -114,26 +121,23 @@ fi export BABELTRACE_PLUGIN_PATH="$DEPS_LIB/babeltrace2/plugins/" export LIBBABELTRACE2_PLUGIN_PROVIDER_DIR="$DEPS_LIB/babeltrace2/plugin-providers/" -PYTHON2=python2 PYTHON3=python3 # Set default python to python3 for the bindings export PYTHON="$PYTHON3" export PYTHON_CONFIG="/usr/bin/$PYTHON3-config" -P2_VERSION=$($PYTHON2 -c "import sys;print(sys.version[:3])") -P3_VERSION=$($PYTHON3 -c "import sys;print(sys.version[:3])") +P3_VERSION=$($PYTHON3 -c 'import sys;v = sys.version.split()[0].split("."); print("{}.{}".format(v[0], v[1]))') -UST_PYTHON2="$WORKSPACE/deps/build/lib/python$P2_VERSION/site-packages" UST_PYTHON3="$WORKSPACE/deps/build/lib/python$P3_VERSION/site-packages" -export PYTHONPATH="$UST_PYTHON2:$UST_PYTHON3" +export PYTHONPATH="$UST_PYTHON3" # Create build and tmp directories -rm -rf "$PREFIX" -mkdir -p "$PREFIX" +rm -rf "$OUTDIR" "$TAPDIR" +mkdir -p "$OUTDIR" "$TAPDIR" @@ -146,11 +150,14 @@ cd "$SRCDIR" # Get source version from configure script eval "$(grep '^PACKAGE_VERSION=' ./configure)" +PACKAGE_VERSION=${PACKAGE_VERSION//\-pre*/} + +CONF_OPTS=("--enable-python-bindings" "--enable-test-java-agent-all" "--enable-test-python3-agent") TARBALL_FILE="lttng-tools-$PACKAGE_VERSION.tar.bz2" # Make sure the reported version matches the current git tag -GIT_TAG="$(git describe --exact-match --tags $(git log -n1 --pretty='%h')|| echo 'undefined')" +GIT_TAG="$(git describe --exact-match --tags "$(git log -n1 --pretty='%h')" || echo 'undefined')" if [ "v$PACKAGE_VERSION" != "$GIT_TAG" ]; then echo "Git checkout is not tagged or doesn't match the reported version." @@ -160,7 +167,7 @@ fi # Generate release tarball ./configure make dist -cp "./$TARBALL_FILE" "$PREFIX/" +cp "./$TARBALL_FILE" "$OUTDIR/" # Allow core dumps @@ -171,27 +178,54 @@ ulimit -c unlimited export LTTNG_SESSIOND_PATH="/bin/true" -# Do an in-tree test build +## Do an in-tree test build mkdir "$WORKSPACE/intree" cd "$WORKSPACE/intree" || exit 1 -tar xvf "$PREFIX/$TARBALL_FILE" --strip 1 -./configure --prefix="$(mktemp -d)" --enable-python-bindings --enable-test-java-agent-all --enable-test-python-agent-all + +tar xvf "$OUTDIR/$TARBALL_FILE" --strip 1 +./configure --prefix="$(mktemp -d)" "${CONF_OPTS[@]}" + +# BUILD! make -j "$(nproc)" V=1 -make check + make install + +# Run tests, don't fail now, we want to run the archiving steps +make --keep-going check || failed_tests=1 + +# Copy tap logs for the jenkins tap parser before cleaning the build dir +rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$TAPDIR/intree" + +# Clean the build directory make clean -# do an out-of-tree test build + +## Do an out-of-tree test build mkdir "$WORKSPACE/oot" mkdir "$WORKSPACE/oot/src" mkdir "$WORKSPACE/oot/build" cd "$WORKSPACE/oot/src" || exit 1 -tar xvf "$PREFIX/$TARBALL_FILE" --strip 1 + +tar xvf "$OUTDIR/$TARBALL_FILE" --strip 1 cd "$WORKSPACE/oot/build" || exit 1 -"$WORKSPACE/oot/src/configure" --prefix="$(mktemp -d)" --enable-python-bindings --enable-test-java-agent-all --enable-test-python-agent-all +"$WORKSPACE/oot/src/configure" --prefix="$(mktemp -d)" "${CONF_OPTS[@]}" + +# BUILD! make -j "$(nproc)" V=1 -make check + make install + +# Run tests, don't fail now, we want to run the archiving steps +make --keep-going check || failed_tests=1 + +# Copy tap logs for the jenkins tap parser before cleaning the build dir +rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$TAPDIR/oot" + +# Clean the build directory make clean + +# Exit with failure if any of the tests failed +exit $failed_tests + # EOF