summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach White <skullydazed@gmail.com>2020-12-18 12:17:53 -0800
committerDrashna Jael're <drashna@live.com>2021-01-12 22:46:09 -0800
commit18b03049f39e0993fb1d8a58415b53aa588f84b0 (patch)
treec179ce33532589e79d716b66ce9c18b7b2fce48d
parentc16ddb3985d4b8669d469d1b88db9e3825b2b461 (diff)
Add the ability to exclude keyboards from travis builds (#11178)
* add the ability to exclude keyboards from travis builds * add filtering to make all: * only skip keyboards during make all: * working implementation * forego a CI_KEYBOARDS variable * optimize the startup by only listing keyboards once * add sort -u to all list_keyboard invocations * move the if else if tree back to 1 level
-rw-r--r--Makefile38
-rwxr-xr-xutil/list_keyboards.sh10
2 files changed, 16 insertions, 32 deletions
diff --git a/Makefile b/Makefile
index 5d4ba58c01..48e32ca593 100644
--- a/Makefile
+++ b/Makefile
@@ -99,40 +99,13 @@ $(eval $(call NEXT_PATH_ELEMENT))
# endif
# endif
-define GET_KEYBOARDS
-ifndef ALT_GET_KEYBOARDS
- All_RULES_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/rules.mk))
- All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
- All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/rules.mk))
- All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/rules.mk))
-
- KEYMAPS_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/keymaps/*/rules.mk))
- KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/keymaps/*/rules.mk))
- KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/keymaps/*/rules.mk))
- KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/keymaps/*/rules.mk))
-
- KEYBOARDS := $$(sort $$(filter-out $$(KEYMAPS_MK), $$(All_RULES_MK)))
-else
- KEYBOARDS := $(shell find keyboards/ -type f -iname "rules.mk" | grep -v keymaps | sed 's!keyboards/\(.*\)/rules.mk!\1!' | sort | uniq)
-endif
-endef
-
-$(eval $(call GET_KEYBOARDS))
-
-# Only consider folders with makefiles, to prevent errors in case there are extra folders
-#KEYBOARDS += $(patsubst $(ROOD_DIR)/keyboards/%/rules.mk,%,$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
-
.PHONY: list-keyboards
list-keyboards:
- echo $(KEYBOARDS)
-
-define PRINT_KEYBOARD
- $(info $(PRINTING_KEYBOARD))
-endef
+ util/list_keyboards.sh | sort -u | tr '\n' ' '
.PHONY: generate-keyboards-file
generate-keyboards-file:
- $(foreach PRINTING_KEYBOARD,$(KEYBOARDS),$(eval $(call PRINT_KEYBOARD)))
+ util/list_keyboards.sh | sort -u
.PHONY: clean
clean:
@@ -159,7 +132,6 @@ endif
# $(info Keyboard: $(KEYBOARD))
# $(info Keymap: $(KEYMAP))
# $(info Subproject: $(SUBPROJECT))
-# $(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from
@@ -293,7 +265,9 @@ define PARSE_RULE
$$(eval $$(call PARSE_TEST))
# If the rule starts with the name of a known keyboard, then continue
# the parsing from PARSE_KEYBOARD
- else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true)
+
+ else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true)
+ KEYBOARD_RULE=$$(MATCHED_ITEM)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
# Otherwise use the KEYBOARD variable, which is determined either by
# the current directory you run make from, or passed in as an argument
@@ -406,7 +380,7 @@ endef
# if we are going to compile all keyboards, match the rest of the rule
# for each of them
define PARSE_ALL_KEYBOARDS
- $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS)))
+ $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell util/list_keyboards.sh noci | sort -u)))
endef
# $1 Subproject
diff --git a/util/list_keyboards.sh b/util/list_keyboards.sh
new file mode 100755
index 0000000000..672d4a7843
--- /dev/null
+++ b/util/list_keyboards.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Temporary shell script to find keyboards
+#
+# This allows us to exclude keyboards by including a .noci file.
+
+find keyboards -type f -name rules.mk | grep -v keymaps | while read keyboard; do
+ keyboard=$(echo $keyboard | sed 's!keyboards/\(.*\)/rules.mk!\1!')
+
+ [ "$1" = "noci" -a -e "keyboards/${keyboard}/.noci" ] || echo "$keyboard"
+done