File: do-release.sh

package info (click to toggle)
lttng-modules 2.14.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,808 kB
  • sloc: ansic: 74,851; sh: 548; makefile: 62
file content (112 lines) | stat: -rwxr-xr-x 2,435 bytes parent folder | download
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
# SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
# SPDX-FileCopyrightText: 2020 EfficiOS Inc.

set -eu
set -o pipefail

# invoke with do-release 2.N.M, or 2.N.M-rcXX

# Default maintainer values
SRCDIR="${HOME}/git/lttng-modules"
# The output files are created in ${HOME}/stable/
OUTPUTDIR="${HOME}/stable"
SIGN="yes"
VERBOSE=""

usage() {
	echo "Usage: do-release.sh [OPTION]... RELEASE"
	echo
	echo "Mandatory arguments to long options are mandatory for short options too."
	echo "  -s, --srcdir DIR               source directory"
	echo "  -o, --outputdir DIR            output directory, must exist"
	echo "  -n, --no-sign                  don't GPG sign the output archive"
	echo "  -v, --verbose                  verbose command output"
}

POS_ARGS=()
while [[ $# -gt 0 ]]
do
	arg="$1"

	case $arg in
	-n|--no-sign)
		SIGN="no"
		shift 1
	;;

	-s|--srcdir)
		SRCDIR="$2"
		shift 2
	;;

	-o|--outputdir)
		OUTPUTDIR="$2"
		shift 2
	;;

	-v|--verbose)
		VERBOSE="-v"
		shift 1
	;;

	# Catch unknown arguments
	-*)
		usage
		exit 1
	;;

	*)
	POS_ARGS+=("$1")
	shift
	;;
	esac
done
set -- "${POS_ARGS[@]}"

REL=${1:-}

if [ x"${REL}" = x"" ]; then
	usage
	exit 1;
fi

echo "Doing LTTng modules release ${REL}"
echo "  Source dir: ${SRCDIR}"
echo "  Output dir: ${OUTPUTDIR}"
echo "  GPG sign: ${SIGN}"

# Make sure the output directory exists
if [ ! -d "${OUTPUTDIR}" ]; then
	echo "Output directory '${OUTPUTDIR}' doesn't exist."
	exit 1
fi

# Make sure the source directory is a git repository
if [ ! -r "${SRCDIR}/.git/config" ]; then
	echo "Source directory '${SRCDIR}' isn't a git repository."
	exit 1
fi

# Set the git repo directory for all further git commands
export GIT_DIR="${SRCDIR}/.git/"

# Check if the release tag exists
if ! git rev-parse "refs/tags/v${REL}" >/dev/null 2>&1; then
	echo "Release tag 'v${REL}' doesn't exist."
	exit 1
fi

# Generate the compressed tar archive, the git attributes from the tag will be used.
git archive $VERBOSE --format=tar --prefix="lttng-modules-${REL}/" "v${REL}" | bzip2 > "${OUTPUTDIR}/lttng-modules-${REL}.tar.bz2"

pushd "${OUTPUTDIR}" >/dev/null
# Generate the hashes
md5sum "lttng-modules-${REL}.tar.bz2" > "lttng-modules-${REL}.tar.bz2.md5"
sha256sum "lttng-modules-${REL}.tar.bz2" > "lttng-modules-${REL}.tar.bz2.sha256"

if [ "x${SIGN}" = "xyes" ]; then
	# Sign with the default key
	gpg --armor -b "lttng-modules-${REL}.tar.bz2"
fi
popd >/dev/null