Skip to content

Commit 76a5a91

Browse files
author
Carlos Cardoso
committed
Merge remote-tracking branch 'upstream/master' into cadusk
* upstream/master: (24 commits) Bump actions/checkout from 4 to 6 (qmk#25829) QMK CLI Environment bootstrapper (qmk#25038) Add Demod LM Rev. 1 (qmk#25793) Add support for Coffee Break Keyboards' Coffeevan (qmk#25805) [Keyboard] Add Keenome Keys' "The Grid v2" (qmk#25813) Bump actions/checkout from 5 to 6 (qmk#25807) [Keyboard] Add Coffee Break Keyboards Acai (qmk#25796) Short term fix for skip_converter KeyError in 'qmk userspace-add' (qmk#25798) Hyper7 v4 (qmk#25728) Add imi60-HS (qmk#25773) Fix detection of hid bootloader flashing tool (qmk#25790) VIA Keylog Change (qmk#25504) [Bugfix] QP error handling (qmk#25591) [Keyboard] Add Rubrehaku (qmk#24907) Fix pmw33xx sensor initialisation (qmk#25777) Add LED index map to `qmk info` cli command (qmk#25743) Bump actions/download-artifact from 5 to 6 (qmk#25746) Bump actions/upload-artifact from 4 to 5 (qmk#25745) Bump JamesIves/github-pages-deploy-action from 4.7.3 to 4.7.4 (qmk#25771) Deprecate LAYOUT() macro in favor of JSON matrix definitions ...
2 parents b7f1515 + 330a859 commit 76a5a91

File tree

165 files changed

+4721
-238
lines changed

Some content is hidden

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

165 files changed

+4721
-238
lines changed

.github/workflows/api.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
if: github.repository == 'qmk/qmk_firmware'
2626

2727
steps:
28-
- uses: actions/checkout@v5
28+
- uses: actions/checkout@v6
2929
with:
3030
fetch-depth: 1
3131
persist-credentials: false

.github/workflows/auto_tag.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
if: github.repository == 'qmk/qmk_firmware'
2929

3030
steps:
31-
- uses: actions/checkout@v5
31+
- uses: actions/checkout@v6
3232
with:
3333
fetch-depth: 0
3434

Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
name: Bootstrap Script Testing
2+
3+
on:
4+
push:
5+
branches: [bootstrap]
6+
paths:
7+
- "util/env-bootstrap.sh"
8+
- ".github/workflows/bootstrap_testing.yml"
9+
- "lib/python/**"
10+
pull_request:
11+
branches: [master, develop, xap]
12+
paths:
13+
- "util/env-bootstrap.sh"
14+
- ".github/workflows/bootstrap_testing.yml"
15+
- "lib/python/**"
16+
workflow_dispatch:
17+
18+
permissions:
19+
contents: read
20+
21+
jobs:
22+
bootstrap-test-linux:
23+
name: Bootstrap (Linux)
24+
runs-on: ubuntu-latest
25+
26+
strategy:
27+
fail-fast: false
28+
matrix:
29+
distribution:
30+
# Ubuntu/Debian based
31+
- debian:11
32+
- debian:12
33+
- debian:13
34+
- ubuntu:20.04
35+
- ubuntu:22.04
36+
- ubuntu:24.04
37+
38+
# RHEL/CentOS/Fedora based
39+
- fedora:41
40+
- fedora:42
41+
- fedora:43
42+
- rockylinux:8
43+
- rockylinux:9
44+
- rockylinux/rockylinux:10
45+
- almalinux:8
46+
- almalinux:9
47+
- almalinux:10
48+
49+
# OpenSUSE based (we skip Tumbleweed as it has issues with package versions between pattern installs and other dependencies preinstalled into the base container)
50+
- opensuse/leap:latest
51+
52+
# Gentoo-based
53+
- gentoo/stage3:latest
54+
55+
# Arch based
56+
- archlinux:latest
57+
- cachyos/cachyos:latest
58+
- manjarolinux/base:latest
59+
60+
container:
61+
image: ${{ matrix.distribution }}
62+
options: --privileged
63+
64+
steps:
65+
- name: Install base dependencies
66+
run: |
67+
# Attempt to run the package installation up to 10 times to mitigate transient network issues
68+
for n in $(seq 1 10); do
69+
{
70+
echo "Attempt #$n of 10 to install base dependencies:"
71+
case "${{ matrix.distribution }}" in
72+
*ubuntu*|*debian*)
73+
apt-get update
74+
apt-get install -y sudo git passwd
75+
;;
76+
*fedora*|*rockylinux*|*almalinux*)
77+
dnf install -y sudo git passwd findutils # findutils=xargs
78+
;;
79+
*suse*)
80+
zypper --non-interactive refresh
81+
zypper --non-interactive install sudo git shadow findutils # findutils=xargs
82+
;;
83+
*gentoo*)
84+
emerge-webrsync
85+
emerge --noreplace --ask=n sudo dev-vcs/git shadow findutils # findutils=xargs
86+
;;
87+
*archlinux*|*cachyos*|*manjaro*)
88+
pacman -Syu --noconfirm
89+
pacman -S --noconfirm sudo git
90+
;;
91+
esac
92+
} && break || sleep 10
93+
done
94+
95+
# Fix PAM configuration for sudo in containers
96+
# Fix /etc/shadow permissions - common issue in container environments
97+
chmod 640 /etc/shadow || chmod 400 /etc/shadow || true
98+
99+
# Disable problematic PAM modules that commonly fail in RHEL-like containers
100+
sed -i 's/^session.*pam_systemd.so/#&/' /etc/pam.d/sudo || true
101+
sed -i 's/^session.*pam_loginuid.so/#&/' /etc/pam.d/sudo || true
102+
103+
# Ensure proper sudoers configuration
104+
echo 'Defaults !requiretty' >> /etc/sudoers
105+
echo 'Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' >> /etc/sudoers
106+
107+
- name: Checkout repository
108+
uses: actions/checkout@v6
109+
with:
110+
fetch-depth: 1
111+
submodules: recursive
112+
path: qmk_firmware
113+
114+
- name: Create test user
115+
run: |
116+
# Create a test user for the bootstrap script
117+
useradd -m -s /bin/bash -U testuser
118+
echo 'testuser:testpassword' | chpasswd || true
119+
120+
# Configure passwordless sudo
121+
echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # some distros complain about root not being in sudoers
122+
echo "testuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
123+
124+
# Test sudo functionality
125+
sudo -u testuser whoami || echo "Sudo test failed, but continuing..."
126+
127+
- name: Move QMK repository to test user home
128+
run: |
129+
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
130+
git -C qmk_firmware remote add upstream https://github.com/qmk/qmk_firmware.git
131+
# Move the QMK repository to the test user's home directory
132+
mv qmk_firmware /home/testuser/qmk_firmware
133+
chown -R testuser:testuser /home/testuser/qmk_firmware
134+
135+
- name: Run bootstrap script
136+
env:
137+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138+
run: |
139+
# Ensure the bootstrap script can access sudo
140+
sudo -u testuser --preserve-env=GITHUB_TOKEN bash -c "
141+
export CONFIRM=1
142+
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
143+
cd /home/testuser
144+
bash /home/testuser/qmk_firmware/util/env-bootstrap.sh
145+
"
146+
147+
- name: Test QMK CLI
148+
run: |
149+
sudo -u testuser bash -c "
150+
export PATH=/home/testuser/.local/bin:\$PATH
151+
cd /home/testuser
152+
qmk setup -y -H /home/testuser/qmk_firmware # setup implies doctor, no need to run it separately
153+
cd /home/testuser/qmk_firmware
154+
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset -p || touch .failed # Compile a bunch of different platforms
155+
"
156+
157+
cd /home/testuser/qmk_firmware
158+
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
159+
[ ! -e .failed ] || exit 1
160+
161+
bootstrap-test-macos:
162+
name: Bootstrap (macOS)
163+
strategy:
164+
fail-fast: false
165+
matrix:
166+
os:
167+
- macos-13 # Intel x64
168+
- macos-14 # Apple Silicon ARM64
169+
- macos-15 # Apple Silicon ARM64
170+
- macos-15-intel # Intel x64
171+
- macos-26 # Apple Silicon ARM64
172+
173+
runs-on: ${{ matrix.os }}
174+
175+
steps:
176+
- name: Checkout repository
177+
uses: actions/checkout@v6
178+
with:
179+
fetch-depth: 1
180+
submodules: recursive
181+
182+
- name: Run bootstrap script
183+
env:
184+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
185+
run: |
186+
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
187+
git remote add upstream https://github.com/qmk/qmk_firmware.git
188+
# Run the bootstrap script
189+
export CONFIRM=1
190+
sh ./util/env-bootstrap.sh
191+
192+
- name: Test QMK CLI
193+
run: |
194+
# Add QMK CLI to PATH (bootstrap script installs it to ~/.local/bin on macOS)
195+
export PATH="$HOME/.local/bin:$PATH"
196+
qmk setup -y -H . # setup implies doctor, no need to run it separately
197+
qmk mass-compile -j $(sysctl -n hw.ncpu) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
198+
199+
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
200+
[ ! -e .failed ] || exit 1
201+
202+
bootstrap-test-windows:
203+
name: Bootstrap (Windows)
204+
205+
strategy:
206+
fail-fast: false
207+
matrix:
208+
msys-variant:
209+
- mingw64
210+
- clang64
211+
- ucrt64
212+
213+
runs-on: windows-latest
214+
defaults:
215+
run:
216+
shell: msys2 {0}
217+
218+
steps:
219+
- name: Install MSYS2
220+
uses: msys2/setup-msys2@v2
221+
with:
222+
msystem: ${{ matrix.msys-variant }}
223+
pacboy: >-
224+
git:
225+
226+
- name: Checkout repository
227+
uses: actions/checkout@v6
228+
with:
229+
fetch-depth: 1
230+
submodules: recursive
231+
232+
- name: Run bootstrap script
233+
env:
234+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
235+
run: |
236+
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
237+
git remote add upstream https://github.com/qmk/qmk_firmware.git
238+
# Run the bootstrap script
239+
export CONFIRM=1
240+
sh ./util/env-bootstrap.sh
241+
242+
- name: Test QMK CLI
243+
run: |
244+
# Add QMK CLI to PATH (bootstrap script installs it to /opt/uv/tools/bin on Windows MSYS2)
245+
export PATH="/opt/uv/tools/bin:$PATH"
246+
qmk setup -y -H . # setup implies doctor, no need to run it separately
247+
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
248+
249+
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
250+
[ ! -e .failed ] || exit 1
251+

