xref: /aosp_15_r20/external/fsverity-utils/scripts/do-release.sh (revision b13c0e4024008a1f948ee8189745cb3371f4ac04)
1*b13c0e40SEric Biggers#!/bin/bash
2*b13c0e40SEric Biggers# SPDX-License-Identifier: MIT
3*b13c0e40SEric Biggers# Copyright 2020 Google LLC
4*b13c0e40SEric Biggers#
5*b13c0e40SEric Biggers# Use of this source code is governed by an MIT-style
6*b13c0e40SEric Biggers# license that can be found in the LICENSE file or at
7*b13c0e40SEric Biggers# https://opensource.org/licenses/MIT.
8*b13c0e40SEric Biggers
9*b13c0e40SEric Biggersset -e -u -o pipefail
10*b13c0e40SEric Biggerscd "$(dirname "$0")/.."
11*b13c0e40SEric Biggers
12*b13c0e40SEric Biggersusage()
13*b13c0e40SEric Biggers{
14*b13c0e40SEric Biggers	echo "Usage: $0 prepare|publish VERS" 1>&2
15*b13c0e40SEric Biggers	echo "  e.g. $0 prepare 1.0" 1>&2
16*b13c0e40SEric Biggers	echo "       $0 publish 1.0" 1>&2
17*b13c0e40SEric Biggers	exit 2
18*b13c0e40SEric Biggers}
19*b13c0e40SEric Biggers
20*b13c0e40SEric Biggersif [ $# != 2 ]; then
21*b13c0e40SEric Biggers	usage
22*b13c0e40SEric Biggersfi
23*b13c0e40SEric Biggers
24*b13c0e40SEric BiggersPUBLISH=false
25*b13c0e40SEric Biggerscase $1 in
26*b13c0e40SEric Biggerspublish)
27*b13c0e40SEric Biggers	PUBLISH=true
28*b13c0e40SEric Biggers	;;
29*b13c0e40SEric Biggersprepare)
30*b13c0e40SEric Biggers	;;
31*b13c0e40SEric Biggers*)
32*b13c0e40SEric Biggers	usage
33*b13c0e40SEric Biggers	;;
34*b13c0e40SEric Biggersesac
35*b13c0e40SEric BiggersVERS=$2
36*b13c0e40SEric BiggersPKG=fsverity-utils-$VERS
37*b13c0e40SEric Biggers
38*b13c0e40SEric Biggersprepare_release()
39*b13c0e40SEric Biggers{
40*b13c0e40SEric Biggers	git checkout -f
41*b13c0e40SEric Biggers	git clean -fdx
42*b13c0e40SEric Biggers	./scripts/run-tests.sh
43*b13c0e40SEric Biggers	git clean -fdx
44*b13c0e40SEric Biggers
45*b13c0e40SEric Biggers	major=$(echo "$VERS" | cut -d. -f1)
46*b13c0e40SEric Biggers	minor=$(echo "$VERS" | cut -d. -f2)
47*b13c0e40SEric Biggers	month=$(LC_ALL=C date +%B)
48*b13c0e40SEric Biggers	year=$(LC_ALL=C date +%Y)
49*b13c0e40SEric Biggers
50*b13c0e40SEric Biggers	sed -E -i -e "/FSVERITY_UTILS_MAJOR_VERSION/s/[0-9]+/$major/" \
51*b13c0e40SEric Biggers		  -e "/FSVERITY_UTILS_MINOR_VERSION/s/[0-9]+/$minor/" \
52*b13c0e40SEric Biggers		  include/libfsverity.h
53*b13c0e40SEric Biggers	sed -E -i "/Version:/s/[0-9]+\.[0-9]+/$VERS/" \
54*b13c0e40SEric Biggers		  lib/libfsverity.pc.in
55*b13c0e40SEric Biggers	sed -E -i -e "/^\.TH /s/fsverity-utils v[0-9]+(\.[0-9]+)+/fsverity-utils v$VERS/" \
56*b13c0e40SEric Biggers		  -e "/^\.TH /s/[a-zA-Z]+ 2[0-9]{3}/$month $year/" \
57*b13c0e40SEric Biggers		  man/*.[1-9]
58*b13c0e40SEric Biggers	git commit -a --signoff --message="v$VERS"
59*b13c0e40SEric Biggers	git tag --sign "v$VERS" --message="$PKG"
60*b13c0e40SEric Biggers
61*b13c0e40SEric Biggers	git archive "v$VERS" --prefix="$PKG/" > "$PKG.tar"
62*b13c0e40SEric Biggers	tar xf "$PKG.tar"
63*b13c0e40SEric Biggers	( cd "$PKG" && make check )
64*b13c0e40SEric Biggers	rm -r "$PKG"
65*b13c0e40SEric Biggers}
66*b13c0e40SEric Biggers
67*b13c0e40SEric Biggerspublish_release()
68*b13c0e40SEric Biggers{
69*b13c0e40SEric Biggers	gpg --detach-sign --armor "$PKG.tar"
70*b13c0e40SEric Biggers	DESTDIR=/pub/linux/kernel/people/ebiggers/fsverity-utils/v$VERS
71*b13c0e40SEric Biggers	kup mkdir "$DESTDIR"
72*b13c0e40SEric Biggers	kup put "$PKG.tar" "$PKG.tar.asc" "$DESTDIR/$PKG.tar.gz"
73*b13c0e40SEric Biggers	git push
74*b13c0e40SEric Biggers	git push --tags
75*b13c0e40SEric Biggers}
76*b13c0e40SEric Biggers
77*b13c0e40SEric Biggersif $PUBLISH; then
78*b13c0e40SEric Biggers	publish_release
79*b13c0e40SEric Biggerselse
80*b13c0e40SEric Biggers	prepare_release
81*b13c0e40SEric Biggersfi
82