summaryrefslogtreecommitdiffstats
path: root/tools/ko-release-push
blob: 530c3a7ca2d9f6a365aaa867b2a1b090a0877be7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/sh
#
# Copyright (C) 2012 Karel Zak <kzak@redhat.com>
#
# Usage:  ko-release-push [<directory> [<version>]]
#
# This script pushs files from <directory>/v<version> to kernel.org. The
# default <directory> is "kernel.org" and the default <version> is the current
# package version.
#
# The <directory>/v<version> files should be generated by ko-release-gen script.
#

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=${2:-$(cat .version)}
VERSION_MAJOR=$(echo $VERSION | sed 's/-rc[0-9]//; s/\(.*\..*\)\..*/\1/')
BASEDIR=${1:-"kernel.org"}
DISTDIR="${BASEDIR}/v${VERSION_MAJOR}"

KO_DIR="/pub/linux/utils/util-linux/v${VERSION_MAJOR}"

die() {
	echo $1
	exit 1
}

function push_file {
	local sig="$1"

	case "$sig" in
	*.tar.sign)
		fl=${sig%%.sign}
		if   [ -f ${fl}.xz ];  then fl=${fl}.xz
		elif [ -f ${fl}.gz ];  then fl=${fl}.gz
		elif [ -f ${fl}.bz2 ]; then fl=${fl}.bz2
		else die "cannot found original file for $sig"
		fi
		;;
	*)
		fl=$(echo "$sig" | sed 's/\.sign//')
		;;
	esac

	echo -n " PUSH $fl ..."
	kup put $fl $sig ${KO_DIR}/${fl##${DISTDIR}/}
	echo " OK "
}

[ -d "$DISTDIR" ] || die "$DISTDIR: Not such directory"

FILES=$(find $DISTDIR -name "*.sign" | sort)
DIRS=$(for f in $FILES; do echo $(dirname ${KO_DIR}/${f##${DISTDIR}/}); done | sort -u)

for d in $DIRS; do
	echo -n " MKDIR $d ..."
	kup mkdir $d
	echo " OK "
done

for f in $FILES; do
	push_file $f
done