Skip to content

Commit e3ce9f3

Browse files
authored
Merge branch 'qmk:master' into goon_dev
2 parents 8b653a2 + fe50774 commit e3ce9f3

File tree

27,148 files changed

+839820
-1320029
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

27,148 files changed

+839820
-1320029
lines changed

.clangd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
CompileFlags:
22
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
3-
Remove: [-W*, -mcall-prologues]
3+
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues]
44
Compiler: clang

.editorconfig

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,39 @@
44
root = true
55

66
[*]
7+
end_of_line = lf
78
indent_style = space
89
indent_size = 4
9-
10-
# We recommend you to keep these unchanged
1110
charset = utf-8
1211
trim_trailing_whitespace = true
1312
insert_final_newline = true
1413

14+
[{*.yaml,*.yml}] # To match GitHub Actions formatting
15+
indent_size = 2
16+
1517
[*.md]
1618
trim_trailing_whitespace = false
17-
indent_size = 4
18-
19-
[{qmk,*.py}]
20-
charset = utf-8
21-
max_line_length = 200
22-
23-
# Make these match what we have in .gitattributes
24-
[*.mk]
25-
end_of_line = lf
26-
indent_style = tab
2719

28-
[Makefile]
29-
end_of_line = lf
20+
[{Makefile,*.mk}]
3021
indent_style = tab
3122

