script: tag the releases
[kai/samba-autobuild/.git] / script / librelease.sh
1 #!/bin/bash
2 # make a release of a Samba library
3
4 if [ ! -d ".git" ]; then
5         echo "Run this script from the top-level directory in the"
6         echo "repository"
7         exit 1
8 fi
9
10 if [ $# -lt 1 ]; then
11     echo "Usage: librelease.sh <LIBNAMES>"
12     exit 1
13 fi
14
15
16 release_lib() {
17     lib="$1"
18     srcdir="$2"
19
20     pushd $srcdir
21
22     echo "Releasing library $lib"
23
24     echo "building release tarball"
25     tgzname=$(make dist 2>&1 | grep ^Created | cut -d' ' -f2)
26     [ -f "$tgzname" ] || {
27         echo "Failed to create tarball"
28         exit 1
29     }
30     tarname=$(basename $tgzname .gz)
31     echo "Tarball: $tarname"
32     gunzip -f $tgzname || exit 1
33     [ -f "$tarname" ] || {
34         echo "Failed to decompress tarball $tarname"
35         exit 1
36     }
37
38     tagname=$(basename $tarname .tar | sed s/[\.]/-/g)
39     echo "tagging as $tagname"
40     git tag -s "$tagname" -m "$lib: tag release $tagname"
41
42     echo "signing"
43     rm -f "$tarname.asc"
44     gpg --detach-sign --armor $tarname || exit 1
45     [ -f "$tarname.asc" ] || {
46         echo "Failed to create signature $tarname.asc"
47         exit 1
48     }
49     echo "compressing"
50     gzip -f -9 $tarname
51     [ -f "$tgzname" ] || {
52         echo "Failed to compress $tgzname"
53         exit 1
54     }
55
56     echo "Transferring"
57     rsync -Pav $tarname.asc $tgzname master.samba.org:~ftp/pub/$lib/
58
59     popd
60 }
61
62 for lib in $*; do
63     case $lib in
64         talloc | tdb | tevent)
65             release_lib $lib "lib/$lib"
66             ;;
67         ldb)
68             release_lib $lib "source4/lib/$lib"
69             ;;
70         *)
71             echo "Unknown library $lib"
72             exit 1
73     esac
74 done