-
-
Notifications
You must be signed in to change notification settings - Fork 19
332 lines (306 loc) · 10.3 KB
/
build.yaml
File metadata and controls
332 lines (306 loc) · 10.3 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
name: Build modules
on: [push, pull_request]
jobs:
build-linux:
runs-on: ubuntu-24.04
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install OS dependencies
run: sudo add-apt-repository universe
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: micropython/micropython
path: micropython
ref: v1.27.0
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython X86
working-directory: micropython
run: |
source tools/ci.sh && ci_unix_32bit_setup && ci_unix_standard_build
mv ./ports/unix/build-standard/ ./ports/unix/build-nomodules/
- name: Build custom firmware with user modules, and tests. Unix/x64
run: |
make check_unix V=1
mkdir -p ./dist/ports/linux
mv ./dist/ports/unix/micropython ./dist/ports/linux/micropython
- name: Build .mpy modules and run tests Unix/x64
run: make check ARCH=x64 V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-linux
path: dist
build-arm:
runs-on: ubuntu-24.04
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install OS dependencies
run: sudo add-apt-repository universe
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: micropython/micropython
path: micropython
ref: v1.27.0
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython ARM
working-directory: micropython
run: |
source tools/ci.sh && ci_rp2_setup
make -C mpy-cross
- name: Setup MicroPython RP2 port
working-directory: micropython/ports/rp2
run: |
make submodules
make clean
- name: Build custom firmware with extmod, RP2
run: make rp2 PORT=rp2 V=1
- name: Build module armv6m
run: make dist ARCH=armv6m V=1
- name: Build module armv7m
run: make dist ARCH=armv7m V=1
- name: Build module armv7emsp
run: make dist ARCH=armv7emsp V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-arm
path: dist
build-esp32:
runs-on: ubuntu-24.04
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install OS dependencies
run: sudo add-apt-repository universe
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: micropython/micropython
path: micropython
ref: v1.27.0
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython ESP32
working-directory: micropython
run: |
source tools/ci.sh && ci_esp32_idf_setup
make -C mpy-cross
- name: Setup submodules esp32
working-directory: micropython/ports/esp32
run: source ../../esp-idf/export.sh && make submodules
- name: Build custom firmware with extmod, ESP32
run: |
source micropython/esp-idf/export.sh && pip install -r requirements.txt
make extmod PORT=esp32 BOARD=ESP32_GENERIC_S3
make extmod PORT=esp32 BOARD=ESP32_GENERIC
- name: Build module xtensawin
run: source micropython/esp-idf/export.sh && pip install -r requirements.txt && make dist ARCH=xtensawin V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-esp32
path: dist
build-riscv:
runs-on: ubuntu-24.04
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install OS dependencies
run: sudo add-apt-repository universe
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: micropython/micropython
path: micropython
ref: v1.27.0
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython ESP32
working-directory: micropython
run: |
source tools/ci.sh && ci_esp32_idf_setup && ci_gcc_riscv_setup
make -C mpy-cross
- name: Setup submodules esp32
working-directory: micropython/ports/esp32
run: source ../../esp-idf/export.sh && make submodules
- name: Build custom firmware with extmod, ESP32
run: |
source micropython/esp-idf/export.sh && pip install -r requirements.txt
echo make extmod PORT=esp32 BOARD=ESP32_GENERIC_C6
- name: Build nadmod xtensawin
run: source micropython/esp-idf/export.sh && pip install -r requirements.txt && make dist ARCH=rv32imc V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-riscv
path: dist
build-macos:
runs-on: macos-latest
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Configure XCode SDK version
run: sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer
- name: Install OS dependencies
run: brew install pkg-config
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: micropython/micropython
path: micropython
ref: v1.27.0
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython X86
working-directory: micropython
run: |
make -C mpy-cross CFLAGS_EXTRA=-Wno-error
make -C ports/unix submodules
- name: Build custom firmware with user modules, and tests. Unix/x64
run: |
make check_unix V=1 CFLAGS_EXTRA=-Wno-error
mkdir -p ./dist/ports/macos
mv ./dist/ports/unix/micropython ./dist/ports/macos/micropython
- name: Build .mpy modules and run tests Unix/x64
# natmod build with linking seems broken on Mac OS, exception in mpy_ld.py, ELFError, magic number does not match
# https://github.com/micropython/micropython/issues/5500
run: echo SKIP make check ARCH=x64 V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-macos
path: dist
build-webassembly:
runs-on: ubuntu-latest
env:
MPY_DIR: ./micropython
MICROPYTHON_BIN: ./micropython/ports/unix/build-nomodules/micropython
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install OS dependencies
run: sudo add-apt-repository universe
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
with:
repository: jonnor/micropython
path: micropython
ref: webassembly-extra-cflags
- name: Install Python dependencies
run: pip install -r requirements.txt
- name: Setup MicroPython
working-directory: micropython
run: |
npm install terser
git clone https://github.com/emscripten-core/emsdk.git
(cd emsdk && ./emsdk install 4.0.21 && ./emsdk activate 4.0.21)
make -C mpy-cross CFLAGS_EXTRA=-Wno-error
- name: Build Webassembly
run: |
source ${MPY_DIR}/emsdk/emsdk_env.sh
make -C ${MPY_DIR}/ports/webassembly submodules
make webassembly V=1
- name: Archive dist artifacts
uses: actions/upload-artifact@v4
with:
name: emlearn-micropython-build-webassembly
path: dist
deploy-pages:
permissions:
contents: write
needs: [build-linux, build-arm, build-esp32, build-macos, build-riscv, build-webassembly]
runs-on: ubuntu-latest
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Prepare files for distribution
run: |
mkdir -p dist/
cp -r artifacts/*/* dist/
- name: Deploy to Github Pages (tag/version)
if: "github.ref_type == 'tag'"
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
keep_files: true
destination_dir: builds/${{ github.ref_name }}
- name: Deploy to Github Pages (latest)
if: "github.ref_type == 'tag'"
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
keep_files: true
destination_dir: builds/latest
docs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10']
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install OS dependencies
run: |
sudo apt-get update
sudo apt-get install -yqq libsndfile1 libsndfile1-dev doxygen
- name: Install Python dependencies
run: |
python -m pip install -U 'pip<20'
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f requirements.dev.txt ]; then pip install -r requirements.dev.txt; fi
- name: Build documentation using Sphinx
working-directory: ./docs
env:
PYTHONPATH: ../:../build/lib.linux-x86_64-cpython-310
READTHEDOCS: 'True'
run: |
make html