#!/bin/sh # # Copyright (C) 2012 Karel Zak # # Usage: ko-release-gen [] # # This script prepares a new release for publishing on kernel.org. The # hierarchy of release files is created in the (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