]> git.ipfire.org Git - thirdparty/squid.git/blob - mkrelease.sh
Author: Francesco Chemolli <kinkie@squid-cache.org>
[thirdparty/squid.git] / mkrelease.sh
1 #!/bin/sh -ex
2 if [ $# -ne 1 -a $# -ne 2 ]; then
3 echo "Usage: $0 revision [destination]"
4 exit 1
5 fi
6 # VCS details
7 module=squid3
8 BZRROOT=${BZRROOT:-/bzr}
9
10 # infer tags from command line details
11 package=squid
12 rev=`echo $1 | sed -e "s/^${package}-//"`
13 name=${package}-${rev}
14 tag=`echo ${name} | tr a-z.- A-Z__`
15 startdir=$PWD/
16 dst=${2:-$PWD}/
17 RELEASE_TIME=`date +%s`
18
19 # DPW 2007-08-30
20 #
21 # check that $rev has the right syntax
22 #
23 checkrev=`expr $rev : '\([0-9]\.[0-9]\.[A-Z0-9]*\)'`
24 if test "$rev" != "$checkrev" ; then
25 echo "revision '$rev' has incorrect syntax. Should be like '3.0.STABLE1'"
26 exit 1;
27 fi
28
29 tmpdir=${TMPDIR:-${PWD}}/${name}-mkrelease
30
31 rm -rf $name.tar.gz $tmpdir
32 trap "rm -rf $tmpdir" 0
33
34 bzr export $tmpdir $BZRROOT/$module/tags/$tag || exit 1
35 if [ ! -f $tmpdir/configure ]; then
36 echo "ERROR! Tag $tag not found in $module"
37 fi
38
39 cd $tmpdir
40 eval `grep "^ *VERSION=" configure | sed -e 's/-BZR//'`
41 eval `grep "^ *PACKAGE=" configure`
42 if [ ${name} != ${PACKAGE}-${VERSION} ]; then
43 echo "ERROR! The tag and configure version numbers do not match!"
44 echo "${name} != ${PACKAGE}-${VERSION}"
45 exit 1
46 fi
47 RELEASE=`echo $VERSION | cut -d. -f1,2 | cut -d- -f1`
48 ed -s configure.in <<EOS
49 g/${VERSION}-BZR/ s//${VERSION}/
50 w
51 EOS
52 ed -s configure <<EOS
53 g/${VERSION}-BZR/ s//${VERSION}/
54 w
55 EOS
56 ed -s include/version.h <<EOS
57 g/squid_curtime/ s//${RELEASE_TIME}/
58 w
59 EOS
60
61 ./configure --silent
62 make dist-all
63
64 cd $startdir
65 inst() {
66 rm -f $2
67 cp -p $1 $2
68 chmod 444 $2
69 }
70 inst $tmpdir/${name}.tar.gz $dst/${name}.tar.gz
71 inst $tmpdir/${name}.tar.bz2 $dst/${name}.tar.bz2
72 inst $tmpdir/CONTRIBUTORS $dst/CONTRIBUTORS.txt
73 inst $tmpdir/COPYING $dst/COPYING.txt
74 inst $tmpdir/COPYRIGHT $dst/COPYRIGHT.txt
75 inst $tmpdir/CREDITS $dst/CREDITS.txt
76 inst $tmpdir/ChangeLog $dst/ChangeLog.txt
77 if [ -f $tmpdir/doc/release-notes/release-$RELEASE.html ]; then
78 cat $tmpdir/doc/release-notes/release-$RELEASE.html | sed -e '
79 s/"ChangeLog"/"ChangeLog.txt"/g;
80 ' > $tmpdir/RELEASENOTES.html
81 touch -r $tmpdir/doc/release-notes/release-$RELEASE.html $tmpdir/RELEASENOTES.html
82 inst $tmpdir/RELEASENOTES.html $dst/${name}-RELEASENOTES.html
83 ln -sf ${name}-RELEASENOTES.html $dst/RELEASENOTES.html
84 fi
85 if [ -f $dst/changesets/.update ]; then
86 rm -f $dst/changesets/$tag.html
87 $dst/changesets/.update
88 fi