jjb: Standardize build scripts
authorMichael Jeanson <mjeanson@efficios.com>
Thu, 18 Jul 2019 18:31:22 +0000 (14:31 -0400)
committerMichael Jeanson <mjeanson@efficios.com>
Thu, 18 Jul 2019 18:31:22 +0000 (14:31 -0400)
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
jobs/babeltrace.yaml
jobs/liburcu.yaml
jobs/lttng-ust.yaml
scripts/babeltrace/build.sh
scripts/librseq/build.sh
scripts/liburcu/build.sh
scripts/lttng-ust/build.sh

index 1807ec14fcf4127814af9324d285d95207caec22..85ab54519de4964f2c8de8c7dbc5bb1be3be929d 100644 (file)
     publishers:
       - tap:
           results: 'tap/**/*.log'
+          fail-if-no-results: true
           failed-tests-mark-build-as-failure: true
           todo-is-failure: false
       - warnings:
     publishers:
       - tap:
           results: 'tap/**/*.log'
+          fail-if-no-results: true
           failed-tests-mark-build-as-failure: true
           todo-is-failure: false
       - warnings:
     publishers:
       - tap:
           results: 'tap/**/*.log'
+          fail-if-no-results: true
           failed-tests-mark-build-as-failure: true
           todo-is-failure: false
       - warnings:
index 01b7e48c1a69c84403688fbe31039627f49b1097..c1c3562dd7265f19c0fc6308b4c9c4c13944721a 100644 (file)
     publishers:
       - tap:
           results: 'tap/**/*.log'
+          fail-if-no-results: true
           failed-tests-mark-build-as-failure: true
           todo-is-failure: false
       - warnings:
index ea5548ab9b737793578cee07f772bf8aa79543fb..923dd7e10369a706bcf127d2353490acee70db80 100644 (file)
     publishers:
       - tap:
           results: 'tap/**/*.log'
+          fail-if-no-results: true
           failed-tests-mark-build-as-failure: true
           todo-is-failure: false
       - warnings:
index 744b3cf1c20133769d342bbb655875fed823e339..c18423de4deac6d28df702719ce15448e925f748 100755 (executable)
@@ -170,6 +170,8 @@ sol11-i386)
     export TAR=gtar
     export NPROC=nproc
     export PATH="$PATH:/usr/perl5/bin"
+    export CPPFLAGS="-I/opt/csw/include"
+    export LDFLAGS="-L/opt/csw/lib -R/opt/csw/lib"
     export LD_ALTEXEC=/usr/bin/gld
     export LD=/usr/bin/gld
     export PYTHON="python3"
@@ -343,10 +345,8 @@ $MAKE -j "$($NPROC)" V=1
 $MAKE install DESTDIR="$WORKSPACE"
 
 # Run tests, don't fail now, we want to run the archiving steps
-set +e
-$MAKE --keep-going check
-ret=$?
-set -e
+failed_tests=0
+$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/ "$WORKSPACE/tap"
@@ -361,7 +361,7 @@ find "$WORKSPACE/$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
 # Remove libtool .la files
 find "$WORKSPACE/$PREFIX/lib" -name "*.la" -exec rm -f {} \;
 
-# Exit with the return code of the test suite
-exit $ret
+# Exit with failure if any of the tests failed
+exit $failed_tests
 
 # EOF
index e8a9863a313f140199bbfc2346a3db781107e14a..064a6580e314fe373efef4c4e2c7f82f2ca69f7a 100755 (executable)
@@ -69,7 +69,9 @@ verne() {
     [ "$res" -ne "0" ]
 }
 
-# Required parameters
+# Required variables
+WORKSPACE=${WORKSPACE:-}
+
 arch=${arch:-}
 conf=${conf:-}
 build=${build:-}
@@ -78,14 +80,17 @@ cc=${cc:-}
 
 SRCDIR="$WORKSPACE/src/librseq"
 TMPDIR="$WORKSPACE/tmp"
-PREFIX="$WORKSPACE/build"
+PREFIX="/build"
 
-# Create build and tmp directories
-rm -rf "$PREFIX" "$TMPDIR"
-mkdir -p "$PREFIX" "$TMPDIR"
+# Create tmp directory
+rm -rf "$TMPDIR"
+mkdir -p "$TMPDIR"
 
 export TMPDIR
 export CFLAGS="-g -O2"
+
+# Add the convenience headers in extra to the
+# include path.
 export CPPFLAGS="-I$SRCDIR/extra"
 
 # Set compiler variables
