diff --git a/contrib/buildserver/cmake_daily.sh b/contrib/buildserver/cmake_daily.sh index 943db177..d7a6834e 100755 --- a/contrib/buildserver/cmake_daily.sh +++ b/contrib/buildserver/cmake_daily.sh @@ -5,15 +5,6 @@ ## source $(find . -name buildserver.library) -## -# configure the build (only used for msvc builds) -#arch=x64 -#mode=dll -#config=Release -#vs=2013 - -result=0 - ## # determine location of the build and source directories if [ "$PLATFORM" == "msvc" ]; then @@ -21,14 +12,11 @@ if [ "$PLATFORM" == "msvc" ]; then build=$(cygpath -aw ./build) dist=$(cygpath -au ./build/dist/) 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 @@ -41,6 +29,54 @@ mkdir -p $build/dist/logs echo "---- dist = $dist ------" echo "---- build = $build ------" +## +# test the build (don't test msvc because it was tested by cmakeBuild) +testBuild() +{ + if [ -e $dist/bin/exiv2 ]; 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 + else + echo '' + echo '**** no build created ****' + echo '' + result=1 + fi +} + ## # perform the build ( @@ -53,7 +89,7 @@ echo "---- build = $build ------" 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 $*" for ARCH in x64 Win32; do - for VS in 2005 ; do # 2008 2010 2012 2013 2015; do + for VS in 2005 2008 2010 2012 2013 2015; do cmd.exe /c "cd $build && vcvars $VS $ARCH && cmakeBuild --rebuild --exiv2=$exiv2 --test $*" done done @@ -78,6 +114,9 @@ echo "---- build = $build ------" if [ "$x64" == true ]; then /cygdrive/c/MinGW64/msys/1.0/bin/bash.exe -c "export PATH=/c/TDM-GCC-64/bin:/c/MinGW64/bin:/c/MinGW64/msys/1.0/bin:/c/MinGW64/msys/1.0/local/bin; $0" result=$? + if [ "$result" == "0" ]; then + testBuild + fi fi fi ;; @@ -95,62 +134,16 @@ echo "---- build = $build ------" make result=$? /usr/local/bin/cmake --build . --target install + testBuild ) popd > /dev/null ;; esac ) | tee "$build/dist/logs/build.log" -## -# test the build (don't test msvc because it was tested by cmakeBuild) -if [ "$PLATFORM" != "msvc" ]; then - 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 - else - echo '' - echo '**** no build created ****' - echo '' - result=1 - fi -fi - ## # store the build for users to collect -if [ $result == "0" ]; then +if [ "$result" == "0" ]; then case $PLATFORM in linux) mmHD=/media/psf/Host ;; msvc|cygwin|mingw) mmHD="//psf/Host/" ;; @@ -168,24 +161,29 @@ if [ $result == "0" ]; then if [ ! -e $monly ]; then mkdir -p $monly ; fi if [ -e $jpubl ]; then + svn=0 + /usr/local/bin/svn info . 2>/dev/null >/dev/null + if [ "$?" == "0" ]; then + svn=$(/usr/local/bin/svn info . | grep Revision | cut -d' ' -f 2) + # svn=$($EXIV2_BINDIR/exiv2$exe -vV | grep -e ^svn | cut -d= -f 2) + fi 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" + dat=$(date '+%Y-%m-%d+%H-%M-%S') + zip="${PLATFORM}-svn-${svn}-date-${dat}.tar.gz" # add documentation and samples to dist - cat contrib/buildserver/dailyReadMe.txt | sed -E -e "s/__BUILD__/$b/" > "$build/dist/ReadMe.txt" + cat contrib/buildserver/dailyReadMe.txt | sed -E -e "s/__BUILD__/$zip/" > "$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/ + tar czf "$zip" dist/ ls -alt - mv $b .. + mv $zip .. popd > /dev/null # clean userContent/build directories @@ -195,11 +193,11 @@ if [ $result == "0" ]; then 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 + cp $zip $daily + if [ "$dow" == "1" ]; then cp $zip $weely; fi # Monday + if [ "$dom" == "1" ]; then cp $zip $monly; fi # First day of the month - echo '***' build = $b '***' + echo '***' build = $zip '***' else echo '***' jenkins builds directory does not exist ${jpubl} '***' result=2