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 |