@@ -145,12 +150,19 @@ clang-7)
     ;;
 esac
 
+if [ "x${CC:-}" != "x" ]; then
+    echo "Selected compiler:"
+    "$CC" -v
+fi
+
 # Set platform variables
 case "$arch" in
 *)
     export MAKE=make
     export TAR=tar
     export NPROC=nproc
+    export PYTHON="python3"
+    export PYTHON_CONFIG="python3-config"
     ;;
 esac
 
@@ -162,85 +174,124 @@ cd "$SRCDIR"
 
 # Get source version from configure script
 eval "$(grep '^PACKAGE_VERSION=' ./configure)"
+PACKAGE_VERSION=${PACKAGE_VERSION//\-pre*/}
 
-TARBALL_FILE="librseq-$PACKAGE_VERSION.tar.bz2"
 
 # Set configure options and environment variables for each build
 # configuration.
-CONF_OPTS=""
+CONF_OPTS=("--prefix=$PREFIX")
 case "$conf" in
 static)
-    echo "Static build"
-    CONF_OPTS="--enable-static --disable-shared"
+    echo "Static lib only configuration"
+
+    CONF_OPTS+=("--enable-static" "--disable-shared")
     ;;
 
 *)
-    echo "Standard build"
-    CONF_OPTS=""
+    echo "Standard configuration"
     ;;
 esac
 
 # Build type
-# oot : out-of-tree build
-# dist: build via make dist
-# *   : normal tree build
+# oot     : out-of-tree build
+# dist    : build via make dist
+# oot-dist: build via make dist out-of-tree
+# *       : normal tree build
 #
-# Make sure to move to the build_path and configure
-# before continuing
-BUILD_PATH=$SRCDIR
+# Make sure to move to the build directory and run configure
+# before continuing.
 case "$build" in
 oot)
     echo "Out of tree build"
-    BUILD_PATH=$WORKSPACE/oot
-    mkdir -p "$BUILD_PATH"
-    cd "$BUILD_PATH"
-    "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
+
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
+
+    "$SRCDIR/configure" "${CONF_OPTS[@]}"
     ;;
 
 dist)
