jjb: Enable python in bt2 'std' config
[lttng-ci.git] / scripts / babeltrace / build.sh
index 18532cbd1f1699bb1f4c826c515f9780b2c76393..fbf05c4c5408f5fd1d59fe98d490fe1784ad912e 100755 (executable)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Version compare functions
+vercomp () {
+    set +u
+    if [[ "$1" == "$2" ]]; then
+        return 0
+    fi
+    local IFS=.
+    local i ver1=($1) ver2=($2)
+    # fill empty fields in ver1 with zeros
+    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
+        ver1[i]=0
+    done
+    for ((i=0; i<${#ver1[@]}; i++)); do
+        if [[ -z ${ver2[i]} ]]; then
+            # fill empty fields in ver2 with zeros
+            ver2[i]=0
+        fi
+        if ((10#${ver1[i]} > 10#${ver2[i]})); then
+            return 1
+        fi
+        if ((10#${ver1[i]} < 10#${ver2[i]})); then
+            return 2
+        fi
+    done
+    set -u
+    return 0
+}
+
+verlte() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "0" ] || [ "$res" -eq "2" ]
+}
+
+verlt() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "2" ]
+}
+
+vergte() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "0" ] || [ "$res" -eq "1" ]
+}
+
+vergt() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "1" ]
+}
+
+verne() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -ne "0" ]
+}
+
 # Required parameters
 arch=${arch:-}
 conf=${conf:-}
 build=${build:-}
+cc=${cc:-}
 
 
 SRCDIR="$WORKSPACE/src/babeltrace"
@@ -31,70 +85,174 @@ rm -rf "$PREFIX" "$TMPDIR"
 mkdir -p "$PREFIX" "$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
-solaris10)
-    MAKE=gmake
-    TAR=gtar
-    NPROC=gnproc
-    BISON=bison
-    YACC="$BISON -y"
-    ;;
-solaris11)
-    MAKE=gmake
-    TAR=gtar
-    NPROC=nproc
-    BISON="/opt/csw/bin/bison"
-    YACC="$BISON -y"
+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"
+    ;;
+sol11-i386)
+    export MAKE=gmake
+    export TAR=gtar
+    export NPROC=nproc
     export PATH="$PATH:/usr/perl5/bin"
+    export LD_ALTEXEC=/usr/bin/gld
+    export LD=/usr/bin/gld
     ;;
 macosx)
-    MAKE=make
-    TAR=tar
-    NPROC="getconf _NPROCESSORS_ONLN"
-    BISON="bison"
-    YACC="$BISON -y"
+    export MAKE=make
+    export TAR=tar
+    export NPROC="getconf _NPROCESSORS_ONLN"
+    export BISON="bison"
+    export YACC="$BISON -y"
     export PATH="/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
-    export CFLAGS="-I/opt/local/include"
+    export CFLAGS="$CFLAGS -I/opt/local/include"
     export LDFLAGS="-L/opt/local/lib"
     ;;
 *)
-    MAKE=make
-    TAR=tar
-    NPROC=nproc
-    BISON=bison
-    YACC="$BISON -y"
+    export MAKE=make
+    export TAR=tar
+    export NPROC=nproc
     ;;
 esac
 
+# Enter the source directory
+cd "$SRCDIR"
+
+# Run bootstrap in the source directory prior to configure
+./bootstrap
+
+# Get source version from configure script
+eval "$(grep '^PACKAGE_VERSION=' ./configure)"
+
+# Enable dev mode by default for BT 2.0 builds
+export BABELTRACE_DEBUG_MODE=1
+export BABELTRACE_DEV_MODE=1
+export BABELTRACE_MINIMAL_LOG_LEVEL=TRACE
+
 # Set configure options for each build configuration
 CONF_OPTS=""
 case "$conf" in
 static)
     echo "Static build"
     CONF_OPTS="--enable-static --disable-shared"
