Commit Graph

623 Commits

Author SHA1 Message Date
b7df75e47f Fixup compilation with qmk compile -kb zzz -km all. (#22568) 2023-11-29 13:46:10 +11:00
049e964e61 Attempt to fix configurator. (#22555) 2023-11-28 14:07:21 +00:00
5501e804ff QMK Userspace (#22222)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-28 07:53:43 +11:00
0fcd13f552 [CLI] Remove duplicates from search results (#22528) 2023-11-22 12:08:26 +11:00
46b996a55e CLI parallel search updates (#22525) 2023-11-22 11:14:34 +11:00
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
e279c78ba3 Enable linking of encoders to switch within layout macros (#22264) 2023-11-20 15:41:48 +00:00
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
4938210711 CLI refactoring for common build target APIs (#22221) 2023-11-15 16:24:54 +11:00
d8176fb0f2 Merge remote-tracking branch 'origin/master' into develop 2023-11-11 09:51:03 +00:00
211fbbd16d Add qmk license-check developer-level CLI command. (#22075) 2023-11-11 20:50:33 +11:00
8ea955c72f Improve argument handling of c2json (#22170)
* Improve argument handling of c2json

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

* Autogen weak matrix_mask
2023-10-29 01:09:02 +01:00
e4c54a9612 Support additional split sync items for info.json (#22193) 2023-10-21 01:48:05 +01:00
20cefe254d Merge remote-tracking branch 'origin/master' into develop 2023-10-16 22:44:27 +00:00
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
690792eca9 Merge remote-tracking branch 'origin/master' into develop 2023-10-08 11:45:49 +00:00
7ca652ce6d Flag vial keymaps in 'qmk lint' (#22227) 2023-10-08 12:45:13 +01:00
0ca60eb759 Merge remote-tracking branch 'origin/master' into develop 2023-10-05 23:35:02 +00:00
127560ae22 Add qmk ci-validate-aliases (#22205) 2023-10-06 10:34:23 +11:00
a268437f17 Merge remote-tracking branch 'origin/master' into develop 2023-09-28 20:48:55 +00:00
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
f4677c866e Merge remote-tracking branch 'origin/master' into develop 2023-09-28 10:49:40 +00:00
fb0c64a567 Allow inline generation of compile_commands.json while doing a qmk compile, using --compiledb (#21549) 2023-09-28 11:48:58 +01:00
4e86dca49d Fix parsing/validation for 21939 (#22148) 2023-09-27 03:57:37 +01:00
ac3a1c3569 Merge remote-tracking branch 'origin/master' into develop 2023-09-23 03:08:19 +00:00
73ffa4594d Fix up qmk mass-compile makefile indenting. (#22115) 2023-09-23 13:07:38 +10:00
8ea8b80b85 Merge remote-tracking branch 'origin/master' into develop 2023-09-22 02:12:53 +00:00
abd432fd7a Allow for qmk compile -kb all. (#22022) 2023-09-22 12:12:20 +10:00
24a922b54b Merge remote-tracking branch 'origin/master' into develop 2023-09-14 20:39:17 +00:00
46d679ab11 qmk format-json: Add an in-place mode to format json command (#21610) 2023-09-14 21:38:42 +01:00
de381ad3b7 Generate keymap.json config options more forcefully (#21960) 2023-09-13 01:12:46 +01:00
95681b8ff4 Add *_MATRIX_LED_COUNT generation (#21110) 2023-08-27 04:00:14 +01:00
27ff1d4153 Remove layout aliases from keyboard_aliases.hjson (#21658) 2023-08-01 01:54:28 +01:00
f407d90598 keycode aliases: work around ChibiOS ch.h include guard (#21497) 2023-07-31 09:35:06 +10:00
030511ece3 CLI: Improve error messages when layout key matrix row/col is OOB (#21640) 2023-07-31 09:34:19 +10:00
a0ea7a6b17 feat, docs: WB32 flashing (#21217) 2023-07-08 00:48:45 +10:00
21263438e5 Merge remote-tracking branch 'origin/master' into develop 2023-07-07 14:08:56 +00:00
ef39ecd1b7 Adjust width requirement for big enter (#21470) 2023-07-08 00:08:13 +10:00
8974e056a9 Merge remote-tracking branch 'origin/master' into develop 2023-07-07 12:09:59 +00:00
6bdd8e2782 [Refactor] Python-ify QP's converter code (#20102) 2023-07-07 22:09:17 +10:00
c814be0296 STM32H723 support (#21352) 2023-06-28 13:07:14 +10:00
ffdc70bf0a Consolidate KEYBOARD_OUTPUT+KEYMAP_OUTPUT=>INTERMEDIATE_OUTPUT (#21272) 2023-06-21 08:41:49 +10:00
a9f677b518 Slightly refine g_led_config parsing (#21170) 2023-06-08 21:08:02 +01:00
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