+    echo "Distribution in-tree build"
+
+    # Run configure and generate the tar file
+    # in the source directory
+    ./configure
+    $MAKE dist
+
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
+
+    # Extract the distribution tar in the build directory,
+    # ignore the first directory level
+    $TAR xvf "$SRCDIR"/*.tar.* --strip 1
+
+    # Build in extracted source tree
+    ./configure "${CONF_OPTS[@]}"
+    ;;
+
+oot-dist)
     echo "Distribution out of tree build"
-    BUILD_PATH=$(mktemp -d)
 
-    # Initial configure and generate tarball
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
+
+    # Run configure out of tree and generate the tar file
     "$SRCDIR/configure"
     $MAKE dist
 
-    mkdir -p "$BUILD_PATH"
-    cp "./$TARBALL_FILE" "$BUILD_PATH/"
-    cd "$BUILD_PATH"
+    dist_srcdir="$(mktemp -d)"
+    cd "$dist_srcdir"
 
-    # Ignore level 1 of tar
-    $TAR xvf "$TARBALL_FILE" --strip 1
+    # Extract the distribution tar in the new source directory,
+    # ignore the first directory level
+    $TAR xvf "$builddir"/*.tar.* --strip 1
 
-    "$BUILD_PATH/configure" --prefix="$PREFIX" $CONF_OPTS
+    # Create and enter a second temporary build directory
+    builddir="$(mktemp -d)"
+    cd "$builddir"
+
+    # Run configure from the extracted distribution tar,
+    # out of the source tree
+    "$dist_srcdir/configure" "${CONF_OPTS[@]}"
     ;;
 
 *)
     echo "Standard in-tree build"
-    "$BUILD_PATH/configure" --prefix="$PREFIX" $CONF_OPTS
+    ./configure "${CONF_OPTS[@]}"
     ;;
 esac
 
+# We are now inside a configured build directory
+
 # BUILD!
 $MAKE -j "$($NPROC)" V=1
-$MAKE install
 
-# Run tests
+# Install in the workspace
+$MAKE install DESTDIR="$WORKSPACE"
+
+# Run tests, don't fail now, we want to run the archiving steps
+set +e
 $MAKE --keep-going check
+ret=$?
+set -e
 
-# Cleanup
+# Copy tap logs for the jenkins tap parser before cleaning the build dir
+rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$WORKSPACE/tap"
+
+# Clean the build directory
 $MAKE clean
 
 # Cleanup rpath in executables and shared libraries
-find "$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
+#find "$WORKSPACE/$PREFIX/bin" -type f -perm -0500 -exec chrpath --delete {} \;
+find "$WORKSPACE/$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
 
 # Remove libtool .la files
-find "$PREFIX/lib" -name "*.la" -exec rm -f {} \;
+find "$WORKSPACE/$PREFIX/lib" -name "*.la" -exec rm -f {} \;
 
-# Cleanup temp directory of dist build
-if [ "$build" = "dist" ]; then
-    cd "$SRCDIR"
-    rm -rf "$BUILD_PATH"
-fi
+# Exit with the return code of the test suite
+exit $ret
 
 # EOF
index b327896bc477273e944d04a8ca4309b79784c375..5eeb71b931a7ff0a4d746ac8d55c472c8cd37921 100755 (executable)
@@ -69,62 +69,130 @@ verne() {
     [ "$res" -ne "0" ]
 }
 
-# Required parameters
+# Required variables
+WORKSPACE=${WORKSPACE:-}
+
 arch=${arch:-}
 conf=${conf:-}
 build=${build:-}
+cc=${cc:-}
 
 
 SRCDIR="$WORKSPACE/src/liburcu"
 TMPDIR="$WORKSPACE/tmp"
-PREFIX="$WORKSPACE/build"
-
-# The build dir defaults to the source dir
-BUILDDIR="$SRCDIR"
+PREFIX="/build"
 
-# Create build and tmp directories
-rm -rf "$PREFIX" "$TMPDIR"
-mkdir -p "$PREFIX" "$TMPDIR"
+# Create tmp directory
+rm -rf "$TMPDIR"
+mkdir -p "$TMPDIR"
 
 export TMPDIR
 export CFLAGS="-g -O2"
 
+# Set compiler variables
+case "$cc" in
+gcc)
+    export CC=gcc
+    export CXX=g++
+    ;;
+gcc-4.8)
+    export CC=gcc-4.8
+    export CXX=g++-4.8
+    ;;
+gcc-5)
+    export CC=gcc-5
+    export CXX=g++-5
+    ;;
+gcc-6)
+    export CC=gcc-6
+    export CXX=g++-6
+    ;;
+gcc-7)
+    export CC=gcc-7
+    export CXX=g++-7
+    ;;
+gcc-8)
+    export CC=gcc-8
+    export CXX=g++-8
+    ;;
+clang)
+    export CC=clang
+    export CXX=clang++
+    ;;
+clang-3.9)
+    export CC=clang-3.9
+    export CXX=clang++-3.9
+    ;;
+clang-4.0)
+    export CC=clang-4.0
+    export CXX=clang++-4.0
+    ;;
+clang-5.0)
+    export CC=clang-5.0
+    export CXX=clang++-5.0
+    ;;
+clang-6.0)
+    export CC=clang-6.0
+    export CXX=clang++-6.0
+    ;;
+clang-7)
+    export CC=clang-7
+    export CXX=clang++-7
+    ;;
+*)
+    if [ "x$cc" != "x" ]; then
+           export CC="$cc"
+    fi
+    ;;
+esac
+
+if [ "x${CC:-}" != "x" ]; then
+    echo "Selected compiler:"
+    "$CC" -v
+fi
+
 # Set platform variables
 case "$arch" in
 sol10-i386)
     export MAKE=gmake
     export TAR=gtar
     export NPROC=gnproc
-    export BISON=bison
-    export YACC="$BISON -y"
     export PATH="/opt/csw/bin:/usr/ccs/bin:$PATH"
     export CPPFLAGS="-I/opt/csw/include"
     export LDFLAGS="-L/opt/csw/lib -R/opt/csw/lib"
     export PKG_CONFIG_PATH="/opt/csw/lib/pkgconfig"
+    export PYTHON="python3"
+    export PYTHON_CONFIG="python3-config"
     ;;
+
 sol11-i386)
     export MAKE=gmake
     export TAR=gtar
     export NPROC=nproc
     export PATH="$PATH:/usr/perl5/bin"
-    #export LD_ALTEXEC=/usr/sfw/bin/gld
-    #export LD=/usr/sfw/bin/gld
+    export LD_ALTEXEC=/usr/bin/gld
+    export LD=/usr/bin/gld
+    export PYTHON="python3"
+    export PYTHON_CONFIG="python3-config"
     ;;
+
 macosx)
     export MAKE=make
     export TAR=tar
     export NPROC="getconf _NPROCESSORS_ONLN"
-    export BISON="bison"
-    export YACC="$BISON -y"
-    export LDFLAGS="-L/opt/local/lib"
-    export CFLAGS="$CFLAGS -I/opt/local/include"
     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"
+    export PYTHON_CONFIG="python3-config"
     ;;
 
 *)
     export MAKE=make
     export TAR=tar
     export NPROC=nproc
+    export PYTHON="python3"
+    export PYTHON_CONFIG="python3-config"
     ;;
 esac
 
@@ -136,110 +204,144 @@ cd "$SRCDIR"
 
 # Get source version from configure script
 eval "$(grep '^PACKAGE_VERSION=' ./configure)"
+PACKAGE_VERSION=${PACKAGE_VERSION//\-pre*/}
 
 # Set configure options and environment variables for each build
 # configuration.
