From a0a4713830364d096eb1ca56b7d24dd0143ad776 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Tue, 15 Dec 2015 22:22:32 +0000 Subject: [PATCH] #1109 and #1041 Adding cmake_daily.sh and testDailyAll.sh --- contrib/buildserver/cmake_daily.sh | 199 ++++++++++++++++++++++++++++ contrib/buildserver/testDailyAll.sh | 4 + 2 files changed, 203 insertions(+) create mode 100755 contrib/buildserver/cmake_daily.sh create mode 100755 contrib/buildserver/testDailyAll.sh diff --git a/contrib/buildserver/cmake_daily.sh b/contrib/buildserver/cmake_daily.sh new file mode 100755 index 00000000..d546cb22 --- /dev/null +++ b/contrib/buildserver/cmake_daily.sh @@ -0,0 +1,199 @@ +#!/bin/bash + +## +# jenkins_daily.sh + +## +# configure the build (only used for msvc builds) +arch=x64 +mode=dll +config=Release +vs=2013 + +result=0 + +## +# which PLATFORM +# JOB_NAME is defined when script is called by Jenkins +# example: JOB_NAME=trunk-cmake-daily/label=msvc +# PLATFORM must be defined as msvc when called from ssh +if [ ! -z "$JOB_NAME" ];then + PLATFORM=$(echo $JOB_NAME | cut -d= -f 2) +fi +if [ "$PLATFORM" == "" ]; then + export PLATFORM='' + if [ `uname` == Darwin ]; then + PLATFORM=macosx + elif [ `uname -o` == Cygwin ]; then + PLATFORM=cygwin + # tweak path to ensure the correct version of perl and expr for autotools + export "PATH=/bin:$PATH" + elif [ `uname -o` == Msys ]; then + PLATFORM=mingw + else + PLATFORM=linux + fi +fi + +## +# determine location of the build and source directories +if [ "$PLATFORM" == "msvc" ]; then + exiv2=$(cygpath -aw .) + build=$(cygpath -aw ./build) + dist=$(cygpath -au ./build/dist/$vs/$arch/$mode/$config/bin) + msvc=$(cygpath -au ./contrib/cmake/msvc) + exe=.exe + bin='' +else + exiv2=$PWD + build=$PWD/build + dist=$PWD/build/dist/$PLATFORM + exe='' + bin=bin + if [ -e $exiv2/CMakeCache.txt ]; then rm -rf $exiv2/CMakeCache.txt ; fi +fi + +## +# create a clean directory for an out-of-source build +rm -rf $dist +mkdir -p $dist +mkdir -p $build/dist/logs + +echo "---- dist = $dist ------" +echo "---- build = $build ------" + +## +# perform the build +( + if [ "$PLATFORM" == "msvc" ]; then + ## + # get windows cmd.exe to perform the build + # use a subshell to restore the path + ( + PATH="$msvc:/cygdrive/c/Program Files/csvn/bin:/cygdrive/c/Program Files (x86)/WANdisco/Subversion/csvn/bin:/cygdrive/c/Program Files/7-zip:/cygdrive/c/Program Files (x86)/cmake/bin:$PATH:/cygdrive/c/Windows/System32" + cmd.exe /c "cd $build && vcvars $vs $arch && cmakeBuild --rebuild --exiv2=$exiv2 $*" + result=$? + cp $msvc/vcvars.bat $build/dist # required by test_daily.sh + ) + else + pushd $build > /dev/null + ( + # build 64 bit library + export CFLAGS=-m64 + export CXXFLAGS=-m64 + export LDFLAGS=-m64 + # Always use /usr/local/bin/cmake + # I can guarantee it to be at least 3.4.1 + # because I built it from source and installed it + /usr/local/bin/cmake -DCMAKE_INSTALL_PREFIX=$dist -DEXIV2_ENABLE_NLS=OFF $exiv2 + make + /usr/local/bin/cmake --build . --target install + ) + popd > /dev/null + fi +) | tee "$build/dist/logs/build.log" +## +# test the build +if [ -e $dist/$bin/exiv2$exe ]; then + pushd test > /dev/null + # EXIV2_BINDIR is used by the test suite to locate executables + export EXIV2_BINDIR=$dist/$bin + # set LD_LIBRARY_PATH (and DYLD_LIBRARY_PATH for macosx) + # to be sure we run the tests with the newly built library + export DYLD_LIBRARY_PATH=$dist/lib + export LD_LIBRARY_PATH=$dist/lib + ( + for test in addmoddel.sh \ + bugfixes-test.sh \ + exifdata-test.sh \ + exiv2-test.sh \ + imagetest.sh \ + iotest.sh \ + iptctest.sh \ + modify-test.sh \ + path-test.sh \ + preview-test.sh \ + stringto-test.sh \ + tiff-test.sh \ + write-test.sh \ + write2-test.sh \ + xmpparser-test.sh \ + conversions.sh + do + echo '++' $test '++' ; ./$test + done + ) | tee "$build/dist/logs/test.log" + + popd > /dev/null + + $EXIV2_BINDIR/exiv2 -vV + ls -alt $EXIV2_BINDIR + $EXIV2_BINDIR/exiv2 -vV -g date -g time -g version + ls -alt $EXIV2_BINDIR/exiv2$exe + + ## + # store the build for users to collect + mmHD="" + if [ "$PLATFORM" == "linux" ]; then + mmHD=/media/psf/Host + fi + if [ "$PLATFORM" == "msvc" -o "$PLATFORM" == "cygwin" ]; then + mmHD="//psf/Host/" + fi + jpubl=$mmHD/Users/Shared/Jenkins/Home/userContent/builds + + daily=$jpubl/daily + weely=$jpubl/weekly + monly=$jpubl/monthly + if [ ! -e $jpubl ]; then mkdir -p $jpubl ; fi + if [ ! -e $daily ]; then mkdir -p $daily ; fi + if [ ! -e $weely ]; then mkdir -p $weely ; fi + if [ ! -e $monly ]; then mkdir -p $monly ; fi + + if [ -e $jpubl ]; then + dow=$(date '+%w') # 0..6 day of the week + dom=$(date '+%d') # 1..31 day of the month + mon=$(date '+%m') # 1..12 month + date=$(date '+%Y-%m-%d+%H-%M-%S') + svn=$($EXIV2_BINDIR/exiv2$exe -vV | grep -e ^svn | cut -d= -f 2) + b="${PLATFORM}-svn-${svn}-date-${date}.tar.gz" + + # add documentation and samples to dist + cat contrib/buildserver/dailyReadMe.txt | sed -E -e "s/__BUILD__/$b/" > "$build/dist/ReadMe.txt" + mkdir -p "$build/dist/samples/" + cp samples/exifprint.cpp "$build/dist/samples/" + + # create the bundle + pushd "$build" > /dev/null + rm -rf *.tar.gz + tar czf "$b" dist/ + ls -alt + mv $b .. + popd > /dev/null + + # clean userContent/build directories + # daily > 50 days; weekly > 1 year; monthly > 5 years + if [ -e $daily ]; then find $daily -type f -ctime +50 -exec rm -rf {} \; ; fi + if [ -e $weely ]; then find $weely -type f -ctime +365 -exec rm -rf {} \; ; fi + if [ -e $monly ]; then find $monly -type f -ctime $((366 * 5)) -exec rm -rf {} \; ; fi + + # store the build + cp $b $daily + if [ "$dow" == "1" ]; then cp $b $weely; fi # Monday + if [ "$dom" == "1" ]; then cp $b $monly; fi # First day of the month + + echo '***' build = $b '***' + else + echo '***' jenkins builds directory does not exist ${jpubl} '***' + result=2 + fi +else + echo '' + echo '**** no build created ****' + echo '' + result=1 +fi + +exit $result +# That's all Folks! +## diff --git a/contrib/buildserver/testDailyAll.sh b/contrib/buildserver/testDailyAll.sh new file mode 100755 index 00000000..7eb6686c --- /dev/null +++ b/contrib/buildserver/testDailyAll.sh @@ -0,0 +1,4 @@ +ssh rmills@rmillsmm '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' +ssh rmills@rmillsmm-kubuntu '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' +ssh rmills@rmillsmm-w7 '~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh' +ssh rmills@rmillsmm-w7 'export PLATFORM=msvc ; ~/gnu/exiv2/buildserver/contrib/buildserver/test_daily.sh'