summaryrefslogblamecommitdiffstats
path: root/tools/ko-release-gen
blob: 58f05415d6c865e9866b28c28c34d80a2469b438 (plain) (tree)
























                                                                             

                                                                         

                                            
                                                       





















                                                                        







                                                                          


















                                                                  

                          

                                            
                                                                    


                                                

                 
#!/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_CMD="gpg --use-agent --armor --detach-sign --quiet"

function die {
	echo $1
	exit 1
}

function 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 "
}

function add_html_dir {
	local src="$1"		# source dir
	local tgt="$2"		# target dir
	
	for fl in $(ls $src/*.{html,css,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

killall gpg-agent