-CONF_OPTS=""
+CONF_OPTS=("--prefix=$PREFIX")
 case "$conf" in
 static)
-    echo "Static build"
-    CONF_OPTS="--enable-static --disable-shared"
+    echo "Static lib only configuration"
+
+    CONF_OPTS+=("--enable-static" "--disable-shared")
     ;;
 
 tls_fallback)
     echo  "Using pthread_getspecific() to emulate TLS"
-    CONF_OPTS="--disable-compiler-tls"
+    CONF_OPTS+=("--disable-compiler-tls")
     ;;
 
 debug-rcu)
     echo "Enable RCU sanity checks for debugging"
     if vergte "$PACKAGE_VERSION" "0.10"; then
-       CONF_OPTS="--enable-rcu-debug"
+       CONF_OPTS+=("--enable-rcu-debug")
     else
        export CFLAGS="$CFLAGS -DDEBUG_RCU"
     fi
 
     echo "Enable iterator sanity validator"
     if vergte "$PACKAGE_VERSION" "0.11"; then
-       CONF_OPTS+=" --enable-cds-lfht-iter-debug"
+       CONF_OPTS+=("--enable-cds-lfht-iter-debug")
     fi
     ;;
 
 *)
-    echo "Standard build"
-    CONF_OPTS=""
+    echo "Standard configuration"
     ;;
 esac
 
 # Build type
-# oot : out-of-tree build
-# dist: build via make dist
-# *   : normal tree build
+# oot     : out-of-tree build
+# dist    : build via make dist
+# oot-dist: build via make dist out-of-tree
+# *       : normal tree build
 #
-# Make sure to move to the build dir and run configure
+# Make sure to move to the build directory and run configure
 # before continuing.
 case "$build" in
 oot)
     echo "Out of tree build"
 
-    BUILDDIR=$WORKSPACE/oot
-    mkdir -p "$BUILDDIR"
-    cd "$BUILDDIR"
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
 
-    "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
+    "$SRCDIR/configure" "${CONF_OPTS[@]}"
     ;;
 
 dist)
