| #!/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 |
| |