]> Cypherpunks.ru repositories - gocheese.git/blob - makedist.sh
Prepare for website
[gocheese.git] / makedist.sh
1 #!/bin/sh -ex
2
3 cur=$(pwd)
4 tmp=$(mktemp -d)
5 release=$1
6 [ -n "$release" ]
7
8 git clone . $tmp/gocheese-$release
9 cd $tmp/gocheese-$release
10 git checkout v$release
11
12 mod_name=$(sed -n 's/^module //p' go.mod)
13 crypto_mod_path=$(sed -n 's#^require \(golang.org/x/crypto\) \(.*\)$#\1@\2#p' go.mod)
14 mkdir -p src/$mod_name
15 mv *.go go.mod go.sum src/$mod_name
16
17 mods="
18 golang.org/x/crypto
19 golang.org/x/net
20 "
21 for mod in $mods; do
22     mod_path=$(sed -n "s# // indirect## ; s#^   \($mod\) \(.*\)\$#\1@\2#p" src/$mod_name/go.mod)
23     [ -n "$mod_path" ]
24     mkdir -p src/$mod
25     ( cd $GOPATH/pkg/mod/$mod_path ; tar cf - --exclude ".git*" * ) | tar xfC - src/$mod
26     chmod -R +w src/$mod
27 done
28
29 for mod in golang.org/x/sys; do
30     mod_path=$(sed -n "s#^\($mod\) \(.*\) h1:.*\$#\1@\2#p" src/$mod_name/go.sum | sed /go.mod/d | sort -n -r | sed -n 1p)
31     [ -n "$mod_path" ]
32     mkdir -p src/$mod
33     ( cd $GOPATH/pkg/mod/$mod_path ; tar cf - --exclude ".git*" * ) | tar xfC - src/$mod
34     chmod -R +w src/$mod
35 done
36
37 cat > $tmp/includes <<EOF
38 golang.org/x/crypto/AUTHORS
39 golang.org/x/crypto/argon2
40 golang.org/x/crypto/blake2b
41 golang.org/x/crypto/CONTRIBUTORS
42 golang.org/x/crypto/go.mod
43 golang.org/x/crypto/go.sum
44 golang.org/x/crypto/LICENSE
45 golang.org/x/crypto/PATENTS
46 golang.org/x/crypto/README.md
47 golang.org/x/net/AUTHORS
48 golang.org/x/net/CONTRIBUTORS
49 golang.org/x/net/go.mod
50 golang.org/x/net/go.sum
51 golang.org/x/net/LICENSE
52 golang.org/x/net/netutil
53 golang.org/x/net/PATENTS
54 golang.org/x/net/README.md
55 golang.org/x/sys/AUTHORS
56 golang.org/x/sys/CONTRIBUTORS
57 golang.org/x/sys/cpu
58 golang.org/x/sys/go.mod
59 golang.org/x/sys/LICENSE
60 golang.org/x/sys/PATENTS
61 golang.org/x/sys/README.md
62 EOF
63 tar cfCI - src $tmp/includes | tar xfC - $tmp
64 rm -fr src/golang.org $tmp/includes
65 mv $tmp/golang.org src
66
67 cat > download.texi <<EOF
68 @node Download
69 @unnumbered Download
70 You can obtain releases source code prepared tarballs on
71 @url{http://gocheese.cypherpunks.ru/}.
72 EOF
73 make gocheese.info
74
75 rm -rf .git .gitignore style.css makedist* www.mk
76
77 find . -type d -exec chmod 755 {} \;
78 find . -type f -exec chmod 644 {} \;
79 chmod +x pyshop2packages.sh
80
81 cd ..
82 tar cvf gocheese-"$release".tar --uid=0 --gid=0 --numeric-owner gocheese-"$release"
83 xz -9 gocheese-"$release".tar
84 gpg --detach-sign --sign --local-user CD5CD01F55343D88 gocheese-"$release".tar.xz
85
86 tarball=gocheese-"$release".tar.xz
87 size=$(( $(stat -f %z $tarball) / 1024 ))
88 hash=$(gpg --print-md SHA256 < $tarball)
89 release_date=$(date "+%Y-%m-%d")
90
91 cat <<EOF
92 An entry for documentation:
93 @item @ref{Release $release, $release} @tab $release_date @tab $size KiB
94 @tab @url{gocheese-${release}.tar.xz, link} @url{gocheese-${release}.tar.xz.sig, sign}
95 @tab @code{$hash}
96 EOF
97
98 mv $tmp/$tarball $tmp/"$tarball".sig $cur/gocheese.html/