diff options
-rwxr-xr-x | scripts/smtk2ssrf-build.sh | 74 |
1 files changed, 43 insertions, 31 deletions
diff --git a/scripts/smtk2ssrf-build.sh b/scripts/smtk2ssrf-build.sh index 59d8037a9..e42917c79 100755 --- a/scripts/smtk2ssrf-build.sh +++ b/scripts/smtk2ssrf-build.sh @@ -6,6 +6,7 @@ # -t (--tag) A git valid tag, commit, etc in subsurface tree # -j (--jobs) Desired build parallelism, integer. # -b (--build) Cmake build type, valid values Debug or Release +# -y Assume "yes" in prompt. Useful in automated builds # Examples: # $ ./subsurface/scripts/build-smtk2ssrf.sh # No flags, will build a Release version, with -j4 parallelism in the @@ -31,6 +32,7 @@ RELEASE=Release BASEDIR="$(pwd)" INSTALL_ROOT="$BASEDIR"/install-root SSRF_PATH="$BASEDIR"/subsurface +AUTO="${TRAVIS:-false}" # Display an error message if we need to bail out # @@ -39,33 +41,39 @@ function aborting() { exit 1 } -printf " -***** WARNING ***** -Please, note that this script will render your Subsurface binary unusable. -So, if you are using the binary placed in build directory, you will need -to rebuild it after running this script. - -Proceed? [y/n]\n" - -read -rs _proceed -[[ $_proceed != "y" && $_proceed != "Y" ]] && exit 0 - # check for arguments and set options if any # while [ $# -gt 0 ]; do case $1 in -c|--cli) CLI="ON" - ;; - -t|--tag) SSRF_TAG="$2" shift;; + -t|--tag) SSRF_TAG="$2" + shift 2;; -j|--jobs) JOBS=-j"$2" - shift;; + shift 2;; -b|--build) RELEASE="$2" + shift 2;; + -y) AUTO="true" shift;; + *) aborting "Wrong parameter $1" esac - shift done +if [ "$AUTO" == "true" ]; then + _proceed="y" +else + printf " + ***** WARNING ***** + Please, note that this script will render your Subsurface binary unusable. + So, if you are using the binary placed in build directory, you will need + to rebuild it after running this script. + + Proceed? [y/n]\n" + + read -rs _proceed +fi +[[ $_proceed != "y" && $_proceed != "Y" ]] && exit 0 + echo ">> Building smtk2ssrf <<" # Check if we are in a sane environment @@ -92,15 +100,17 @@ fi # Check if mdbtools devel package is avaliable, if it is not, download # and build it. # -if ! pkg-config --exists libmdb; then +if pkg-config --exists libmdb; then + echo "----> Mdbtools already installed: $(pkg-config --print-provides libmdb)" +else echo "----> Downloading/Updating mdbtools " if [ -d "$BASEDIR"/mdbtools ]; then cd "$BASEDIR"/mdbtools || aborting "Couldn't cd into $BASEDIR/mdbtools" - git pull --rebase + git pull --rebase || aborting "Problem downloading/updating mdbtools" else - git clone https://github.com/brianb/mdbtools.git "$BASEDIR"/mdbtools + git clone https://github.com/brianb/mdbtools.git "$BASEDIR"/mdbtools || \ + aborting "Problem downloading/updating mdbtools" fi - [[ $? -ne 0 ]] && aborting "Problem downloading/updating mdbtools" echo "----> Building mdbtools ..." echo "----> This will display a lot of errors and warnings" @@ -109,8 +119,6 @@ if ! pkg-config --exists libmdb; then ./configure --prefix "$INSTALL_ROOT" --disable-man --disable-gmdb2 >/dev/null make "$JOBS">/dev/null || aborting "Building mdbtools failed" make install -else - echo "----> Mdbtools already installed: $(pkg-config --print-provides libmdb)" fi # Build bare metal Subsurface. @@ -166,14 +174,18 @@ echo "----> Building smtk2ssrf SmartTrak divelogs importer" cd "$SSRF_PATH"/smtk-import || aborting "Couldnt cd into $SSRF_PATH/smtk-import" mkdir -p build cd build || aborting "Couldn't cd into $SSRF_PATH/smtk-import/build" +_CMAKE_OPTS=( "-DCMAKE_BUILD_TYPE=$RELEASE" "-DCOMMANDLINE=${CLI:-OFF}" ) +[[ $AUTO == "true" ]] && _CMAKE_OPTS+=( "-DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT" ) +cmake "${_CMAKE_OPTS[@]}" .. || aborting "cmake incomplete" +make clean +LIBRARY_PATH=$INSTALL_ROOT/lib make "$JOBS" || aborting "Failed to build smtk2ssrf" -cmake -DCMAKE_BUILD_TYPE="$RELEASE" \ - -DCOMMANDLINE=${CLI:-OFF} \ - .. || aborting "Cmake incomplete" - -make "$JOBS" || aborting "Failed to build smtk2ssrf" - -printf " ->> Building smtk2ssrf completed << ->> Executable placed in %s/smtk-import/build << ->> To install system-wide, move there and run sudo make install <<\n" "$SSRF_PATH" +# Install on automatic builds +if [ "$AUTO" == "true" ]; then + LIBRARY_PATH=$INSTALL_ROOT/lib make install +else + printf " + >> Building smtk2ssrf completed << + >> Executable placed in %s/smtk-import/build << + >> To install system-wide, move there and run sudo make install <<\n" "$SSRF_PATH" +fi |