.github/workflows/ci_build_major_branch.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
git config --global --add safe.directory '*'
4646
4747
- name: Checkout QMK Firmware
48-
uses: actions/checkout@v5
48+
uses: actions/checkout@v6
4949

5050
- name: Determine concurrency
5151
id: generate_slice_length
@@ -82,12 +82,12 @@ jobs:
8282
git config --global --add safe.directory '*'
8383
8484
- name: Checkout QMK Firmware
85-
uses: actions/checkout@v5
85+
uses: actions/checkout@v6
8686
with:
8787
fetch-depth: 0
8888

8989
- name: Download firmwares
90-
uses: actions/download-artifact@v5
90+
uses: actions/download-artifact@v6
9191
with:
9292
pattern: firmware-*
9393
path: .

.github/workflows/ci_build_major_branch_keymap.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
git config --global --add safe.directory '*'
3838
3939
- name: Checkout QMK Firmware
40-
uses: actions/checkout@v5
40+
uses: actions/checkout@v6
4141

4242
- name: Generate build targets
4343
id: generate_targets
@@ -62,7 +62,7 @@ jobs:
6262
echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT
6363
6464
- name: Upload targets json
65-
uses: actions/upload-artifact@v4
65+
uses: actions/upload-artifact@v5
6666
with:
6767
name: targets-${{ inputs.keymap }}
6868
path: targets.json
@@ -89,10 +89,10 @@ jobs:
8989
git config --global --add safe.directory '*'
9090
9191
- name: Checkout QMK Firmware
92-
uses: actions/checkout@v5
92+
uses: actions/checkout@v6
9393

