diff --git a/jenkins_build.sh b/jenkins_build.sh index a290a183..7be1c2cd 100755 --- a/jenkins_build.sh +++ b/jenkins_build.sh @@ -1,6 +1,27 @@ #!/bin/bash -set +v +## +# jenkins_build.sh +# called by jenkins to build/test exiv2 +# - jenkins sets environment variables +# called from terminal +# - script has build-in defaults for some environment variable +# +## + +## +# functions +run_tests() { + if [ "$tests" == true ]; then + make tests + fi +} + +## +# Quick dodge, use rmills ~/bin/.profile to set some environment variables +# I think I need this is necessary to find pkg-config +# This code will be removed later +# set +v DIR="$PWD" if [ -e /home/rmills/bin/.profile ]; then source /home/rmills/bin/.profile @@ -9,87 +30,122 @@ if [ -e /Users/rmills/bin/.profile ]; then source /Users/rmills/bin/.profile fi cd "$DIR" +# set -v -echo ---------------------- -export -echo ---------------------- +## +# where are we? +export PLATFORM='' +if [ `uname` == Darwin ]; then + PLATFORM=macosx +elif [ `uname -o` == Cygwin ]; then + PLATFORM=cygwin +elif [ `uname -o` == Msys ]; then + PLATFORM=mingw +else + PLATFORM=linux +fi -if [ -z "$tests" ]; then tests=true; fi +## +# set up some defaults (used when running this script from the terminal) +if [ -z "$tests" ]; then export tests=true ; fi +if [ $PLATFORM == "macosx" -a -z "$macosx" ]; then export macosx=true ; export label=macosx ; fi +if [ $PLATFORM == "cygwin" -a -z "cygwin" ]; then export cygwin=true ; export label=cygwin ; fi +if [ $PLATFORM == "linux" -a -z "$linux" ]; then export linux=true ; export label=linux ; fi +if [ $PLATFORM == "mingw" -a -z "$mingw" ]; then export mingw=true ; export label=mingw ; fi export PATH=$PATH:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/usr/lib/pkgconfig:/opt/local/bin:$PWD/usr/bin:/opt/local/bin:/opt/local/sbin:/opt/pkgconfig:bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PWD/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig +echo ---------------------- +export +echo ---------------------- + ## # cleanup from last time (if there was a last time) if [ -e config/config.mk ]; then - if [ -e bin ]; then - rm -rf bin - fi - if [ ! -e bin ]; then - mkdir bin - fi - make distclean + if [ -e bin ]; then + rm -rf bin + fi + if [ ! -e bin ]; then + mkdir bin + fi + make distclean fi -make config # 2>/dev/null >/dev/null +## +# create ./configure +# we need to inspect configure to know if libssh and libcurl are options for this build +make config # &>/dev/null ## -# decide what to do about libcurl and libssh +# decide what to do about curl and ssh +# 3 possibilities: +# 1 withcurl is empty (for 0.24 builds without WebReady support) +# 2 withcurl == --with-curl (build supports curl and not requested) +# 3 withcurl == --without-curl (build supports curl and requested) export withcurl='' export withssh='' if grep -q curl ./configure ; then - if [ "$curl" == "true" ]; then withcurl=--with-curl ; else withcurl=--without-curl; fi + if [ "$curl" == "true" ]; then withcurl=--with-curl ; else withcurl=--without-curl; fi fi -if grep -q ssh ./configure ; then - if [ "$ssh" == "true" ]; then withssh=--with-ssh ; else withssh=--without-ssh ; fi +if grep -q ssh ./configure ; then + if [ "$ssh" == "true" ]; then withssh=--with-ssh ; else withssh=--without-ssh ; fi fi -if [ "$PLATFORM" == "cygwin" ]; then - if [ "$label" == "MSVC" ] ; then - if [ "$msvc" == "true" ]; then - ## - # Invoke MSVC build +## +# what kind of build is this? +NONE=0 +UNIX=1 +CYGW=2 +MSVC=3 +MING=$NONE +build=$NONE - rm -rf $PWD/bin - mkdir $PWD/bin +if [ $PLATFORM == "linux" -a "$label" == "linux" -a "$linux" == "true" ]; then build=$UNIX ; fi +if [ $PLATFORM == "macosx" -a "$label" == "macosx" -a "$macosx" == "true" ]; then build=$UNIX ; fi +if [ $PLATFORM == "cygwin" -a "$label" == "cygwin" -a "$cygwin" == "true" ]; then build=$CYGW ; fi +if [ $PLATFORM == "cygwin" -a "$label" == "mingw" -a "$mingw" == "true" ]; then build=$MING ; fi +if [ $PLATFORM == "cygwin" -a "$label" == "msvc" -a "$MSVC" == "true" ]; then build=$MSVC ; fi - PATH=$PATH:/cygdrive/c/Windows/System32 - cmd.exe /c "cd $(cygpath -aw .) && call jenkins_build.bat" - else - echo "*** msvc build not requested ***" - fi - exit $? - else - # export LIBS=-lintl - # I've given up: - # 1. trying to get Cygwin to build with gettext and friends - # 2. trying to get Cygwin to install into a local directory - ./configure --disable-nls $withcurl $withssh - make - make install - make samples - if [ "$tests" == true ]; then - make tests - fi - fi -fi +case "$build" in + "$UNIX" ) + echo ------------- + echo ./configure --prefix=$PWD/usr $withcurl $withssh + echo ------------- + ./configure --prefix=$PWD/usr $withcurl $withssh + make "LDFLAGS=-L${PWD}/usr/lib -L${PWD}/xmpsdk/src/.libs" + make install + make samples "CXXFLAGS=-I${PWD}/usr/include -I${PWD}/src" "LDFLAGS=-L${PWD}/usr/lib -L${PWD}/xmpsdk/src/.libs -lexiv2" + run_tests + ;; + + "$CYGW" ) + # export LIBS=-lintl + # I've given up: + # 1. trying to get Cygwin to build with gettext and friends + # 2. trying to get Cygwin to install into a local directory + ./configure --disable-nls $withcurl $withssh + make + make install + make samples + run_tests + ;; -build=0 -if [ $PLATFORM == "linux" -a "$linux" == "true" ]; then build=1; fi -if [ $PLATFORM == "macosx" -a "$macosx" == "true" ]; then build=1; fi - -if [ $build == 1 ]; then - echo ------------- - echo ./configure --prefix=$PWD/usr $withcurl $withssh - echo ------------- - ./configure --prefix=$PWD/usr $withcurl $withssh - make "LDFLAGS=-L${PWD}/usr/lib -L${PWD}/xmpsdk/src/.libs" - make install - make samples "CXXFLAGS=-I${PWD}/usr/include -I${PWD}/src" "LDFLAGS=-L${PWD}/usr/lib -L${PWD}/xmpsdk/src/.libs -lexiv2" - if [ "$tests" == true ]; then - make tests - fi -fi + "$MSVC" ) + rm -rf $PWD/bin + mkdir $PWD/bin + PATH=$PATH:/cygdrive/c/Windows/System32 + cmd.exe /c "cd $(cygpath -aw .) && call jenkins_build.bat" + ;; + + + "$NONE") + echo "*************************************************" + echo "*** no build for platform $PLATFORM requested ***" + echo "*************************************************" + ;; +esac +set -v # That's all Folks! ##