-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkflavour
executable file
·64 lines (57 loc) · 1.51 KB
/
kflavour
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
#!/bin/bash -efu
shopt -s extglob
V() { echo "- $*" >&2; "$@"; }
RED=$'\e[1;31m'
GREEN=$'\e[1;32m'
YELLOW=$'\e[1;33m'
NORM=$'\e[m'
br=$(git branch --show-current)
unset tagging
if [ "${1-}" = --tag ]; then
tagging=y
shift
fi
if [ -n "$*" ]; then
fvnew="$*"
else
branch=${br#*/}
brflvr=${br%/*}
case $branch in
sisyphus|p[1-9]*|c[1-9]*) ;;
*) echo >&2 "Invalid repo $branch"; exit 1 ;;
esac
case $brflvr in
un-def|std-def|std-pae|std-debug|next|rt|+([[:digit:]]).+([[:digit:]])) ;;
*) echo >&2 "Invalid flavour $brflvr"; exit 1 ;;
esac
top=$(git rev-parse --show-toplevel)
rtbr=$(cut -d' ' -f1 "$top/.gear/release-targets")
if [ "$rtbr" != "$branch" ]; then
echo >&2 "${RED}Warning: Branch from .gear/release-targets ($rtbr) != $branch${NORM}"
fi
rtfv=$(cut -d' ' -f2 "$top/.gear/release-targets")
if [ "$brflvr" = "next" ]; then
fvnew=$rtfv
else
if [ "$rtfv" != "$brflvr" ]; then
echo >&2 "${RED}Warning: flavour from .gear/release-targets ($rtfv) != $brflvr${NORM}"
fi
fvnew=$brflvr
fi
fi
fvold=$(git config gear.specsubst.kflavour)
if [ "$fvold" = "$fvnew" ]; then
echo >&2 "${GREEN}Flavour is already $fvold${NORM}"
else
echo >&2 "${YELLOW}Changing flavour $fvold -> $fvnew${NORM}"
git config gear.specsubst.kflavour "$fvnew"
fi
git config format.subjectPrefix "PATCH $br"
if [ -v tagging ]; then
tags=$(git tag --points-at @ "kernel-image-$fvnew-*")
if [ -n "$tags" ]; then
echo >&2 "Already have tags for flavour $fvnew: ${GREEN}$tags${NORM}"
else
(set -x; kernel-tag "$fvnew")
fi
fi