+    if vergte "$PACKAGE_VERSION" "2.0"; then
+        CONF_OPTS="${CONF_OPTS} --enable-built-in-plugins"
+    fi
     ;;
 python-bindings)
     echo "Build with python bindings"
     # We only support bindings built with Python 3
     export PYTHON="python3"
-    export PYTHON_CONFIG="/usr/bin/python3-config"
+    export PYTHON_CONFIG="python3-config"
     CONF_OPTS="--enable-python-bindings"
+
+    if vergte "$PACKAGE_VERSION" "2.0"; then
+        CONF_OPTS="${CONF_OPTS} --enable-python-bindings-doc --enable-python-plugins"
+    fi
+    ;;
+prod)
+    echo "Production build"
+
+    # Unset the developper variables
+    unset BABELTRACE_DEBUG_MODE
+    unset BABELTRACE_DEV_MODE
+    unset BABELTRACE_MINIMAL_LOG_LEVEL
+
+    # Enable the python bindings
+    export PYTHON="python3"
+    export PYTHON_CONFIG="python3-config"
+    CONF_OPTS="--enable-python-bindings --enable-python-bindings-doc --enable-python-plugins"
+    ;;
+min)
+    echo "Minimal build"
+    CONF_OPTS=""
     ;;
 *)
     echo "Standard build"
     CONF_OPTS=""
+
+    # Enable the python bindings / plugins by default with babeltrace2
+    # the test suite is mostly useless without it.
+    if vergte "$PACKAGE_VERSION" "2.0"; then
+        export PYTHON="python3"
+        export PYTHON_CONFIG="python3-config"
+        CONF_OPTS="${CONF_OPTS} --enable-python-bindings --enable-python-bindings-doc --enable-python-plugins"
+    fi
     ;;
 esac
 
-# Enter the source directory
-cd "$SRCDIR"
-
-# Run bootstrap in the source directory prior to configure
-./bootstrap
-
-
 # Build type
 # oot : out-of-tree build
 # dist: build via make dist
@@ -109,7 +267,7 @@ case "$build" in
         BUILD_PATH="$WORKSPACE/oot"
         mkdir -p "$BUILD_PATH"
         cd "$BUILD_PATH"
-        MAKE=$MAKE BISON="$BISON" YACC="$YACC" "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
+        "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
         ;;
 
     dist)
@@ -117,7 +275,7 @@ case "$build" in
         BUILD_PATH="$(mktemp -d)"
 
         # Initial configure and generate tarball
-        MAKE=$MAKE BISON="$BISON" YACC="$YACC" "$SRCDIR/configure"
+        "$SRCDIR/configure"
         $MAKE dist
 
         mkdir -p "$BUILD_PATH"
@@ -127,18 +285,12 @@ case "$build" in
         # Ignore level 1 of tar
         $TAR xvf ./*.tar.* --strip 1
 
-        MAKE=$MAKE BISON="$BISON" YACC="$YACC" "$BUILD_PATH/configure" --prefix="$PREFIX" $CONF_OPTS
+        "$BUILD_PATH/configure" --prefix="$PREFIX" $CONF_OPTS
         ;;
 
-    clang)
-        echo "LLVM clang build"
-        export CC=clang
-        clang -v
-       MAKE=$MAKE BISON="$BISON" YACC="$YACC" "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
-        ;;
     *)
         echo "Standard in-tree build"
-        MAKE=$MAKE BISON="$BISON" YACC="$YACC" "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
+        "$SRCDIR/configure" --prefix="$PREFIX" $CONF_OPTS
         ;;
 esac
 
@@ -147,7 +299,7 @@ $MAKE -j "$($NPROC)" V=1
 $MAKE install
 
 # Run tests
-$MAKE check
+$MAKE --keep-going check
 
 # Copy tap logs for the jenkins tap parser
 rsync -a --exclude 'test-suite.log' --include '*/' --include '*.log' --exclude='*' tests/ "$WORKSPACE/tap"
This page took 0.028103 seconds and 4 git commands to generate.