liburcu: checkout sources in a subdirectory
[lttng-ci.git] / scripts / liburcu / build.sh
index 8e5a9c611d272c50f2ddc5594bd97debde45a7e1..996e7f107bd714c115ffdb117b75f2894e07fc00 100755 (executable)
@@ -1,6 +1,7 @@
-#!/bin/sh -exu
+#!/bin/bash -exu
 #
 # Copyright (C) 2015 - Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
+#               2016 - Michael Jeanson <mjeanson@efficios.com>
 #
 # 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
 # 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
+verlte() {
+    [  "$1" = "`printf '%s\n%s' $1 $2 | sort -V | head -n1`" ]
+}
 
-# Create build directory
-rm -rf $WORKSPACE/build
-mkdir -p $WORKSPACE/build
+verlt() {
+    [ "$1" = "$2" ] && return 1 || verlte $1 $2
+}
 
+vergte() {
+    [  "$1" = "`printf '%s\n%s' $1 $2 | sort -V | tail -n1`" ]
+}
+
+vergt() {
+    [ "$1" = "$2" ] && return 1 || vergte $1 $2
+}
+
+
+SRCDIR="$WORKSPACE/src/liburcu"
+TMPDIR="$WORKSPACE/tmp"
 PREFIX="$WORKSPACE/build"
 
-./bootstrap
+# Create build and tmp directories
+rm -rf "$PREFIX" "$TMPDIR"
+mkdir -p "$PREFIX" "$TMPDIR"
 
-CONF_OPTS=""
+export TMPDIR
 
+# Set platform variables
 case "$arch" in
 solaris10)
     MAKE=gmake
@@ -33,6 +52,7 @@ solaris10)
     NPROC=gnproc
     CFLAGS="-D_XOPEN_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__=1"
     ;;
+
 solaris11)
     MAKE=gmake
     TAR=gtar
@@ -40,6 +60,7 @@ solaris11)
     CFLAGS="-D_XOPEN_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__=1"
     export PATH="$PATH:/usr/perl5/bin"
     ;;
+
 *)
     MAKE=make
     TAR=tar
@@ -48,21 +69,36 @@ solaris11)
     ;;
 esac
 
+# Set configure options for each build configuration
+CONF_OPTS=""
 case "$conf" in
 static)
     echo "Static build"
     CONF_OPTS="--enable-static --disable-shared"
     ;;
+
 tls_fallback)  
     echo  "Using pthread_getspecific() to emulate TLS"
     CONF_OPTS="--disable-compiler-tls"
     ;;
+
 *)
     echo "Standard build"
     CONF_OPTS=""
     ;;
 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`
+
+
 # Build type
 # oot : out-of-tree build
 # dist: build via make dist
@@ -70,54 +106,64 @@ esac
 #
 # Make sure to move to the build_path and configure
 # before continuing
-
-BUILD_PATH=$WORKSPACE
+BUILD_PATH=$SRCDIR
 case "$build" in
-       oot)
-               echo "Out of tree build"
-               BUILD_PATH=$WORKSPACE/oot
-               mkdir -p $BUILD_PATH
-               cd $BUILD_PATH
-               MAKE=$MAKE CFLAGS="$CFLAGS" $WORKSPACE/configure --prefix=$PREFIX $CONF_OPTS
-               ;;
-       dist)
-               echo "Distribution out of tree build"
-               BUILD_PATH=`mktemp -d`
-
-               # Initial configure and generate tarball
-               MAKE=$MAKE ./configure
-               $MAKE dist
-
-               mkdir -p $BUILD_PATH
-               cp *.tar.* $BUILD_PATH/
-               cd $BUILD_PATH
-
-               # Ignore level 1 of tar
-               $TAR xvf *.tar.* --strip 1
-
-               MAKE=$MAKE CFLAGS="$CFLAGS" $BUILD_PATH/configure --prefix=$PREFIX $CONF_OPTS
-               ;;
-       *)
-               BUILD_PATH=$WORKSPACE
-               echo "Standard tree build"
-               MAKE=$MAKE CFLAGS="$CFLAGS" $WORKSPACE/configure --prefix=$PREFIX $CONF_OPTS
-               ;;
+oot)
+    echo "Out of tree build"
+    BUILD_PATH=$WORKSPACE/oot
+    mkdir -p $BUILD_PATH
+    cd $BUILD_PATH
+    MAKE=$MAKE CFLAGS="$CFLAGS" $SRCDIR/configure --prefix=$PREFIX $CONF_OPTS
+    ;;
+
+dist)
+    echo "Distribution out of tree build"
+    BUILD_PATH=`mktemp -d`
+
+    # Initial configure and generate tarball
+    MAKE=$MAKE $SRCDIR/configure
+    $MAKE dist
+
+    mkdir -p $BUILD_PATH
+    cp *.tar.* $BUILD_PATH/
+    cd $BUILD_PATH
+
+    # Ignore level 1 of tar
+    $TAR xvf *.tar.* --strip 1
+
+    MAKE=$MAKE CFLAGS="$CFLAGS" $BUILD_PATH/configure --prefix=$PREFIX $CONF_OPTS
+    ;;
+*)
+    echo "Standard in-tree build"
+    MAKE=$MAKE CFLAGS="$CFLAGS" $BUILD_PATH/configure --prefix=$PREFIX $CONF_OPTS
+    ;;
 esac
 
-$MAKE -j `$NPROC`
+# BUILD!
+$MAKE -j `$NPROC` V=1
 $MAKE install
+
+# Run tests
 $MAKE check
-$MAKE regtest
+# Only run regtest for 0.9 and up
+if vergte "$PACKAGE_VERSION" "0.9"; then
+   $MAKE regtest
+fi
+
+# Cleanup
 $MAKE clean
 
-# Cleanup rpath and libtool .la files
-find $WORKSPACE/build/lib -name "*.so" -exec chrpath --delete {} \;
-find $WORKSPACE/build/lib -name "*.la" -exec rm -f {} \;
+# Cleanup rpath in executables and shared libraries
+#find $WORKSPACE/build/bin -type f -perm -0500 -exec chrpath --delete {} \;
+find $PREFIX/lib -name "*.so" -exec chrpath --delete {} \;
+
+# Remove libtool .la files
+find $PREFIX/lib -name "*.la" -exec rm -f {} \;
 
 # Cleanup temp directory of dist build
-if [ $build = "dist" ]; then
-       cd $WORKSPACE
-       rm -rf $BUILD_PATH
+if [ "$build" = "dist" ]; then
+    cd $SRCDIR
+    rm -rf $BUILD_PATH
 fi
 
 # EOF
This page took 0.025946 seconds and 4 git commands to generate.