-
Notifications
You must be signed in to change notification settings - Fork 2
143 lines (124 loc) · 4.59 KB
/
build.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
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
name: Build Cross-build environment for pyodide-build
on:
pull_request:
push:
branches:
- main
tags:
- '*'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
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.bz ./xbuildenv/
- name: Upload cross-build environment
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
with:
name: cross-build-env
path: |
pyodide_checkout/xbuildenv.tar.bz
if-no-files-found: error
retention-days: 1
publish:
runs-on: ubuntu-latest
needs: [build]
if: >-
github.repository == 'pyodide/pyodide-build-environment-nightly' &&
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags'))
permissions:
# Required to sign the attestations
id-token: write
attestations: write
# Required to upload to a GitHub release identifier
contents: write
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: cross-build-env
path: dist
merge-multiple: true
- name: Generate attestations
uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0
with:
subject-path: |
dist/xbuildenv.tar.bz
- name: Calc release version
id: release_version
shell: bash
run: |
echo "release_version=${{ github.ref_name }}" >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
- name: Verify them, to ensure that the wheels they were attested correctly
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
gh attestation verify dist/xbuildenv.tar.bz --repo ${{ github.repository }}
- name: Create GitHub release with these wheels
uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v2.1.0
with:
files: |
dist/*.tar.bz
fail_on_unmatched_files: true
name: ${{ steps.release_version.outputs.release_version }}