32-
[*.sh]
33-
end_of_line = lf
34-
35-
# The gitattributes file will handle the line endings conversion properly according to the operating system settings for other files
36-
37-
38-
# We don't have gitattributes properly for these
39-
# So if the user have for example core.autocrlf set to true
40-
# the line endings would be wrong.
23+
# Don't override anything in `lib/`...
4124
[lib/**]
25+
indent_style = unset
26+
indent_size = unset
27+
tab_width = unset
4228
end_of_line = unset
29+
charset = unset
30+
spelling_language = unset
31+
trim_trailing_whitespace = unset
32+
insert_final_newline = unset
33+
34+
# ...except QMK's `lib/python`.
35+
[{*.py,lib/python/**.py}]
36+
end_of_line = lf
37+
indent_style = space
38+
indent_size = 4
39+
charset = utf-8
40+
trim_trailing_whitespace = true
41+
insert_final_newline = true
42+
max_line_length = 200

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: QMK Discord
4-
url: https://discord.gg/Uq7gcHh
4+
url: https://discord.gg/qmk
55
about: Ask questions, discuss issues and features. Chill.
66
- name: OLKB Subreddit
77
url: https://www.reddit.com/r/olkb

.github/labeler.yml

Lines changed: 46 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,56 @@
11
core:
2-
- quantum/**/*
3-
- tmk_core/**/*
4-
- drivers/**/*
5-
- tests/**/*
6-
- util/**/*
7-
- platforms/**/*
8-
- builddefs/**/*
9-
- Makefile
10-
- '*.mk'
2+
- changed-files:
3+
- any-glob-to-any-file:
4+
- quantum/**
5+
- tmk_core/**
6+
- drivers/**
7+
- tests/**
8+
- util/**
9+
- platforms/**
10+
- builddefs/*.mk
11+
- Makefile
12+
- '*.mk'
1113
dependencies:
12-
- any:
13-
- 'lib/**/*'
14-
- '!lib/python/**/*'
14+
- all:
15+
- changed-files:
16+
- any-glob-to-any-file: lib/**
17+
- all-globs-to-all-files: '!lib/python/**'
1518
keyboard:
16-
- any:
17-
- 'keyboards/**/*'
18-
- '!keyboards/**/keymaps/**/*'
19+
- all:
20+
- changed-files:
21+
- any-glob-to-any-file: keyboards/**
22+
- all-globs-to-all-files: '!keyboards/**/keymaps/**'
1923
keymap:
20-
- users/**/*
21-
- layouts/**/*
22-
- keyboards/**/keymaps/**/*
24+
- changed-files:
25+
- any-glob-to-any-file:
26+
- users/**
27+
- layouts/**
28+
- keyboards/**/keymaps/**
2329
via:
24-
- keyboards/**/keymaps/via/*
30+
- changed-files:
31+
- any-glob-to-any-file:
32+
- keyboards/**/keymaps/via/*
2533
cli:
26-
- requirements.txt
27-
- lib/python/**/*
34+
- changed-files:
35+
- any-glob-to-any-file:
36+
- requirements.txt
37+
- lib/python/**
2838
python:
29-
- '**/*.py'
39+
- changed-files:
40+
- any-glob-to-any-file:
41+
- '**/*.py'
3042
documentation:
31-
- docs/**/*
32-
translation:
33-
- docs/fr-fr/**/*
34-
- docs/es/**/*
35-
- docs/ja/**/*
36-
- docs/he-il/**/*
37-
- docs/pt-br/**/*
38-
- docs/zh-cn/**/*
39-
- docs/de/**/*
40-
- docs/ru-ru/**/*
43+
- changed-files:
44+
- any-glob-to-any-file:
45+
- docs/**
46+
- builddefs/docsgen/**
4147
CI:
42-
- .github/**/*
48+
- changed-files:
49+
- any-glob-to-any-file:
50+
- .github/**
4351
dd:
44-
- data/constants/**/*
45-
- data/mappings/**/*
46-
- data/schemas/**/*
52+
- changed-files:
53+
- any-glob-to-any-file:
54+
- data/constants/**
55+
- data/mappings/**
56+
- data/schemas/**

.github/workflows/auto_approve.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ jobs:
1313
if: github.repository == 'qmk/qmk_firmware'
1414

1515
steps:
16-
- uses: mheap/automatic-approve-action@v1
16+
- uses: zvecr/automatic-approve-action@safe_files
1717
with:
1818
token: ${{ secrets.QMK_BOT_TOKEN }}
19-
workflows: "format.yml,lint.yml,unit_test.yml"
20-
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"
19+
workflows: "labeler.yml,lint.yml,docs.yml"
20+
safe_files: "keyboards/,docs/"
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: CI Build Major Branch
2+
3+
permissions:
4+
contents: read
5+
actions: write
6+
7+
on:
8+
push:
9+
branches: [master, develop]
10+
workflow_dispatch:
11+
inputs:
12+
branch:
13+
type: choice
14+
description: "Branch to build"
15+
options: [master, develop]
16+
17+
env:
18+
# https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
19+
# We've decreased it from 20 to 15 to allow for other GHA to run unimpeded
20+
CONCURRENT_JOBS: 15
21+
22+
# Ensure we only have one build running at a time, cancelling any active builds if a new commit is pushed to the respective branch
23+
concurrency:
24+
group: ci_build-${{ github.event.inputs.branch || github.ref_name }}
25+
cancel-in-progress: true
26+
27+
jobs:
28+
determine_concurrency:
29+
name: "Determine concurrency"
30+
if: github.repository == 'qmk/qmk_firmware'
31+
runs-on: ubuntu-latest
32+
container: ghcr.io/qmk/qmk_cli
33+
34+
outputs:
35+
slice_length: ${{ steps.generate_slice_length.outputs.slice_length }}
36+
37+
steps:
38+
- name: Install prerequisites
39+
run: |
40+
apt-get update
41+
apt-get install -y jq
42+
43+
- name: Disable safe.directory check
44+
run: |
45+
git config --global --add safe.directory '*'
46+
47+
- name: Checkout QMK Firmware
48+
uses: actions/checkout@v4
49+
50+
- name: Determine concurrency
51+
id: generate_slice_length
52+
run: |
53+
target_count=$( {
54+
qmk find -km default 2>/dev/null
55+
# qmk find -km xap 2>/dev/null
56+
} | sort | uniq | wc -l)
57+
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution
58+
echo "slice_length=$slice_length" >> $GITHUB_OUTPUT
59+
60+
build_targets:
61+
name: "Compile keymap ${{ matrix.keymap }}"
62+
needs: determine_concurrency
63+
strategy:
64+
fail-fast: false
65+
matrix:
66+
keymap: [default]
67+
# keymap: [default, xap]
68+
uses: ./.github/workflows/ci_build_major_branch_keymap.yml
69+
with:
70+
branch: ${{ inputs.branch || github.ref_name }}
71+
keymap: ${{ matrix.keymap }}
72+
slice_length: ${{ needs.determine_concurrency.outputs.slice_length }}
73+
secrets: inherit
74+
75+
rollup_tasks:
76+
name: "Consolidation"
77+
needs: build_targets
78+
runs-on: ubuntu-latest
79+
80+
steps:
81+
- name: Disable safe.directory check
82+
run: |
83+
git config --global --add safe.directory '*'
84+
85+
- name: Checkout QMK Firmware
86+
uses: actions/checkout@v4
87+
with:
88+
fetch-depth: 0
89+
90+
- name: Download firmwares
91+
uses: actions/download-artifact@v4
92+
with:
93+
pattern: firmware-*
94+
path: .
95+
merge-multiple: true
96+
97+
- name: Generate index page
98+
run: |
99+
python3 -m pip install -r ./util/ci/requirements.txt
100+
./util/ci/index_generator.py > index.html
101+
./util/ci/firmware_list_generator.py > firmware_list.json
102+
103+
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
104+
uses: jakejarvis/s3-sync-action@master
105+
with:
106+
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
107+
env:
108+
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
109+
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
110+
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
111+
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
112+
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
113+
SOURCE_DIR: .
114+
DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}
115+
116+
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
117+
uses: jakejarvis/s3-sync-action@master
118+
with:
119+
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
120+
env:
121+
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
122+
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
123+
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
124+
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
125+
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
126+
SOURCE_DIR: .
127+
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
128+
129+
- name: Check if failure marker file exists
130+
id: check_failure_marker
131+
uses: andstor/file-existence-action@v3
132+
with:
133+
files: ./.failed
134+
135+
- name: Fail build if needed
136+
if: steps.check_failure_marker.outputs.files_exists == 'true'
137+
run: |
138+
# Exit with failure if the compilation stage failed
139+
exit 1

0 commit comments

Comments
 (0)