summaryrefslogtreecommitdiffstats
path: root/script/librelease.sh
blob: 61252363614a8283203cf15e6998dc0cfad59322 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
# make a release of a Samba library

GPG_USER='Samba Library Distribution Key <samba-bugs@samba.org>'
GPG_KEYID='13084025'

if [ ! -d ".git" ]; then
	echo "Run this script from the top-level directory in the"
	echo "repository"
	exit 1
fi

if [ $# -lt 1 ]; then
    echo "Usage: librelease.sh <LIBNAMES>"
    exit 1
fi

umask 0022

release_lib() {
    lib="$1"
    srcdir="$2"

    pushd $srcdir

    echo "Releasing library $lib"

    echo "building release tarball"
    tgzname=$(make dist 2>&1 | grep ^Created | cut -d' ' -f2)
    [ -f "$tgzname" ] || {
	echo "Failed to create tarball"
	exit 1
    }
    tarname=$(basename $tgzname .gz)
    echo "Tarball: $tarname"
    gunzip -f $tgzname || exit 1
    [ -f "$tarname" ] || {
	echo "Failed to decompress tarball $tarname"
	exit 1
    }

    tagname=$(basename $tarname .tar)
    echo "tagging as $tagname"
    git tag -u $GPG_KEYID -s "$tagname" -m "$lib: tag release $tagname" || {
	exit 1
    }

    echo "signing"
    rm -f "$tarname.asc"
    gpg -u "$GPG_USER" --detach-sign --armor $tarname || {
	exit 1
    }
    [ -f "$tarname.asc" ] || {
	echo "Failed to create signature $tarname.asc"
	exit 1
    }
    echo "compressing"
    gzip -f -9 $tarname
    [ -f "$tgzname" ] || {
	echo "Failed to compress $tgzname"
	exit 1
    }

    echo "Transferring"
    rsync -Pav $tarname.asc $tgzname master.samba.org:~ftp/pub/$lib/ || {
	exit 1
    }
    rsync master.samba.org:~ftp/pub/$lib/$tarname.*

    popd
}

for lib in $*; do
    case $lib in
	talloc | tdb | tevent)
	    release_lib $lib "lib/$lib"
	    ;;
	ldb)
	    release_lib $lib "source4/lib/$lib"
	    ;;
	*)
	    echo "Unknown library $lib"
	    exit 1
    esac
done