File: nightly-build-osx.sh

package info (click to toggle)
librecad 2.1.3-1.3%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 149,732 kB
  • sloc: cpp: 183,248; ansic: 3,106; sh: 249; makefile: 24; xml: 20
file content (117 lines) | stat: -rwxr-xr-x 2,652 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash -x
# scripts for nightly builds in OS/X
# 
# 1 checkout for new HEAD in git repository
# 2 build and upload generated DMG files up to 10 DMGs at sf.net
# 3 compute checksums, and upload README.md

if [ ! $(expr $(date -u +%H)) == 3 ]
then
	exit 0
fi

#nightly librecad build

TOP_DIR=~/hd2
SF_URL='dongxuli@frs.sf.net:/home/frs/project/librecad/OSX/NightlyBuilds/'
#log dir
LOG_DIR=$TOP_DIR/log-nightly
[[ -d $LOG_DIR ]] || mkdir -p $LOG_DIR
LOG_ERR=$LOG_DIR/err.log
LOG_MSG=$LOG_DIR/msg.log
#local repository
LC_DIR=$TOP_DIR/LibreCAD
if [ ! -d $LC_DIR ]
then
	echo "Error: LibreCAD source repository $LC_DIR does not exist" >> $LOG_MSG
	exit 1
fi

#file keeping current HEAD commit number
LC_HEAD=$LOG_DIR/lc_HEAD_number.tmp
#git HEAD
LC_GIT_HEAD=$LC_DIR/.git/refs/heads/master
#dmg built
LC_DMG=$LC_DIR/LibreCAD.dmg
#folder holding dmg files
LC_SF_NIGHTLY=$TOP_DIR/sf-OSX-Nightly
[[ -d $LC_SF_NIGHTLY ]] || mkdir -p $LC_SF_NIGHTLY

cd $LC_DIR

#update git
git fetch origin
git reset --hard origin/master
echo "$(date): repository updated" >> $LOG_MSG

#detect git updates
if [ -f $LC_HEAD ]
then
	if cmp $LC_HEAD $LC_GIT_HEAD
	then
		echo "$(date): No git update, exiting" >> $LOG_ERR
		exit 0
	fi
fi

#save git HEAD
cp -v $LC_GIT_HEAD $LC_HEAD
#dmg to save to
LC_HEAD_NUM=$(cat $LC_HEAD)
DATE_STR="$(date -u '+%F')"
COMMIT_STR=${LC_HEAD_NUM:0:8}
LC_DMG_SF=LibreCAD-${DATE_STR}-${COMMIT_STR}.dmg
echo $LC_DMG_SF

#remove existing DMG
rm -f $LC_DMG
#build DMG
./scripts/build-osx.sh -p="" -q="" 2>&1 >> $LOG_ERR
if ! [ -f $LC_DMG ]
then
	echo "$(date): building failed, exiting" >> $LOG_ERR
	exit 1
fi

#copy to local folder
mkdir -p $LC_SF_NIGHTLY
pushd $LC_SF_NIGHTLY
for f in $(ls -rv|sed -e '1,9 d')
do
	rm -f $f
done

popd 
cp -v $LC_DMG $LC_SF_NIGHTLY/$LC_DMG_SF

#copy to sf.net
rsync -e ssh --delete -Pac $LC_SF_NIGHTLY/ "$SF_URL"
if [ $? -ne 0 ]
then
	echo "$(date): failed to upload $LC_DMG_SF" >> $LOG_ERR
	exit -1
fi

#README.md
cd ..
README_FILE=$TOP_DIR/README.md
cp $TOP_DIR/README.md.template $README_FILE
cat $TOP_DIR/README.md.template | \
sed -e "s:DATE_PLACE_HOLDER:${DATE_STR}:g" \
-e "s:COMMIT_PLACE_HOLDER:${COMMIT_STR}:g" \
> $README_FILE

pushd $LC_SF_NIGHTLY
for dfile in *.dmg
do
echo -e "- - -\n[$dfile](http://sourceforge.net/projects/librecad/files/OSX/Nightly/$dfile/download/)" >> $README_FILE
echo -e "\nMD5: $(md5 -r $dfile|awk '{print $1}')">> $README_FILE
echo -e "\nSHA1: $(shasum $dfile|awk '{print $1}')">> $README_FILE
echo -e "\nSHA256: $(shasum -a 256 $dfile|awk '{print $1}')">> $README_FILE
done
popd

rsync -e ssh -Pac $README_FILE "$SF_URL"

echo "$(date): $LC_DMG_SF uploaded" >> $LOG_MSG