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