blob: 89008f234c518c2c56396cf85ecf2cb2c434df86 [file]
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Finalize a release (possibly prepared with AI agent assistance)
# Amends the version bump commit to add Signed-off-by, then creates a
# signed annotated tag from the drafted tag message.
set -e
usage() {
echo "Usage: $0 <tag-message-file>" >&2
echo "" >&2
echo "Run this from the repository root with VERSION.txt updated" >&2
echo "and a draft tag message in given file." >&2
exit 1
}
TAG_MSG_FILE="$1"
if [ -z "$TAG_MSG_FILE" ] || [ ! -f "$TAG_MSG_FILE" ]; then
usage
fi
VERSION=$(cat VERSION.txt)
TAG="v${VERSION}"
if git rev-parse "$TAG" >/dev/null 2>&1; then
echo "Error: tag $TAG already exists" >&2
exit 1
fi
HEAD_SUBJECT=$(git log -1 --format=%s)
EXPECTED="Bump version to $TAG"
if [ "$HEAD_SUBJECT" != "$EXPECTED" ]; then
echo "Error: HEAD commit subject is:" >&2
echo " $HEAD_SUBJECT" >&2
echo "Expected:" >&2
echo " $EXPECTED" >&2
exit 1
fi
echo "Version: $VERSION"
echo "Tag: $TAG"
echo ""
echo "--- Tag message ---"
cat "$TAG_MSG_FILE"
echo "--- End tag message ---"
echo ""
printf "Proceed? [y/N] "
read answer
case "$answer" in
y|Y) ;;
*) echo "Aborted."; exit 1 ;;
esac
git commit --amend -s --no-edit
git tag -s "$TAG" -F "$TAG_MSG_FILE"
echo ""
echo "Created signed tag $TAG."
echo "Review with: git show $TAG"
echo ""
git push origin main "$TAG"
git push github main "$TAG"
git push gitlab main "$TAG"
SCRIPTDIR=$(dirname "$0")
printf "Upload to kernel.org via kup? [y/N] "
read answer
case "$answer" in
y|Y) "$SCRIPTDIR/kup-dtc" "$VERSION" ;;
*) echo "Skipping kup upload." ;;
esac
TAG_BODY=$(git tag -l --format='%(contents:body)' "$TAG")
ANNOUNCE="announce-${TAG}.txt"
cat > "$ANNOUNCE" <<MAIL
To: devicetree-compiler@vger.kernel.org
Subject: DTC $VERSION released
DTC $VERSION is now available.
Git tree:
https://git.kernel.org/pub/scm/utils/dtc/dtc.git
Tagged release ($TAG):
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/tag/?h=$TAG
Tarball:
https://kernel.org/pub/software/utils/dtc/dtc-${VERSION}.tar.gz
$TAG_BODY
MAIL
echo "Announcement draft written to $ANNOUNCE"