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