From ffdc70bf0a6fecff024ece2a5b7b4c0c88dd6ee3 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 21 Jun 2023 08:41:49 +1000 Subject: Consolidate `KEYBOARD_OUTPUT`+`KEYMAP_OUTPUT`=>`INTERMEDIATE_OUTPUT` (#21272) --- lib/python/qmk/cli/mass_compile.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'lib/python/qmk/cli') diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 52c1cae4c2..ddd946a32b 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -53,20 +53,22 @@ def mass_compile(cli): keyboard_name = target[0] keymap_name = target[1] keyboard_safe = keyboard_name.replace('/', '_') + build_log = f"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" + failed_log = f"{QMK_FIRMWARE}/.build/failed.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" # yapf: disable f.write( f"""\ all: {keyboard_safe}_{keymap_name}_binary {keyboard_safe}_{keymap_name}_binary: - @rm -f "{QMK_FIRMWARE}/.build/failed.log.{keyboard_safe}.{keymap_name}" || true - @echo "Compiling QMK Firmware for target: '{keyboard_name}:{keymap_name}'..." >>"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}" + @rm -f "{build_log}" || true + @echo "Compiling QMK Firmware for target: '{keyboard_name}:{keymap_name}'..." >>"{build_log}" +@$(MAKE) -C "{QMK_FIRMWARE}" -f "{QMK_FIRMWARE}/builddefs/build_keyboard.mk" KEYBOARD="{keyboard_name}" KEYMAP="{keymap_name}" COLOR=true SILENT=false {' '.join(cli.args.env)} \\ - >>"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" 2>&1 \\ - || cp "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" "{QMK_FIRMWARE}/.build/failed.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" - @{{ grep '\[ERRORS\]' "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" >/dev/null 2>&1 && printf "Build %-64s \e[1;31m[ERRORS]\e[0m\\n" "{keyboard_name}:{keymap_name}" ; }} \\ - || {{ grep '\[WARNINGS\]' "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" >/dev/null 2>&1 && printf "Build %-64s \e[1;33m[WARNINGS]\e[0m\\n" "{keyboard_name}:{keymap_name}" ; }} \\ + >>"{build_log}" 2>&1 \\ + || cp "{build_log}" "{failed_log}" + @{{ grep '\[ERRORS\]' "{build_log}" >/dev/null 2>&1 && printf "Build %-64s \e[1;31m[ERRORS]\e[0m\\n" "{keyboard_name}:{keymap_name}" ; }} \\ + || {{ grep '\[WARNINGS\]' "{build_log}" >/dev/null 2>&1 && printf "Build %-64s \e[1;33m[WARNINGS]\e[0m\\n" "{keyboard_name}:{keymap_name}" ; }} \\ || printf "Build %-64s \e[1;32m[OK]\e[0m\\n" "{keyboard_name}:{keymap_name}" - @rm -f "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}" || true + @rm -f "{build_log}" || true """# noqa ) # yapf: enable @@ -77,7 +79,6 @@ all: {keyboard_safe}_{keymap_name}_binary f"""\ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.elf" 2>/dev/null || true @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{keymap_name}.map" 2>/dev/null || true - @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}" || true @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}_{keymap_name}" || true """# noqa ) -- cgit v1.2.3 From 030511ece33bfe08307ce519219fde9ab3077cff Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 31 Jul 2023 09:34:19 +1000 Subject: CLI: Improve error messages when layout key matrix row/col is OOB (#21640) --- lib/python/qmk/cli/generate/keyboard_h.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'lib/python/qmk/cli') diff --git a/lib/python/qmk/cli/generate/keyboard_h.py b/lib/python/qmk/cli/generate/keyboard_h.py index fa4036e39a..b9e89032b9 100755 --- a/lib/python/qmk/cli/generate/keyboard_h.py +++ b/lib/python/qmk/cli/generate/keyboard_h.py @@ -37,14 +37,19 @@ def _generate_layouts(keyboard, kb_info_json): row, col = key_data['matrix'] identifier = f'k{ROW_LETTERS[row]}{COL_LETTERS[col]}' - try: - layout_matrix[row][col] = identifier - layout_keys.append(identifier) - except IndexError: + if row >= row_num or col >= col_num: key_name = key_data.get('label', identifier) - cli.log.error(f'{keyboard}/{layout_name}: Matrix data out of bounds at index {index} ({key_name}): [{row}, {col}]') + if row >= row_num: + cli.log.error(f'{keyboard}/{layout_name}: Matrix row for key {index} ({key_name}) is {row} but must be less than {row_num}') + + if col >= col_num: + cli.log.error(f'{keyboard}/{layout_name}: Matrix column for key {index} ({key_name}) is {col} but must be less than {col_num}') + return [] + layout_matrix[row][col] = identifier + layout_keys.append(identifier) + lines.append('') lines.append(f'#define {layout_name}({", ".join(layout_keys)}) {{ \\') -- cgit v1.2.3 From f407d9059878087bdc458479247d908c88f8d89d Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 31 Jul 2023 09:35:06 +1000 Subject: keycode aliases: work around ChibiOS ch.h include guard (#21497) --- lib/python/qmk/cli/generate/keycodes.py | 5 +++++ quantum/keymap_extras/keymap_swiss_de.h | 2 ++ quantum/keymap_extras/keymap_swiss_fr.h | 2 ++ 3 files changed, 9 insertions(+) (limited to 'lib/python/qmk/cli') diff --git a/lib/python/qmk/cli/generate/keycodes.py b/lib/python/qmk/cli/generate/keycodes.py index 3b69b17ed1..ed8b6827bd 100644 --- a/lib/python/qmk/cli/generate/keycodes.py +++ b/lib/python/qmk/cli/generate/keycodes.py @@ -96,6 +96,11 @@ def _generate_helpers(lines, keycodes): def _generate_aliases(lines, keycodes): + # Work around ChibiOS ch.h include guard + if 'CH_H' in [value['key'] for value in keycodes['aliases'].values()]: + lines.append('') + lines.append('#undef CH_H') + lines.append('') lines.append('// Aliases') for key, value in keycodes["aliases"].items(): diff --git a/quantum/keymap_extras/keymap_swiss_de.h b/quantum/keymap_extras/keymap_swiss_de.h index 69bba7293e..c22191dd4e 100644 --- a/quantum/keymap_extras/keymap_swiss_de.h +++ b/quantum/keymap_extras/keymap_swiss_de.h @@ -27,6 +27,8 @@ #include "keycodes.h" // clang-format off +#undef CH_H + // Aliases #define CH_SECT KC_GRV // § #define CH_1 KC_1 // 1 diff --git a/quantum/keymap_extras/keymap_swiss_fr.h b/quantum/keymap_extras/keymap_swiss_fr.h index 1e2f833db1..e0e8e52c9c 100644 --- a/quantum/keymap_extras/keymap_swiss_fr.h +++ b/quantum/keymap_extras/keymap_swiss_fr.h @@ -27,6 +27,8 @@ #include "keycodes.h" // clang-format off +#undef CH_H + // Aliases #define CH_SECT KC_GRV // § #define CH_1 KC_1 // 1 -- cgit v1.2.3 From 95681b8ff4a92aacd0249e124d34cf16e510175e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 27 Aug 2023 04:00:14 +0100 Subject: Add *_MATRIX_LED_COUNT generation (#21110) --- data/mappings/info_config.hjson | 2 ++ lib/python/qmk/cli/info.py | 4 ++++ lib/python/qmk/info.py | 3 +++ 3 files changed, 9 insertions(+) (limited to 'lib/python/qmk/cli') diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index cc1787b8c2..ab9a4a0e45 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -69,6 +69,7 @@ "LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"}, "LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"}, "LED_MATRIX_VAL_STEP": {"info_key": "led_matrix.val_steps", "value_type": "int"}, + "LED_MATRIX_LED_COUNT": {"info_key": "led_matrix.led_count", "value_type": "int", "to_json": false}, // LUFA Bootloader "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, @@ -107,6 +108,7 @@ "RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"}, "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"}, "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"}, + "RGB_MATRIX_LED_COUNT": {"info_key": "rgb_matrix.led_count", "value_type": "int", "to_json": false}, // RGBLight "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"}, diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 02cc6051ec..e662407474 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -38,6 +38,10 @@ def _strip_api_content(info_json): if 'matrix_pins' in info_json: info_json.pop('matrix_size', None) + for feature in ['rgb_matrix', 'led_matrix']: + if info_json.get(feature, {}).get("layout", None): + info_json[feature].pop('led_count', None) + return info_json diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index dbd26153d8..9c8521a2a3 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -706,6 +706,9 @@ def _extract_led_config(info_data, keyboard): except Exception as e: _log_warning(info_data, f'led_config: {file.name}: {e}') + if info_data[feature].get("layout", None) and not info_data[feature].get("led_count", None): + info_data[feature]["led_count"] = len(info_data[feature]["layout"]) + return info_data -- cgit v1.2.3