+    echo "Distribution in-tree build"
+
+    # Run configure and generate the tar file
+    # in the source directory
+    ./configure
+    $MAKE dist
+
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
+
+    # Extract the distribution tar in the build directory,
+    # ignore the first directory level
+    $TAR xvf "$SRCDIR"/*.tar.* --strip 1
+
+    # Build in extracted source tree
+    ./configure "${CONF_OPTS[@]}"
+    ;;
+
+oot-dist)
     echo "Distribution out of tree build"
 
-    tar_file="userspace-rcu-$PACKAGE_VERSION.tar.bz2"
+    # Create and enter a temporary build directory
+    builddir=$(mktemp -d)
+    cd "$builddir"
 
-    # Initial configure in src dir and tarball generation
-    ./configure
+    # Run configure out of tree and generate the tar file
+    "$SRCDIR/configure"
     $MAKE dist
 
-    BUILDDIR=$(mktemp -d)
-    mkdir -p "$BUILDDIR"
-    cd "$BUILDDIR"
+    dist_srcdir="$(mktemp -d)"
+    cd "$dist_srcdir"
 
-    # Ignore level 1 of tar
-    $TAR xvf "$SRCDIR/$tar_file" --strip 1
+    # Extract the distribution tar in the new source directory,
+    # ignore the first directory level
+    $TAR xvf "$builddir"/*.tar.* --strip 1
 
-    ./configure --prefix="$PREFIX" $CONF_OPTS
+    # Create and enter a second temporary build directory
+    builddir="$(mktemp -d)"
+    cd "$builddir"
+
+    # Run configure from the extracted distribution tar,
+    # out of the source tree
+    "$dist_srcdir/configure" "${CONF_OPTS[@]}"
     ;;
+
 *)
     echo "Standard in-tree build"
-    ./configure --prefix="$PREFIX" $CONF_OPTS
+    ./configure "${CONF_OPTS[@]}"
     ;;
 esac
 
+# We are now inside a configured build directory
+
 # BUILD!
 $MAKE -j "$($NPROC)" V=1
-$MAKE install
 
-# Run tests
-$MAKE --keep-going check
+# Install in the workspace
+$MAKE install DESTDIR="$WORKSPACE"
+
+# Run tests, don't fail now, we want to run the archiving steps
+failed_tests=0
+$MAKE --keep-going check || failed_tests=1
 # Only run regtest for 0.9 and up
 if vergte "$PACKAGE_VERSION" "0.9"; then
-   $MAKE --keep-going regtest
+   $MAKE --keep-going regtest || failed_tests=1
 fi
 
-# Copy tap logs for the jenkins tap parser
+# Copy tap logs for the jenkins tap parser before cleaning the build dir
 rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$WORKSPACE/tap"
 
-# Cleanup
+# Clean the build directory
 $MAKE clean
 
 # Cleanup rpath in executables and shared libraries
-find "$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
+#find "$WORKSPACE/$PREFIX/bin" -type f -perm -0500 -exec chrpath --delete {} \;
+find "$WORKSPACE/$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
 
 # Remove libtool .la files
-find "$PREFIX/lib" -name "*.la" -exec rm -f {} \;
+find "$WORKSPACE/$PREFIX/lib" -name "*.la" -exec rm -f {} \;
 
-# Cleanup temp directory of dist build
-if [ "$build" = "dist" ]; then
-    cd "$SRCDIR"
-    rm -rf "$BUILDDIR"
-fi
+# Exit with failure if any of the tests failed
+exit $failed_tests
 
 # EOF
index 5bc720e62d36452f9f918f710fdc8e4cc2a1c1c2..4f36982b9b019cb8af0d8cf3a9733c1e8a43c096 100755 (executable)
@@ -80,6 +80,8 @@ cc=${cc:-}
 
 DEPS_INC="$WORKSPACE/deps/build/include"
 DEPS_LIB="$WORKSPACE/deps/build/lib"
+#DEPS_BIN="$WORKSPACE/deps/build/bin"
+#DEPS_JAVA="$WORKSPACE/deps/build/share/java"
 
 export LD_LIBRARY_PATH="$DEPS_LIB:${LD_LIBRARY_PATH:-}"
 export CPPFLAGS="-I$DEPS_INC"
@@ -177,16 +179,19 @@ cd "$SRCDIR"
 
 # Get source version from configure script
 eval "$(grep '^PACKAGE_VERSION=' ./configure)"
+PACKAGE_VERSION=${PACKAGE_VERSION//\-pre*/}
 
 # Set configure options and environment variables for each build
 # configuration.
 CONF_OPTS=("--prefix=$PREFIX")
 case "$conf" in
 static)
-    # Unsupported! liblttng-ust can't pull in it's static (.a) dependencies.
     echo "Static lib only configuration"
 
     CONF_OPTS+=("--enable-static" "--disable-shared")
+
+    # Unsupported! liblttng-ust can't pull in it's static (.a) dependencies.
+    exit 1
     ;;
 
 agents)
@@ -287,10 +292,8 @@ $MAKE -j "$($NPROC)" V=1
 $MAKE install DESTDIR="$WORKSPACE"
 
 # Run tests, don't fail now, we want to run the archiving steps
-set +e
-$MAKE --keep-going check
-ret=$?
-set -e
+failed_tests=0
+$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/ "$WORKSPACE/tap"
@@ -299,13 +302,13 @@ rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='
 $MAKE clean
 
 # Cleanup rpath in executables and shared libraries
-find "$WORKSPACE/$PREFIX/bin" -type f -perm -0500 -exec chrpath --delete {} \;
+#find "$WORKSPACE/$PREFIX/bin" -type f -perm -0500 -exec chrpath --delete {} \;
 find "$WORKSPACE/$PREFIX/lib" -name "*.so" -exec chrpath --delete {} \;
 
 # Remove libtool .la files
 find "$WORKSPACE/$PREFIX/lib" -name "*.la" -exec rm -f {} \;
 
-# Exit with the return code of the test suite
-exit $ret
+# Exit with failure if any of the tests failed
+exit $failed_tests
 
 # EOF
This page took 0.032649 seconds and 4 git commands to generate.