Repository navigation
77 lines (67 loc) · 2.43 KB
/
Copy pathqemu-linux-runtime.yml
File metadata and controls
77 lines (67 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
name: QEMU Linux Runtime
# Proves fbuild can start Espressif QEMU on a stock Linux runner without any
# host library installation. `ubuntu-latest` (24.04) ships none of libslirp,
# libSDL2 or libpixman, which the Espressif QEMU binaries link against — so
# this job is red unless fbuild provisions them itself.
#
# There is deliberately NO apt-get step here. Adding one would make the job
# pass for the wrong reason.
on:
workflow_dispatch: {}
workflow_call:
inputs:
ref:
type: string
required: false
default: ""
# Auto-cancel superseded PR runs: pushing again to a feature branch
# supersedes the in-flight run instead of queueing behind it. Non-PR
# events key on run_id so each gets its own group -- a shared group keeps
# only ONE pending run, which would silently drop queued main SHAs.
concurrency:
group: qemu-linux-runtime.yml-${{ github.event_name == 'pull_request' && github.ref || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
jobs:
qemu_runtime:
name: QEMU starts with no host libraries (ubuntu-latest)
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
ref: ${{ inputs.ref }}
- name: Confirm the runner really is missing the libraries
# Documents the premise of the test. Informational: a future runner
# image that ships them makes the test exercise the host path, which
# is still a valid pass.
run: |
for lib in libslirp.so.0 libSDL2-2.0.so.0 libpixman-1.so.0; do
if ldconfig -p | grep -q "$lib"; then
echo "present: $lib"
else
echo "absent: $lib <- fbuild must provision this"
fi
done
- uses: astral-sh/setup-uv@v3
- name: Setup soldr
uses: zackees/setup-soldr@v0
with:
cache-key-suffix: qemu-linux-runtime-qemu_runtime
cache: true
build-cache: true
target-cache: true
prebuild-deps: none
linker: platform-default
- name: QEMU runtime provisioning test
run: |
soldr cargo test -p fbuild-packages --test it -- qemu_linux_runtime:: \
--ignored --nocapture