]> Cypherpunks.ru repositories - gogost.git/blob - makedist.sh
Do not alter ukm in gost3410.KEK*
[gogost.git] / makedist.sh
1 #!/bin/sh -ex
2
3 cur=$(pwd)
4 tmp=$(mktemp -d)
5 release=$1
6 [ -n "$release" ]
7
8 redo-ifchange streebog256
9 git clone . $tmp/gogost-$release
10 cd $tmp/gogost-$release
11 git checkout v$release
12 redo module-name VERSION
13 mod_name=`cat module-name`
14
15 crypto_mod_path=$(sed -n 's#^require \(golang.org/x/crypto\) \(.*\)$#\1@\2#p' go.mod)
16 mkdir -p src/$mod_name
17 mv \
18     gost28147 \
19     gost3410 \
20     gost34112012256 \
21     gost34112012512 \
22     gost341194 \
23     gost3412128 \
24     gost341264 \
25     gost3413 \
26     mgm \
27     prfplus \
28     cmd internal gogost.go go.mod go.sum src/$mod_name
29
30 echo $mod_name > module-name
31 find . -name "*.do" -exec perl -i -npe "s/^go/GOPATH=\`pwd\` go/" {} \;
32 mkdir contrib
33 cp ~/work/redo/minimal/do contrib/do
34
35 mkdir -p src/golang.org/x/crypto
36 ( cd $GOPATH/pkg/mod/$crypto_mod_path ; \
37     tar cf - AUTHORS CONTRIBUTORS LICENSE PATENTS README.md pbkdf2 hkdf ) |
38     tar xfC - src/golang.org/x/crypto
39
40 cat > download.texi <<EOF
41 You can obtain releases source code prepared tarballs on
42 @url{http://www.gogost.cypherpunks.ru/}.
43 EOF
44
45 mkinfo() {
46     ${MAKEINFO:-makeinfo} --plaintext \
47         --set-customization-variable CLOSE_QUOTE_SYMBOL=\" \
48         --set-customization-variable OPEN_QUOTE_SYMBOL=\" \
49         -D "VERSION `cat VERSION`" $@
50 }
51
52 texi=$(mktemp)
53 cat > $texi <<EOF
54 \input texinfo
55 @documentencoding UTF-8
56 @settitle INSTALL
57 @include install.texi
58 @bye
59 EOF
60 mkinfo --output INSTALL $texi
61
62 cat > $texi <<EOF
63 \input texinfo
64 @documentencoding UTF-8
65 @settitle NEWS
66 @include news.texi
67 @bye
68 EOF
69 mkinfo --output NEWS $texi
70
71 cat > $texi <<EOF
72 \input texinfo
73 @documentencoding UTF-8
74 @settitle FAQ
75 @include faq.texi
76 @bye
77 EOF
78 mkinfo --output FAQ $texi
79
80 find . -name .git -type d | xargs rm -fr
81 rm -fr .redo
82 rm -f \
83     $texi \
84     *.texi \
85     .gitignore \
86     clean.do \
87     makedist.sh \
88     module-name.do \
89     style.css \
90     TODO \
91     VERSION.do \
92     www.do
93
94 find . -type d -exec chmod 755 {} \;
95 find . -type f -exec chmod 644 {} \;
96 chmod 755 contrib/do
97
98 cd ..
99 tar cvf gogost-"$release".tar --uid=0 --gid=0 --numeric-owner gogost-"$release"
100 xz -9 gogost-"$release".tar
101 gpg --detach-sign --sign --local-user 82343436696FC85A gogost-"$release".tar.xz
102
103 tarball=gogost-"$release".tar.xz
104 size=$(( $(stat -f %z $tarball) / 1024 ))
105 hash=$(gpg --print-md SHA256 < $tarball)
106 hashsb=$($HOME/work/gogost/streebog256 < $tarball)
107 release_date=$(date "+%Y-%m-%d")
108
109 cat <<EOF
110 An entry for documentation:
111 @item @ref{Release $release, $release} @tab $release_date @tab $size KiB
112 @tab @url{gogost-${release}.tar.xz, link} @url{gogost-${release}.tar.xz.sig, sign}
113 @tab @code{$hash}
114 @tab @code{$hashsb}
115 EOF
116
117 cat <<EOF
118 Subject: [EN] GoGOST $release release announcement
119
120 I am pleased to announce GoGOST $release release availability!
121
122 GoGOST is free software pure Go GOST cryptographic functions library.
123 GOST is GOvernment STandard of Russian Federation (and Soviet Union).
124
125 ------------------------ >8 ------------------------
126
127 The main improvements for that release are:
128
129
130 ------------------------ >8 ------------------------
131
132 GoGOST'es home page is: http://www.gogost.cypherpunks.ru/
133
134 Source code and its signature for that version can be found here:
135
136     http://www.gogost.cypherpunks.ru/gogost-${release}.tar.xz ($size KiB)
137     http://www.gogost.cypherpunks.ru/gogost-${release}.tar.xz.sig
138
139 Streebog-256 hash: $hashsb
140 SHA256 hash: $hash
141 GPG key: CEBD 1282 2C46 9C02 A81A  0467 8234 3436 696F C85A
142          GoGOST releases <gogost at cypherpunks dot ru>
143
144 Please send questions regarding the use of GoGOST, bug reports and patches
145 to mailing list: https://lists.cypherpunks.ru/mailman/listinfo/gost
146 EOF
147
148 cat <<EOF
149 Subject: [RU] Состоялся релиз GoGOST $release
150
151 Я рад сообщить о выходе релиза GoGOST $release!
152
153 GoGOST это свободное программное обеспечение реализующее
154 криптографические функции ГОСТ на чистом Go. ГОСТ -- ГОсударственный
155 СТандарт Российской Федерации (а также Советского Союза).
156
157 ------------------------ >8 ------------------------
158
159 Основные усовершенствования в этом релизе:
160
161
162 ------------------------ >8 ------------------------
163
164 Домашняя страница GoGOST: http://www.gogost.cypherpunks.ru/
165
166 Исходный код и его подпись для этой версии могут быть найдены здесь:
167
168     http://www.gogost.cypherpunks.ru/gogost-${release}.tar.xz ($size KiB)
169     http://www.gogost.cypherpunks.ru/gogost-${release}.tar.xz.sig
170
171 Streebog-256 хэш: $hashsb
172 SHA256 хэш: $hash
173 GPG ключ: CEBD 1282 2C46 9C02 A81A  0467 8234 3436 696F C85A
174           GoGOST releases <gogost at cypherpunks dot ru>
175
176 Пожалуйста, все вопросы касающиеся использования GoGOST, отчёты об
177 ошибках и патчи отправляйте в gost почтовую рассылку:
178 https://lists.cypherpunks.ru/mailman/listinfo/gost
179 EOF
180
181 mv $tmp/$tarball $tmp/"$tarball".sig $cur/gogost.html/
182 rm -fr $tmp