diff options
Diffstat (limited to 'util/travis_build.sh')
-rwxr-xr-x | util/travis_build.sh | 79 |
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 | 3 | source util/travis_utils.sh |
4 | if command -v docker >/dev/null; then | 4 | |
5 | function make() { | 5 | NUM_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 | } | 7 | if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip build]"* ]]; then |
8 | echo "Skipping due to commit message" | ||
9 | exit 0 | ||
8 | fi | 10 | fi |
9 | 11 | ||
10 | # test force push | 12 | if [ "$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 $? | ||
16 | fi | ||
12 | 17 | ||
13 | TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" | 18 | exit_code=0 |
14 | TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" | ||
15 | MAKE_ALL="make all:default" | ||
16 | 19 | ||
17 | if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then | 20 | for 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 | 40 | done |
57 | fi | 41 | |
42 | exit $exit_code | ||