-
Notifications
You must be signed in to change notification settings - Fork 2
88 lines (74 loc) · 2.92 KB
/
build-xbuildenv.yml
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
name: Build Job for Pyodide
description: This composite action encapsulates the build job for creating the cross-build environment for Pyodide.
on:
workflow_call:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: "3.12"
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install system-level dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
cmake bzip2 ccache f2c g++ gfortran git make \
patch pkg-config swig unzip wget xz-utils \
autoconf autotools-dev automake texinfo dejagnu \
build-essential libtool libltdl-dev \
gnupg2 libdbus-glib-1-2 sudo sqlite3 \
ninja-build jq xxd
- name: Cache ccache outputs
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: /tmp/ccache
key: ccache-${{ hashFiles('Makefile.envs') }}
- name: Check out Pyodide, and the NumPy v2 mirror branch
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: pyodide/pyodide
ref: main
path: pyodide_checkout
submodules: recursive
- name: Restore cached built packages
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: |
pyodide_checkout/packages/.libs/*
pyodide_checkout/packages/.artifacts/*
pyodide_checkout/dist/*.whl
key: pyodide-packages-${{ hashFiles('pyodide_checkout/packages/recipes/**/*.yaml') }}
- run: echo "PYODIDE_JOBS=$(nproc)" >> "$GITHUB_ENV"
- name: Build Pyodide packages with NumPy v2 enabled
working-directory: pyodide_checkout/
run: |
source pyodide_env.sh
ccache -z
make -C emsdk
make -C cpython
pip install -e ./pyodide-build
PYODIDE_PACKAGES="numpy,scipy,cffi" make
ccache -s
- name: Save ccached outputs
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: /tmp/ccache
key: ccache-${{ hashFiles('Makefile.envs') }}
- name: Create cross-build environment
working-directory: pyodide_checkout/
run: |
python tools/create_xbuildenv.py .
tar cjf xbuildenv.tar.bz2 ./xbuildenv/
- name: Upload cross-build environment
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
with:
name: cross-build-env
path: |
pyodide_checkout/xbuildenv.tar.bz2
if-no-files-found: error
retention-days: 1