-
Notifications
You must be signed in to change notification settings - Fork 95
148 lines (127 loc) · 5.61 KB
/
Copy pathlinux-arm64.yml
File metadata and controls
148 lines (127 loc) · 5.61 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Build LVGL MicroPython on Linux for arm64
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
schedule:
- cron: '0 8 * * 1' # Monday morning — bitrot check for arm64
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-24.04-arm
timeout-minutes: 120
outputs:
os-version: ${{ steps.version.outputs.OS_VERSION }}
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_COMPILERCHECK: content
CCACHE_NOHASHDIR: true
steps:
- name: Checkout repository with submodules
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: recursive
- name: Install and cache APT dependencies
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: >-
build-essential libffi-dev pkg-config cmake ninja-build ccache
gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev
libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev
libxcursor-dev libxfixes-dev libxi-dev libxss-dev
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev
libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev
libudev-dev fcitx-libs-dev libpipewire-0.3-dev libwayland-dev
libdecor-0-dev libv4l-dev
version: apt-v2-ubuntu-24.04-${{ runner.arch }}
execute_install_scripts: true
- name: Restore compiler cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .ccache
key: ccache-v1-${{ runner.os }}-${{ runner.arch }}-linux-arm64-${{ github.sha }}
restore-keys: |
ccache-v1-${{ runner.os }}-${{ runner.arch }}-linux-arm64-
- name: Configure compiler cache
run: |
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
ccache --max-size 1G
ccache --zero-stats
- name: Extract OS version
id: version
run: |
OS_VERSION=$(grep "release = " internal_filesystem/lib/mpos/build_info.py | cut -d "=" -f 2 | cut -d "#" -f 1 | tr -d " " | tr -d '"')
echo "OS_VERSION=$OS_VERSION" >> $GITHUB_OUTPUT
echo "Extracted version: $OS_VERSION"
- name: Build LVGL MicroPython for unix
run: |
./scripts/build_mpos.sh unix
cp lvgl_micropython/build/lvgl_micropy_unix lvgl_micropython/build/MicroPythonOS_arm64_linux_${{ steps.version.outputs.OS_VERSION }}.elf
- name: Upload built binary as artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: MicroPythonOS_arm64_linux_${{ steps.version.outputs.OS_VERSION }}.elf
path: lvgl_micropython/build/MicroPythonOS_arm64_linux_${{ steps.version.outputs.OS_VERSION }}.elf
retention-days: 7
- name: Run syntax tests
run: |
./tests/syntax.sh
- name: Show compiler cache statistics
if: always()
run: ccache --show-stats
test:
needs: build
runs-on: ubuntu-24.04-arm
timeout-minutes: 180
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install and cache APT dependencies
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: >-
build-essential libffi-dev pkg-config cmake ninja-build ccache
gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev
libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev
libxcursor-dev libxfixes-dev libxi-dev libxss-dev
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev
libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev
libudev-dev fcitx-libs-dev libpipewire-0.3-dev libwayland-dev
libdecor-0-dev libv4l-dev
version: apt-v2-ubuntu-24.04-${{ runner.arch }}
execute_install_scripts: true
- name: Download built binary
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: MicroPythonOS_arm64_linux_${{ needs.build.outputs.os-version }}.elf
- name: Install binary to expected path
run: |
mkdir -p lvgl_micropython/build
BIN=$(find . -name "MicroPythonOS_arm64_linux_*.elf" | head -1)
cp "$BIN" lvgl_micropython/build/lvgl_micropy_unix
chmod +x lvgl_micropython/build/lvgl_micropy_unix
- name: Disable native/viper decorators
run: |
find -L internal_filesystem -name '*.py' -type f -print0 | while IFS= read -r -d '' f; do
if [ -L "$f" ]; then continue; fi
sed -i.bak -E 's/^([[:space:]]*)(@micropython\.(native|viper)[[:space:]]*)$/\1#\2/' "$f"
done
find -L internal_filesystem -name '*.py.bak' -type f -exec rm -f {} +
- name: Run unit tests
run: |
./scripts/test_runner.py
- name: Restore native/viper decorators
if: always()
run: |
find -L internal_filesystem -name '*.py' -type f -print0 | while IFS= read -r -d '' f; do
if [ -L "$f" ]; then continue; fi
sed -i.bak -E 's/^([[:space:]]*)#(@micropython\.(native|viper)[[:space:]]*)$/\1\2/' "$f"
done
find -L internal_filesystem -name '*.py.bak' -type f -exec rm -f {} +