9494
- name: Get target definitions
95-
uses: actions/download-artifact@v5
95+
uses: actions/download-artifact@v6
9696
with:
9797
name: targets-${{ inputs.keymap }}
9898
path: .
@@ -112,7 +112,7 @@ jobs:
112112
qmk mass-compile -t -j $NCPUS -e DUMP_CI_METADATA=yes $(jq -r '.["${{ matrix.target }}"].targets' targets.json) || touch .failed
113113
114114
- name: Upload binaries
115-
uses: actions/upload-artifact@v4
115+
uses: actions/upload-artifact@v5
116116
with:
117117
name: firmware-${{ inputs.keymap }}-${{ matrix.target }}
118118
if-no-files-found: ignore
@@ -136,17 +136,17 @@ jobs:
136136

137137
steps:
138138
- name: Checkout QMK Firmware
139-
uses: actions/checkout@v5
139+
uses: actions/checkout@v6
140140

141141
- name: Download firmwares
142-
uses: actions/download-artifact@v5
142+
uses: actions/download-artifact@v6
143143
with:
144144
pattern: firmware-${{ inputs.keymap }}-*
145145
path: .
146146
merge-multiple: true
147147

148148
- name: Upload all firmwares
149-
uses: actions/upload-artifact@v4
149+
uses: actions/upload-artifact@v5
150150
with:
151151
name: firmware-${{ inputs.keymap }}
152152
if-no-files-found: ignore

.github/workflows/cli.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Disable safe.directory check
2525
run : git config --global --add safe.directory '*'
2626

27-
- uses: actions/checkout@v5
27+
- uses: actions/checkout@v6
2828
with:
2929
submodules: recursive
3030

.github/workflows/develop_update.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
if: github.repository == 'qmk/qmk_firmware'
1616

1717
steps:
18-
- uses: actions/checkout@v5
18+
- uses: actions/checkout@v6
1919
with:
2020
token: ${{ secrets.QMK_BOT_TOKEN }}
2121
fetch-depth: 0

.github/workflows/docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
container: ghcr.io/qmk/qmk_cli
3131

3232
steps:
33-
- uses: actions/checkout@v5
33+
- uses: actions/checkout@v6
3434
with:
3535
fetch-depth: 1
3636

@@ -56,7 +56,7 @@ jobs:
5656
5757
- name: Deploy
5858
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
59-
uses: JamesIves/[email protected].3
59+
uses: JamesIves/[email protected].4
6060
with:
6161
token: ${{ secrets.GITHUB_TOKEN }}
6262
branch: gh-pages

.github/workflows/feature_branch_update.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- riot
2222

2323
steps:
24-
- uses: actions/checkout@v5
24+
- uses: actions/checkout@v6
2525
with:
2626
token: ${{ secrets.QMK_BOT_TOKEN }}
2727
fetch-depth: 0

0 commit comments

Comments
 (0)