From aa1e9e88e5698305e85df1bbaed77cb2e490d8da Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Sat, 12 Dec 2015 19:10:52 +0000 Subject: [PATCH] #1109 and #1041 Added documentation and log files to the published builds. --- contrib/buildserver/dailyReadMe.txt | 123 ++++++++++++++++++++++++++++ jenkins_daily.sh | 84 ++++++++++--------- samples/exifprint.cpp | 6 ++ 3 files changed, 176 insertions(+), 37 deletions(-) create mode 100644 contrib/buildserver/dailyReadMe.txt diff --git a/contrib/buildserver/dailyReadMe.txt b/contrib/buildserver/dailyReadMe.txt new file mode 100644 index 00000000..7b24fe96 --- /dev/null +++ b/contrib/buildserver/dailyReadMe.txt @@ -0,0 +1,123 @@ +ReadMe.txt +---------- + +Build: __BUILD__ + +platform = linux +---------------- + +Structure of the bundle: + +dist/linux/bin/exiv2.exe exiv2 and sample applications +dist/linux/lib/libexiv2.so.14.0.0 shared library + .../lib/exiv2.lib libraries for exiv2 and expat and zlib) + /include/exiv2/ include files + /share/ man pages +dist/samples/exifprint.cpp sample code +dist/logs/ log files + +To run exiv2: +$ cd dist +$ export LD_LIBRARY_PATH=$PWD/lib +$ linux/bin/exiv2 + +To compile and link your own code: +$ cd dist +$ export PKG_CONFIG_PATH=$PWD/linux/lib/pkgconfig +$ g++ -Ilinux/include -Llinux/lib samples/exifprint.cpp -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.25.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ + +platform = macosx +----------------- + +Structure of the bundle: + +dist/macosx/bin/exiv2.exe exiv2 and sample applications + .../lib/libexiv2.so.14.0.0.dylib shared library + /lib/exiv2.lib libraries for exiv2/expat/zlib + /include/exiv2/ include files + /share/ man pages +dist/logs/ log files +dist/samples/exifprint.cpp sample code + +To run exiv2: +$ cd dist +$ export DYLD_LIBRARY_PATH=$PWD/lib +$ macosx/bin/exiv2 + +To compile and link your own code: + Caution: + You may need to install pkg-config with Mac Ports + To install Mac Ports: https://www.macports.org + To install pkg-config: $ sudo port install pkgconfig + +$ cd dist +$ export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PWD/macosx/lib/pkgconfig" +$ g++ -Imacosx/include -Lmacosx/lib samples/exifprint.cpp -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.25.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ + +platform = cygwin +----------------- + +dist/cygwin/bin/exiv2.exe exiv2.exe and sample applications + .../bin/cygexiv2-14.dll shared library + /lib/exiv2.dll.a libraries for exiv2/expat/zlib + /include/exiv2/ include files + /share/ man pages +dist/samples/exifprint.cpp sample code +dist/logs/ log files + +To run exiv2.exe: +$ cd dist +$ cygwin/bin/exiv2 + +To compile and link your own code: +$ cd dist +$ export PKG_CONFIG_PATH=cygwin/lib/pkgconfig +$ g++ -Icygwin/include -Lcygwin/lib samples/exifprint.cpp -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.25.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ + +platform = msvc +--------------- + +dist\2013\x64\dll\Release\bin\exiv2.exe exiv2.exe and sample applications + ...\bin\exiv2.dll dlls for exiv2/expat/zlib + \lib\exiv2.lib libraries for exiv2/expat/zlib + \include\exiv2/ include files + \share\ man pages +samples\exifprint.cpp sample code +logs\ log files + +To run exiv2.exe: +c:\temp> cd dist +c:\temp\dist> set PATH=%PATH%;%CD%\2013\x64\dll\Release\bin +c:\temp\dist> exiv2 + +To compile and link your own code: + Caution: You will need the same version of Visual Studio as the build + You will need to use "Visual Studio Command Prompt" + or initialize the DOS environment by calling vcvarsall.bat + +c:\temp> cd dist +c:\temp\dist> cl /EHsc -I2013\x64\dll\Release\include /MD samples\exifprint.cpp /link 2013\x64\dll\Release\lib\exiv2.lib +c:\temp\dist> exifprint --version +exiv2=0.25.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +c:\temp\dist> + +Robin Mills +robin@clanmills.com +2015-12-12 diff --git a/jenkins_daily.sh b/jenkins_daily.sh index 472a1447..0903ab49 100755 --- a/jenkins_daily.sh +++ b/jenkins_daily.sh @@ -17,10 +17,10 @@ result=0 # 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 +if [ ! -z "$JOB_NAME" ];then PLATFORM=$(echo $JOB_NAME | cut -d= -f 2) fi -if [ "$PLATFORM" == "" ]; then +if [ "$PLATFORM" == "" ]; then export PLATFORM='' if [ `uname` == Darwin ]; then PLATFORM=macosx @@ -51,36 +51,38 @@ else dist=$PWD/build/dist/$PLATFORM exe='' bin=bin - if [ -e $exiv2/CMakeCache.txt ]; then rm -rf $exiv2/CMakeCache.txt ; fi + 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 +( + 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=$? + 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=$? ) -else + else pushd $build > /dev/null cmake -DCMAKE_INSTALL_PREFIX=$dist -DEXIV2_ENABLE_NLS=OFF $exiv2 make - cmake --build . --target install + cmake --build . --target install popd > /dev/null -fi - + fi +) | tee "$build/dist/logs/build.log" ## # test the build if [ -e $dist/$bin/exiv2$exe ]; then @@ -91,25 +93,28 @@ if [ -e $dist/$bin/exiv2$exe ]; then # 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 + ( + 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 + done + ) | tee "$build/dist/logs/test.log" + popd > /dev/null $EXIV2_BINDIR/exiv2 -vV @@ -141,16 +146,21 @@ if [ -e $dist/$bin/exiv2$exe ]; then 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 -vVg|grep -e ^svn | cut -d= -f 2) + 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 - if [ -e "$b" ]; then rm -rf "$b"; fi - tar czf "$b" dist/ - ls -alt - mv $b .. - popd + 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 @@ -161,7 +171,7 @@ if [ -e $dist/$bin/exiv2$exe ]; then # store the build cp $b $daily if [ "$dow" == "1" ]; then cp $b $weely; fi # Monday - if [ "$dom" == "1" ]; then cp $b $monly; fi + if [ "$dom" == "1" ]; then cp $b $monly; fi # First day of the month echo '***' build = $b '***' else diff --git a/samples/exifprint.cpp b/samples/exifprint.cpp index ea7fe3fb..bf8828dd 100644 --- a/samples/exifprint.cpp +++ b/samples/exifprint.cpp @@ -16,6 +16,12 @@ try { return 1; } + if ( strcmp(argv[1],"--version") == 0 ) { + exv_grep_keys_t keys; + Exiv2::dumpLibraryInfo(std::cout,keys); + return 0; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); assert(image.get() != 0); image->readMetadata();