blob: 9f904d1b1fcd06d012e91b11d962b77e9720fbda [file] [log] [blame]
#!/bin/sh
#
# Copyright (C) 2012 Karel Zak <kzak@redhat.com>
#
# Usage: ko-release-gen [<directory>]
#
# This script prepares a new release for publishing on kernel.org. The
# hierarchy of release files is created in the <directory> (default directory
# is "kernel.org"). Use case:
#
# make distcheck
# make changelog
# tools/ko-release-gen
# tools/ko-release-push
#
cd "$(git rev-parse --show-toplevel)" || {
echo "error: failed to chdir to git root"
exit 1
}
[ -f ".version" ] || \
echo "error: cannot found version file (call make distcheck)"
VERSION=$(cat .version)
VERSION_MAJOR=$(echo $VERSION | sed 's/-rc[0-9]//; s/\(.*\..*\)\..*/\1/')
VERSION_DOCS=$(echo $VERSION | sed 's/-rc[0-9]//')
DISTDIR=${1:-"kernel.org"}/v${VERSION_MAJOR}
GPG_PROG=${GPG_PROG:-"gpg"}
GPG_CMD="$GPG_PROG --use-agent --armor --detach-sign --quiet"
die() {
echo $1
exit 1
}
add_file() {
local src="$1"
local name=$(basename $1)
local subdir=$DISTDIR/${2:-""}
mkdir -p $subdir
cp $src $subdir || die "$src: copy failed"
[ -f $subdir/$name ] || die "$name not found"
echo -n " $subdir/$name ..."
case "$name" in
*.tar.xz)
local sig=$(echo "$name" | sed 's/\.tar\.xz/.tar.sign/')
xz -d -c $subdir/$name | $GPG_CMD --output $subdir/$sig
;;
*.tar.gz)
local sig=$(echo "$name" | sed 's/\.tar\.gz/.tar.sign/')
gzip -d -c $subdir/$name | $GPG_CMD --output $subdir/$sig
;;
*.tar.bz2)
local sig=$(echo "$name" | sed 's/\.tar\.bz2/.tar.sign/')
bzip2 -d -c $subdir/$name | $GPG_CMD --output $subdir/$sig
;;
*)
local sig="${name}.sign"
cat $subdir/$name | $GPG_CMD --output $subdir/$sig
;;
esac
echo " OK "
}
add_html_dir() {
local src="$1" # source dir
local tgt="$2" # target dir
for fl in $(ls $src/*.html $src/*.css $src/*.png); do
add_file $fl $tgt
done
}
rm -rf $DISTDIR
eval $(gpg-agent --daemon)
add_file util-linux-${VERSION}.tar.xz
add_file v${VERSION}-ChangeLog
add_file Documentation/releases/v${VERSION_DOCS}-ReleaseNotes
add_html_dir libmount/docs/html libmount-docs
add_html_dir libblkid/docs/html libblkid-docs
add_html_dir libsmartcols/docs/html libsmartcols-docs
add_html_dir libfdisk/docs/html libfdisk-docs
killall gpg-agent