Commit Graph

614 Commits (36ad597e15a7d918545146f76795dbc0c3c376c5)

Author SHA1 Message Date
Nick Brassel b7df75e47f
Fixup compilation with `qmk compile -kb zzz -km all`. (#22568) 2023-11-29 13:46:10 +11:00
Nick Brassel 049e964e61
Attempt to fix configurator. (#22555) 2023-11-28 14:07:21 +00:00
Nick Brassel 5501e804ff
QMK Userspace (#22222)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-28 07:53:43 +11:00
Nick Brassel 0fcd13f552
[CLI] Remove duplicates from search results (#22528) 2023-11-22 12:08:26 +11:00
Nick Brassel 46b996a55e
CLI parallel search updates (#22525) 2023-11-22 11:14:34 +11:00
Sergey Vlasov 7e27d72cbc
Fix `qmk find` failure due to circular imports (#22523)
There was an import cycle in the Python modules:

  - `qmk.build_targets` imported `qmk.cli.generate.compilation_database`;
  - importing `qmk.cli.generate.compilation_database` requires
    initializing `qmk.cli` first;
  - the initialization of `qmk.cli` imported the modules for all CLI
    commands;
  - `qmk.cli.compile` imported `qmk.build_targets`.

This cycle did not matter in most cases, because `qmk.cli` was imported
first, and in that case importing `qmk.cli.generate.compilation_database`
did not trigger the initialization of `qmk.cli` again.  However, there was
one corner case when `qmk.bulld_targets` was getting imported first:

  - The `qmk find` command uses the `multiprocessing` module.
  - The `multiprocessing` module uses the `spawn` start method on macOS
    and Windows.
  - When the `spawn` method is used, the child processes initialize
    without any Python modules loaded, and the required modules are loaded
    on demand by the `pickle` module when receiving the serialized objects
    from the main process.

The result was that the `qmk find` command did not work properly on macOS
(and probably Windows too); it reported exceptions like this:

    ImportError: cannot import name 'KeyboardKeymapBuildTarget' from partially initialized module 'qmk.build_targets' (most likely due to a circular import)

Moving the offending `qmk.cli.generate.compilation_database` import into
the method which actually uses it fixes the problem.
2023-11-21 15:05:29 +00:00
Joel Challis e279c78ba3
Enable linking of encoders to switch within layout macros (#22264) 2023-11-20 15:41:48 +00:00
Sergey Vlasov 62cca5c43a
`qmk find`: Fix failure with multiple filters (#22497)
When multiple `-f FILTER` options were specified, `qmk find` did not
return anything at all instead of printing the list of entries that
matched all of the specified filters.

The problem was that the statement in `_filter_keymap_targets()` that
filled `targets` had a wrong indent and therefore was executed for every
filter instead of only once after applying all filters, and
`valid_keymaps` was actually an iterator and therefore could be used
only once.  Moving the statement outside of the loop fixes the problem.
2023-11-19 08:26:00 +11:00
Nick Brassel 4938210711
CLI refactoring for common build target APIs (#22221) 2023-11-15 16:24:54 +11:00
QMK Bot d8176fb0f2 Merge remote-tracking branch 'origin/master' into develop 2023-11-11 09:51:03 +00:00
Nick Brassel 211fbbd16d
Add `qmk license-check` developer-level CLI command. (#22075) 2023-11-11 20:50:33 +11:00
Joel Challis 8ea955c72f
Improve argument handling of c2json (#22170)
* Improve argument handling of c2json

* Add automagic
2023-11-01 22:37:05 +00:00
Joel Challis b31426252e
Generate switch statement helpers for keycode ranges (#20059) 2023-11-01 13:11:42 +11:00
Joel Challis fbbb221a31
Implement data driven lighting defaults (#21825) 2023-11-01 01:26:24 +00:00
Joel Challis a19ae3d784
Add dd mapping for hardware based split handedness (#22369) 2023-11-01 00:55:48 +00:00
Joel Challis 17c3182b1c
Remove use of broken split.main (#22363) 2023-10-30 00:49:56 +00:00
Joel Challis 559450a099
Fix 'to_c' for config.h mappings (#22364) 2023-10-29 23:41:44 +00:00
Joel Challis 98530cad3b
Implement data driven dip switches (#22017)
* Add data driven dip switches

* Autogen weak matrix_mask
2023-10-29 01:09:02 +01:00
Joel Challis e4c54a9612
Support additional split sync items for info.json (#22193) 2023-10-21 01:48:05 +01:00
QMK Bot 20cefe254d Merge remote-tracking branch 'origin/master' into develop 2023-10-16 22:44:27 +00:00
Nick Brassel f6c70c40af
Allow for disabling of parallel processing of qmk find and `qmk mass-compile`. (#22160)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-17 09:43:50 +11:00
QMK Bot 690792eca9 Merge remote-tracking branch 'origin/master' into develop 2023-10-08 11:45:49 +00:00
Joel Challis 7ca652ce6d
Flag vial keymaps in 'qmk lint' (#22227) 2023-10-08 12:45:13 +01:00
QMK Bot 0ca60eb759 Merge remote-tracking branch 'origin/master' into develop 2023-10-05 23:35:02 +00:00
Nick Brassel 127560ae22
Add `qmk ci-validate-aliases` (#22205) 2023-10-06 10:34:23 +11:00
QMK Bot a268437f17 Merge remote-tracking branch 'origin/master' into develop 2023-09-28 20:48:55 +00:00
Nick Brassel c5706ef791
Allow for `qmk mass-compile all:<keymap>` (#22116)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-09-29 06:48:20 +10:00
QMK Bot f4677c866e Merge remote-tracking branch 'origin/master' into develop 2023-09-28 10:49:40 +00:00
Nick Brassel fb0c64a567
Allow inline generation of compile_commands.json while doing a `qmk compile`, using `--compiledb` (#21549) 2023-09-28 11:48:58 +01:00
Joel Challis 4e86dca49d
Fix parsing/validation for 21939 (#22148) 2023-09-27 03:57:37 +01:00
QMK Bot ac3a1c3569 Merge remote-tracking branch 'origin/master' into develop 2023-09-23 03:08:19 +00:00
Nick Brassel 73ffa4594d
Fix up `qmk mass-compile` makefile indenting. (#22115) 2023-09-23 13:07:38 +10:00
QMK Bot 8ea8b80b85 Merge remote-tracking branch 'origin/master' into develop 2023-09-22 02:12:53 +00:00
Nick Brassel abd432fd7a
Allow for `qmk compile -kb all`. (#22022) 2023-09-22 12:12:20 +10:00
QMK Bot 24a922b54b Merge remote-tracking branch 'origin/master' into develop 2023-09-14 20:39:17 +00:00
Andrew Kannan 46d679ab11
`qmk format-json`: Add an in-place mode to format json command (#21610) 2023-09-14 21:38:42 +01:00
Joel Challis de381ad3b7
Generate keymap.json config options more forcefully (#21960) 2023-09-13 01:12:46 +01:00
Joel Challis 95681b8ff4
Add *_MATRIX_LED_COUNT generation (#21110) 2023-08-27 04:00:14 +01:00
Joel Challis 27ff1d4153
Remove layout aliases from keyboard_aliases.hjson (#21658) 2023-08-01 01:54:28 +01:00
Ryan f407d90598
keycode aliases: work around ChibiOS ch.h include guard (#21497) 2023-07-31 09:35:06 +10:00
Ryan 030511ece3
CLI: Improve error messages when layout key matrix row/col is OOB (#21640) 2023-07-31 09:34:19 +10:00
Less/Rikki a0ea7a6b17
feat, docs: WB32 flashing (#21217) 2023-07-08 00:48:45 +10:00
QMK Bot 21263438e5 Merge remote-tracking branch 'origin/master' into develop 2023-07-07 14:08:56 +00:00
Ryan ef39ecd1b7
Adjust width requirement for big enter (#21470) 2023-07-08 00:08:13 +10:00
QMK Bot 8974e056a9 Merge remote-tracking branch 'origin/master' into develop 2023-07-07 12:09:59 +00:00
Pablo Martínez 6bdd8e2782
[Refactor] Python-ify QP's converter code (#20102) 2023-07-07 22:09:17 +10:00
Nick Brassel c814be0296
STM32H723 support (#21352) 2023-06-28 13:07:14 +10:00
Nick Brassel ffdc70bf0a
Consolidate `KEYBOARD_OUTPUT`+`KEYMAP_OUTPUT`=>`INTERMEDIATE_OUTPUT` (#21272) 2023-06-21 08:41:49 +10:00
Ryan a9f677b518
Slightly refine `g_led_config` parsing (#21170) 2023-06-08 21:08:02 +01:00
Sergey Vlasov 1411c79aef
`qmk find`: Fix handling of functions in filters (#21090)
Functions in filters did not work properly except when used in the last
(or only) filter.  The problem was caused by the peculiarity of the
`lambda` behavior in Python — any variables from the outer scope are
captured only by reference, therefore any subsequent reassignment of
those variables is propagated to all lambdas created earlier in the same
scope.  Together with the laziness of `filter()` (it returns an iterator
which performs filtering on demand) this resulted in all function
filters using the values of the `key` and `value` variables which
correspond to the last filter in the sequence, therefore the result of
filtering was wrong if some filter with a function was not the last one
in the sequence.

Apparently the shortest way to make a Python lambda capture some
variables by value is to add arguments with default values for such
variables (default values are evaluated when the lambda is created, and
any subsequent reassignments in the outer scope no longer changes them).
This makes filters with functions work properly even when such filters
are not at the last position in the sequence.
2023-05-30 19:24:19 +01:00