1#!/bin/bash -x 2# scripts for nightly builds in OS/X 3# 4# 1 checkout for new HEAD in git repository 5# 2 build and upload generated DMG files up to 10 DMGs at sf.net 6# 3 compute checksums, and upload README.md 7 8if [ ! $(expr $(date -u +%H)) == 3 ] 9then 10 exit 0 11fi 12 13#nightly librecad build 14 15TOP_DIR=~/hd2 16SF_URL='dongxuli@frs.sf.net:/home/frs/project/librecad/OSX/NightlyBuilds/' 17#log dir 18LOG_DIR=$TOP_DIR/log-nightly 19[[ -d $LOG_DIR ]] || mkdir -p $LOG_DIR 20LOG_ERR=$LOG_DIR/err.log 21LOG_MSG=$LOG_DIR/msg.log 22#local repository 23LC_DIR=$TOP_DIR/LibreCAD 24if [ ! -d $LC_DIR ] 25then 26 echo "Error: LibreCAD source repository $LC_DIR does not exist" >> $LOG_MSG 27 exit 1 28fi 29 30#file keeping current HEAD commit number 31LC_HEAD=$LOG_DIR/lc_HEAD_number.tmp 32#git HEAD 33LC_GIT_HEAD=$LC_DIR/.git/refs/heads/master 34#dmg built 35LC_DMG=$LC_DIR/LibreCAD.dmg 36#folder holding dmg files 37LC_SF_NIGHTLY=$TOP_DIR/sf-OSX-Nightly 38[[ -d $LC_SF_NIGHTLY ]] || mkdir -p $LC_SF_NIGHTLY 39 40cd $LC_DIR 41 42#update git 43git fetch origin 44git reset --hard origin/master 45echo "$(date): repository updated" >> $LOG_MSG 46 47#detect git updates 48if [ -f $LC_HEAD ] 49then 50 if cmp $LC_HEAD $LC_GIT_HEAD 51 then 52 echo "$(date): No git update, exiting" >> $LOG_ERR 53 exit 0 54 fi 55fi 56 57#save git HEAD 58cp -v $LC_GIT_HEAD $LC_HEAD 59#dmg to save to 60LC_HEAD_NUM=$(cat $LC_HEAD) 61DATE_STR="$(date -u '+%F')" 62COMMIT_STR=${LC_HEAD_NUM:0:8} 63LC_DMG_SF=LibreCAD-${DATE_STR}-${COMMIT_STR}.dmg 64echo $LC_DMG_SF 65 66#remove existing DMG 67rm -f $LC_DMG 68#build DMG 69./scripts/build-osx.sh -p="" -q="" 2>&1 >> $LOG_ERR 70if ! [ -f $LC_DMG ] 71then 72 echo "$(date): building failed, exiting" >> $LOG_ERR 73 exit 1 74fi 75 76#copy to local folder 77mkdir -p $LC_SF_NIGHTLY 78pushd $LC_SF_NIGHTLY 79for f in $(ls -rv|sed -e '1,9 d') 80do 81 rm -f $f 82done 83 84popd 85cp -v $LC_DMG $LC_SF_NIGHTLY/$LC_DMG_SF 86 87#copy to sf.net 88rsync -e ssh --delete -Pac $LC_SF_NIGHTLY/ "$SF_URL" 89if [ $? -ne 0 ] 90then 91 echo "$(date): failed to upload $LC_DMG_SF" >> $LOG_ERR 92 exit -1 93fi 94 95#README.md 96cd .. 97README_FILE=$TOP_DIR/README.md 98cp $TOP_DIR/README.md.template $README_FILE 99cat $TOP_DIR/README.md.template | \ 100sed -e "s:DATE_PLACE_HOLDER:${DATE_STR}:g" \ 101-e "s:COMMIT_PLACE_HOLDER:${COMMIT_STR}:g" \ 102> $README_FILE 103 104pushd $LC_SF_NIGHTLY 105for dfile in *.dmg 106do 107echo -e "- - -\n[$dfile](http://sourceforge.net/projects/librecad/files/OSX/Nightly/$dfile/download/)" >> $README_FILE 108echo -e "\nMD5: $(md5 -r $dfile|awk '{print $1}')">> $README_FILE 109echo -e "\nSHA1: $(shasum $dfile|awk '{print $1}')">> $README_FILE 110echo -e "\nSHA256: $(shasum -a 256 $dfile|awk '{print $1}')">> $README_FILE 111done 112popd 113 114rsync -e ssh -Pac $README_FILE "$SF_URL" 115 116echo "$(date): $LC_DMG_SF uploaded" >> $LOG_MSG 117 118