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