You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.2 KiB
Bash
153 lines
4.2 KiB
Bash
#!/bin/bash
|
|
|
|
##
|
|
# jenkins_daily.sh
|
|
|
|
##
|
|
# 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
|
|
exiv2=$(cygpath -aw .)
|
|
build=$(cygpath -aw .\\build)
|
|
dist=$(cygpath -au .\\build\\dist\\$vs\\$arch\\$mode\\$config\\bin)
|
|
msvc=$(cygpath -aw ./contrib/cmake/msvc)
|
|
exe=.exe
|
|
bin=''
|
|
else
|
|
PATH="/usr/local/bin:$PATH"
|
|
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
|
|
|
|
echo "---- dist = $dist ------"
|
|
echo "---- build = $build ------"
|
|
|
|
##
|
|
# perform the build
|
|
if [ "$PLATFORM" == "msvc" ]; then
|
|
##
|
|
# get windows cmd.exe to perform the build
|
|
# use a sub-shell to temporarily set path for svn/7z/cmake/cmd
|
|
(
|
|
PATH="$msvc:c:\\Program Files\\csvn\\bin:c:\\Program Files (x86)\\WANdisco\\Subversion:\\csvn\\bin:c:\\Program Files\\7-zip: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
|
|
pushd $build
|
|
cmake -DCMAKE_INSTALL_PREFIX=$dist -DEXIV2_ENABLE_NLS=OFF $exiv2
|
|
make
|
|
cmake --build . --target install
|
|
popd
|
|
fi
|
|
|
|
##
|
|
# test the build
|
|
if [ -e $dist/$bin/exiv2$exe ]; then
|
|
pushd test
|
|
export EXIV2_BINDIR=$dist/$bin
|
|
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
|
|
popd
|
|
|
|
$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
|
|
# parse output of date: Thu 10 Dec 2015 14:02:51 GMT
|
|
dow=$(date|cut -d' ' -f 1) # Thu day of the week
|
|
dom=$(date|cut -d' ' -f 2) # 10 day of the month
|
|
mon=$(date|cut -d' ' -f 2) # Dec month
|
|
svn=$($dist/exiv2.exe -vVg|grep -e ^svn | cut -d= -f 2)
|
|
date=$(date +'%Y-%m-%d+%H-%M-%S')
|
|
b="${PLATFORM}-svn-${svn}-date-${date}.tar.gz"
|
|
echo build = "$b"
|
|
|
|
# create the bundle
|
|
pushd build
|
|
if [ -e "$b" ]; then rm -rf "$b"; fi
|
|
tar czf "$b" dist/
|
|
ls -alt
|
|
mv $b ..
|
|
popd
|
|
|
|
# clean userContent/build directories
|
|
# daily > 50 days; weekly more than 1 year; monthly more than 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 $monty -type f -ctime $((366 * 5)) -exec rm -rf {} \; ; fi
|
|
|
|
# store the build
|
|
cp $b $daily
|
|
if [ "$dow" == "Mon" ]; then cp $b $weely; fi
|
|
if [ "$dom" == "1" ]; then cp $b $monly; fi
|
|
|
|
echo '***' build = $b '***'
|
|
else
|
|
echo '***' jenkins publish directory does not exist ${jpubl} '***"
|
|
result=2
|
|
fi
|
|
else
|
|
echo ""
|
|
echo "**** no build created ****"
|
|
result=1
|
|
echo ""
|
|
fi
|
|
|
|
exit $result
|
|
# That's all Folks!
|
|
##
|