1.0.42.1: add release script
[sbcl.git] / release.sh
1 #! /bin/sh
2
3 set -ex
4
5 cd "$1"
6
7 sbcl_directory="$(pwd)"
8
9 cd "$sbcl_directory"
10
11 tmpfile=$(mktemp --tmpdir sbcl-build-$(date +%Y%m%d)-XXXXXXXXX)
12
13 ./make.sh >$tmpfile 2>&1
14
15 ./src/runtime/sbcl --version | grep '^SBCL [1-9][0-9]*\.[0-9]\+\.[1-9][0-9]*$'
16
17 version=$(./src/runtime/sbcl --version | awk '{print $2}')
18 grep "^changes in sbcl-$version relative to" NEWS
19
20 cd tests
21 sh ./run-tests.sh >>$tmpfile 2>&1
22 cd ..
23
24 cp ./src/runtime/sbcl /tmp/sbcl-$version
25 cp ./output/sbcl.core /tmp/sbcl-$version.core
26
27 ./make.sh "/tmp/sbcl-$version --core /tmp/sbcl-$version.core" > /tmp/sbcl-$version-build-log 2>&1
28 cd doc && sh ./make-doc.sh
29
30 cd ..
31
32 rm /tmp/sbcl-$version /tmp/sbcl-$version.core
33
34 cp -a "$sbcl_directory" /tmp/sbcl-$version
35
36 ln -s /tmp/sbcl-$version /tmp/sbcl-$version-x86-linux
37 cd /tmp/
38 sh sbcl-$version/binary-distribution.sh sbcl-$version-x86-linux
39 sh sbcl-$version/html-distribution.sh sbcl-$version
40 cd sbcl-$version
41 sh ./distclean.sh
42 cd ..
43 sh sbcl-$version/source-distribution.sh sbcl-$version
44
45 awk "BEGIN { state = 0 }
46  /^changes in sbcl-/ { state = 0 } 
47  /^changes in sbcl-$version/ { state = 1 }
48  { if(state == 1) print \$0 }" < sbcl-$version/NEWS > sbcl-$version-release-notes.txt
49
50 echo "The SHA256 checksums of the following distribution files are:" > sbcl-$version-crhodes
51 echo >> sbcl-$version-crhodes
52 sha256sum sbcl-$version*.tar >> sbcl-$version-crhodes
53 bzip2 /tmp/sbcl-$version*.tar
54
55 echo Bugs fixed by sbcl-$version release > sbcl-$version-bugmail.txt
56 for bugnum in $(egrep -o "#[1-9][0-9][0-9][0-9][0-9][0-9]+" sbcl-$version-release-notes.txt | sed s/#// | sort -n)
57 do 
58   printf "\n bug %s\n status fixreleased" $bugnum >> sbcl-$version-bugmail.txt
59 done
60 echo >> sbcl-$version-bugmail.txt
61
62 set +x
63
64 echo TODO:
65 echo
66 echo cvs commit -m "\"$version: will be tagged as sbcl_$(echo $version | sed 's/\./_/g')\""
67 echo cvs tag sbcl_$(echo $version | sed 's/\./_/g')
68 echo gpg -sta /tmp/sbcl-$version-crhodes
69 echo sftp crhodes,sbcl@frs.sourceforge.net
70 echo \* cd /home/frs/project/s/sb/sbcl/sbcl
71 echo \* mkdir $version
72 echo \* chmod 775 $version
73 echo \* cd $version
74 echo \* put sbcl-$version-crhodes.asc
75 echo \* put sbcl-$version-x86-linux-binary.tar.bz2
76 echo \* put sbcl-$version-source.tar.bz2
77 echo \* put sbcl-$version-documentation-html.tar.bz2
78 echo \* put sbcl-$version-release-notes.txt
79 echo 
80 echo perform administrative tasks:
81 echo 
82 echo \* https://sourceforge.net/project/admin/?group_id=1373
83 echo \* In the File Manager interface, click on the release notes file
84 echo \ \ and tick the release notes box.
85 echo \* In the File Manager interface, click on the source tarball and
86 echo \ \ select as default download for all OSes.
87 echo \* mail sbcl-announce
88 echo \* check and send sbcl-$version-bugmail.txt to edit@bugs.launchpad.net
89 echo \ \ '(sign: C-c RET s p)'
90 echo \* update \#lisp IRC topic
91 echo \* update sbcl website