]> git.ozlabs.org Git - next-scripts/blob - import-akpm
do_build: suppress another message that changes numbers
[next-scripts] / import-akpm
1 #!/bin/bash
2
3 export LOG_FILE=../akpm-import.log
4
5 # shellcheck source=./common.sh
6 . "$(dirname "$0")/common.sh" ''
7
8 log()
9 {
10         echo "$@" | tee -a $LOG_FILE
11 }
12
13 execute()
14 {
15         log '$' "$@"
16         "$@" 2>&1 | tee -a $LOG_FILE
17         return ${PIPESTATUS[0]}
18 }
19
20 mmotm="../mmotm"
21 sfile="$mmotm/series"
22 cpwd=$(pwd)
23
24 [ -f "$mmotm/broken-out/origin.patch" ] &&
25         base=$(sed -n '1s/^GIT *\([^ ]*\).*$/\1/p' "$mmotm/broken-out/origin.patch")
26 [ "$base" ] || {
27         base=$(tail -n 1 "$mmotm/.DATE")
28         base=${base#v}
29         base="v${base}"
30 }
31 nbase=$(sed -n '1s/^GIT *\([^ ]*\).*$/\1/p' "$mmotm/broken-out/linux-next.patch")
32 git rev-parse --verify "$base" >/dev/null || {
33         log "Unknown origin BASE $base"
34         exit 1
35 }
36 git rev-parse --verify "$nbase" >/dev/null || {
37         log "Unknown linux-next BASE $nbase"
38         exit 1
39 }
40 db=$(git describe "$base")
41 dnb=$(git describe --contains "$nbase")
42 log "Importing akpm based on $db/$dnb"
43
44 [ -d "../tmp-akpm" ] && {
45         log "akpm import directory already exists"
46         exit 1
47 }
48
49 execute git worktree add -b tmp-akpm/master ../tmp-akpm "$db" ||
50         $SHELL -i || exit
51
52 log '$' cd ../tmp-akpm
53 cd ../tmp-akpm
54 execute git branch tmp-akpm/current-base ||
55         $SHELL -i || exit
56
57 sed_exp='
58 /NEXT_PATCHES_START/,/NEXT_PATCHES_END/{
59         s/[ \t]*#.*$//
60         /^[ \t]*$/!p
61 }
62 /^linux-next.patch/p'
63 patches=$(sed -n "$sed_exp" "$sfile")
64
65 for f in $patches; do
66         case "$f" in
67         origin.patch)
68                 ;;
69         linux-next.patch)
70                 execute git branch tmp-akpm/current ||
71                         $SHELL -i || exit
72                 execute git merge --no-edit --no-stat "$dnb" || {
73                         check_unmerged_files akpm-current
74
75                         git diff 2>&1 | grep -E -q '<<<<<|^\*' && {
76                                 $SHELL -i || exit
77                         }
78                         GIT_EDITOR=: execute git commit -v -a
79                 }
80                 [ -f "../merge-fixes/akpm-current" ] && {
81                         for p in $(cat "../merge-fixes/akpm-current"); do
82                                 $(dirname $0)/merge_fix -n "$p" ||
83                                         $SHELL -i || exit
84                         done
85                 }
86                 execute git branch tmp-akpm/master-base ||
87                         $SHELL -i || exit
88                 ;;
89         *)
90                 execute git am -s --patch-format=mbox "$mmotm/broken-out/$f" ||
91                         $SHELL -i || exit
92                 ;;
93         esac
94 done
95
96 log '$' cd $cpwd
97 cd $cpwd
98
99 execute rm -rf ../tmp-akpm
100 execute git worktree prune
101
102 for i in akpm/current akpm/current-base akpm/master akpm/master-base; do
103         execute git branch -f $i tmp-$i
104         execute git branch -D tmp-$i
105 done
106
107 exit 0