aboutsummaryrefslogtreecommitdiff
path: root/util/travis_build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'util/travis_build.sh')
-rwxr-xr-xutil/travis_build.sh79
1 files changed, 32 insertions, 47 deletions
diff --git a/util/travis_build.sh b/util/travis_build.sh
index 225c8548f..6d5dbed68 100755
--- a/util/travis_build.sh
+++ b/util/travis_build.sh
@@ -1,57 +1,42 @@
1#!/bin/bash 1#!/bin/bash
2 2
3# if docker is installed - patch calls to within the qmk docker image 3source util/travis_utils.sh
4if command -v docker >/dev/null; then 4
5 function make() { 5NUM_CORE_CHANGES=$(echo "$QMK_CHANGES" | grep -Ecv -e '^(docs/)' -e '^(keyboards/)' -e '^(layouts/)' -e '^(util/)' -e '^(lib/python/)' -e '^(bin/qmk)' -e '^(requirements.txt)' -e '(.travis.yml)')
6 docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@" 6
7 } 7if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip build]"* ]]; then
8 echo "Skipping due to commit message"
9 exit 0
8fi 10fi
9 11
10# test force push 12if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then
11#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" 13 echo "Making default keymaps for all keyboards"
14 make all:default
15 exit $?
16fi
12 17
13TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" 18exit_code=0
14TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
15MAKE_ALL="make all:default"
16 19
17if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then 20for KB in $(make list-keyboards); do
18 exit_code=0 21 KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
19 git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} 22 if [[ -z "$KEYBOARD_CHANGES" ]]; then
20 if [ $? -eq 128 ]; then 23 # skip as no changes for this keyboard
21 # We don't know what changed so just build the default keymaps 24 continue
22 echo "Making default keymaps for all keyboards (fallback)" 25 fi
23 eval $MAKE_ALL 26
27 KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
28 if [[ $KEYMAP_ONLY -gt 0 ]]; then
29 echo "Making all keymaps for $KB"
30 make ${KB}:all
24 : $((exit_code = $exit_code + $?)) 31 : $((exit_code = $exit_code + $?))
25 else 32 else
26 NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | grep -Ev '^(lib/python/)' | grep -Ev '^(bin/qmk)' | grep -Ev '^(requirements.txt)' | grep -Ev '^(util/)' | wc -l) 33 CHANGED_KEYMAPS=$(echo "$KEYBOARD_CHANGES" | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_-]+)(?=\/)')
27 BRANCH=$(git rev-parse --abbrev-ref HEAD) 34 for KM in $CHANGED_KEYMAPS ; do
28 # is this branch master or a "non docs, non keyboards" change 35 echo "Making $KM for $KB"
29 if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then 36 make ${KB}:${KM}
30 echo "Making default keymaps for all keyboards"
31 eval $MAKE_ALL
32 : $((exit_code = $exit_code + $?)) 37 : $((exit_code = $exit_code + $?))
33 else 38 done
34 # keyboards project format
35 # /keyboards/board1/rev/keymaps/
36 # /keyboards/board2/keymaps/
37 # ensure we strip everything off after and including the keymaps folder to get board and/or revision
38 MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_\/]+)(?=\/)' | sed 's^/keymaps/.*^^' | sort -u)
39 for KB in $MKB ; do
40 KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
41 if [[ $KEYMAP_ONLY -gt 0 ]]; then
42 echo "Making all keymaps for $KB"
43 make ${KB}:all
44 : $((exit_code = $exit_code + $?))
45 else
46 MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
47 for KM in $MKM ; do
48 echo "Making $KM for $KB"
49 make ${KB}:${KM}
50 : $((exit_code = $exit_code + $?))
51 done
52 fi
53 done
54 fi
55 fi 39 fi
56 exit $exit_code 40done
57fi 41
42exit $exit_code