Subversion Repositories general

Rev

Rev 1181 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1178 dev 1
#!/bin/sh
2
 
3
#
4
# make a FreeBSD port of the project
5
#
6
 
7
PROJ=rebootd
8
 
9
OUTDIR=output
10
FREEBSDDIR=${OUTDIR}/freebsd-port
11
COMMITDIR=releases
12
WEBDIR=26th.net:www/26th.net/html/public/projects/rebootd/bin    # scp format
13
 
14
# only commited revisions are allowed for release
15
CUR_REVISION=`svnversion .`
16
if ( ! echo ${CUR_REVISION} | grep -E '^[0-9]+$' > /dev/null ) ; then
17
	echo "Cannot make release - current revision ${CUR_REVISION} not commited" >> /dev/stderr
18
	#exit 1;
19
fi
20
 
21
# get last release version
22
(ls ${COMMITDIR}/${PROJ}-[0-9]*.tar.gz \
23
	| awk '
24
		BEGIN { maj=-1; min=0; rev=0; } 
25
		{	split($0,n,"-"); split(n[2],nn,"\.");
26
			if(maj>nn[1]) next; if(maj<nn[1]) {maj=nn[1];min=nn[2];rev=nn[3];next;}
27
			if(min>nn[2]) next; if(min<nn[2]) {min=nn[2];rev=nn[3];next}
28
			if(rev<nn[3]) rev=nn[3];}
29
		END {print maj, min, rev;}' \
30
	| read VER_MAJOR VER_MINOR VER_REVISION ) \
31
	|| { echo "Cannot find releases in ${COMMITDIR}" >> /dev/stderr; exit 2; }
32
[ ${VER_MAJOR} = "-1" ] || { echo "Cannot determine release version" >> /dev/stderr; exit 1; }
33
 
34
RELEASE_NAME=${PROJ}-${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}
35
RELEASE_TAR=${RELEASE_NAME}.tar.gz
36
 
37
# create the tar
38
rm -rf ${FREEBSDDIR} \
39
	|| { echo "Cannot delete ${FREEBSDDIR} dir" >> /dev/stderr; exit 2; }
40
mkdir ${FREEBSDDIR} \
41
	|| { echo "Cannot create ${FREEBSDDIR} dir" >> /dev/stderr; exit 2; }
42
cp -r ports/freebsd ${FREEBSDDIR}/${PROJ} \
43
	|| { echo "Cannot copy ports/freebsd to ${FREEBSDDIR}/${PROJ}" >> /dev/stderr; exit 2; }
44
sed -e 's/%VER_MAJOR%/${VER_MAJOR}/' -e 's/%VER_MINOR%/${VER_MINOR}/' \
45
	-e 's/%VER_REVISION%/${VER_REVISION}/' ports/freebsd/Makefile \
46
	> ${FREEBSDDIR}/${PROJ}/Makefile \
47
	|| { echo "Cannot generate ${FREEBSDDIR}/${PROJ}/Makefile" >> /dev/stderr; exit 2; }
48
( cd ${COMMITDIR}; md5 ${RELEASE_TAR} ) > ${FREEBSDDIR}/${PROJ}/distinfo \
49
	|| { echo "Cannot get MD5 of ${COMMITDIR}/${RELEASE_TAR}" >> /dev/stderr; exit 2; }
50
echo "SIZE (${RELEASE_TAR}) =" `stat -f '%z' ${COMMITDIR}/${RELEASE_TAR}` >> ${FREEBSDDIR}/${PROJ}/distinfo \
51
	|| { echo "Cannot stat ${COMMITDIR}/${RELEASE_TAR}" >> /dev/stderr; exit 2; }
52
tar cf - --exclude '*/.svn' -C ${FREEBSDDIR} ${PROJ} | gzip > ${OUTDIR}/${PROJ}-freebsd-port.tar.gz \
53
	|| { echo "Cannot create ${OUTDIR}/${PROJ}-freebsd-port.tar.gz" >> /dev/stderr; exit 2; }
54
rm -rf ${FREEBSDDIR} \
55
	|| { echo "Cannot clear ${FREEBSDDIR} dir" >> /dev/stderr; exit 2; }
56
 
57
# commit the release
58
echo "Relase made successfully. Enter YES to commit it."
59
read confirm
60
if [ "$confirm" != "YES" ] ; then
61
	echo "you have to answer 'YES' to continue"
62
	exit 1
63
fi
64
 
65
cp ${OUTDIR}/${PROJ}-freebsd-port.tar.gz ${COMMITDIR} \
66
	|| { echo "Cannot copy ${OUTDIR}/${PROJ}-freebsd-port.tar.gz to releases" >> /dev/stderr; exit 2; }
67
svn commit ${COMMITDIR}/${PROJ}-freebsd-port.tar.gz \
68
	-m "${PROJ}: auto commit of FreeBSD port for release ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}" \
69
	|| { echo "Cannot commit ${COMMITDIR}/${PROJ}-freebsd-port.tar.gz" >> /dev/stderr; exit 2; }
70
svn up \
71
	|| { echo "Cannot update working copy" >> /dev/stderr; exit 2; }
72
 
73
# publish to web
74
scp ${COMMITDIR}/${PROJ}-freebsd-port.tar.gz ${WEBDIR} \
75
	|| { echo "Cannot publish ${COMMITDIR}/${PROJ}-freebsd-port.tar.gz to ${WEBDIR}" >> /dev/stderr; \
76
		exit 2; }
77
 
78
echo "FreeBSD port for relase ${RELEASE_NAME} is commited and published"
79