xref: /freebsd/sys/contrib/device-tree/scripts/cronjob (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
1c66ec88fSEmmanuel Vadot#!/bin/bash
2c66ec88fSEmmanuel Vadot
3c66ec88fSEmmanuel Vadotset -e
4c66ec88fSEmmanuel Vadot
5c66ec88fSEmmanuel Vadotcd $(dirname $0)/..
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel VadotUPSTREAM_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
8c66ec88fSEmmanuel Vadot
9*7d0873ebSEmmanuel VadotBRANCHES="master filter-state-split upstream/master upstream/dts"
10c66ec88fSEmmanuel Vadot
11c66ec88fSEmmanuel Vadotif [ ! -f scripts/filter.sh ] ; then
12c66ec88fSEmmanuel Vadot    echo "`pwd`: does not appear to be a device-tree.git" 1>&2
13c66ec88fSEmmanuel Vadot    exit 1
14c66ec88fSEmmanuel Vadotfi
15c66ec88fSEmmanuel Vadot
16c66ec88fSEmmanuel Vadotif [ -z "$LATEST_VERSION" ] ; then
17c66ec88fSEmmanuel Vadot    FINGER_BANNER="https://www.kernel.org/finger_banner"
18c66ec88fSEmmanuel Vadot    LATEST_VERSION=$(wget --quiet -O - "$FINGER_BANNER" |\
19c66ec88fSEmmanuel Vadot        sed -n -e '0,/^The latest mainline version of the Linux kernel is:\s*\(.*\)$/s//\1/p')
20c66ec88fSEmmanuel Vadotfi
21c66ec88fSEmmanuel Vadot
22c66ec88fSEmmanuel Vadotif [ -z "$LATEST_VERSION" ] ; then
23c66ec88fSEmmanuel Vadot    echo "Unable to determine latest version" 1>&2
24c66ec88fSEmmanuel Vadot    exit 1
25c66ec88fSEmmanuel Vadotfi
26c66ec88fSEmmanuel Vadot
27c66ec88fSEmmanuel Vadotecho "Latest Version: v$LATEST_VERSION"
28c66ec88fSEmmanuel Vadotif ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION} ; then
29c66ec88fSEmmanuel Vadot    echo "Latest version is new"
30c66ec88fSEmmanuel Vadotfi
31c66ec88fSEmmanuel Vadotif ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION}-dts ; then
32c66ec88fSEmmanuel Vadot    echo "Latest version is unmerged"
33c66ec88fSEmmanuel Vadotfi
34c66ec88fSEmmanuel Vadotecho
35c66ec88fSEmmanuel Vadot
36c66ec88fSEmmanuel Vadotecho "Current State:"
37c66ec88fSEmmanuel Vadotfor branch in $BRANCHES ; do
38c66ec88fSEmmanuel Vadot    REF=$(git show-ref --verify refs/heads/${branch})
39c66ec88fSEmmanuel Vadot    if [ $? -ne 0 ] ; then
40c66ec88fSEmmanuel Vadot	echo "Tree is missing required branch ${branch}, aborting" 1>&2
41c66ec88fSEmmanuel Vadot	exit 1
42c66ec88fSEmmanuel Vadot    fi
43c66ec88fSEmmanuel Vadot    echo "  ${REF}"
44c66ec88fSEmmanuel Vadotdone
45c66ec88fSEmmanuel Vadotecho
46c66ec88fSEmmanuel Vadot
47c66ec88fSEmmanuel Vadottrap '
48c66ec88fSEmmanuel Vadotif [ -n "$FILTER_OUTPUT" ] ; then
49c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
50c66ec88fSEmmanuel Vadot    echo "Filter Output:"
51c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
52c66ec88fSEmmanuel Vadot    echo "$FILTER_OUTPUT"
53c66ec88fSEmmanuel Vadot    echo
54c66ec88fSEmmanuel Vadotfi
55c66ec88fSEmmanuel Vadotif [ -n "$MERGE_OUTPUT" ] ; then
56c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
57c66ec88fSEmmanuel Vadot    echo "Merge Output:"
58c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
59c66ec88fSEmmanuel Vadot    echo "$MERGE_OUTPUT"
60c66ec88fSEmmanuel Vadot    echo
61c66ec88fSEmmanuel Vadotfi
62c66ec88fSEmmanuel Vadot' EXIT
63c66ec88fSEmmanuel Vadot
64c66ec88fSEmmanuel VadotFILTER_OUTPUT=`(
65c66ec88fSEmmanuel Vadotset -e
66c66ec88fSEmmanuel Vadotecho "Switching to master branch"
67c66ec88fSEmmanuel Vadotgit checkout master
68c66ec88fSEmmanuel Vadot
69c66ec88fSEmmanuel Vadotecho "Fetching $UPSTREAM_GIT master"
70c66ec88fSEmmanuel Vadotgit fetch --tags "$UPSTREAM_GIT" master
71c66ec88fSEmmanuel Vadotecho
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel Vadotecho "Filtering"
74c66ec88fSEmmanuel Vadot./scripts/filter.sh
75c66ec88fSEmmanuel Vadotecho
76c66ec88fSEmmanuel Vadot) 2>&1 `
77c66ec88fSEmmanuel Vadot
78*7d0873ebSEmmanuel Vadot#git push --dry-run origin filter-state-split upstream/dts upstream/master
79c66ec88fSEmmanuel Vadot#git push --dry-run origin --tags
80c66ec88fSEmmanuel Vadot#echo
81c66ec88fSEmmanuel Vadot
82c66ec88fSEmmanuel VadotDATE=$(date +%Y%m%d)
83c66ec88fSEmmanuel VadotTESTBRANCH=test-${DATE}
84c66ec88fSEmmanuel VadotMERGE_OUTPUT=`(
85c66ec88fSEmmanuel Vadotset -e
86c66ec88fSEmmanuel Vadotgit checkout -b ${TESTBRANCH} origin/master
87e67e8565SEmmanuel Vadotgit -c merge.renameLimit=1000000 merge --no-edit upstream/dts
88c66ec88fSEmmanuel Vadot) 2>&1 `
89c66ec88fSEmmanuel VadotREF=$(git show-ref --verify refs/heads/${TESTBRANCH})
90c66ec88fSEmmanuel Vadotecho "Testing: ${REF}"
91c66ec88fSEmmanuel Vadotif git log ${TESTBRANCH} -- MAINTAINERS | grep --quiet . ; then
92c66ec88fSEmmanuel Vadot    echo "Filter branch has upstream-only content (MAINTAINERS file)"
93c66ec88fSEmmanuel Vadot    exit 1
94c66ec88fSEmmanuel Vadotfi
95c66ec88fSEmmanuel Vadot
96c66ec88fSEmmanuel Vadotmake clean -s
97c66ec88fSEmmanuel VadotTEST_OUTPUT=`make -k -s 2>&1 || true`
98c66ec88fSEmmanuel Vadotif [ -z "${TEST_OUTPUT}" ]; then
99c66ec88fSEmmanuel Vadot    echo "Success!"
100c66ec88fSEmmanuel Vadotelse
101c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
102c66ec88fSEmmanuel Vadot    echo "Test Output:"
103c66ec88fSEmmanuel Vadot    echo "---------------------------------------------------------------------"
104c66ec88fSEmmanuel Vadot    echo "$TEST_OUTPUT"
105c66ec88fSEmmanuel Vadotfi
106c66ec88fSEmmanuel Vadotecho
107c66ec88fSEmmanuel Vadot
108c66ec88fSEmmanuel Vadotecho "Switching back to master branch"
109c66ec88fSEmmanuel Vadotgit checkout master
110c66ec88fSEmmanuel Vadot
111c66ec88fSEmmanuel Vadotecho "Recording refs/tests/${DATE}"
112c66ec88fSEmmanuel Vadotgit update-ref refs/tests/${DATE} ${TESTBRANCH}
113c66ec88fSEmmanuel Vadot
114c66ec88fSEmmanuel Vadotecho "Removing ${TESTBRANCH}"
115c66ec88fSEmmanuel Vadotgit branch -D "${TESTBRANCH}"
116c66ec88fSEmmanuel Vadot
117c66ec88fSEmmanuel Vadotecho "Final State:"
118c66ec88fSEmmanuel Vadotfor branch in ${BRANCHES} ; do
119c66ec88fSEmmanuel Vadot    REF=$(git show-ref --verify refs/heads/${branch})
120c66ec88fSEmmanuel Vadot    echo "  ${REF}"
121c66ec88fSEmmanuel Vadotdone
122c66ec88fSEmmanuel Vadotecho
123c66ec88fSEmmanuel Vadot
124c66ec88fSEmmanuel Vadotexit 0
125