-
Notifications
You must be signed in to change notification settings - Fork 189
201 lines (169 loc) · 6.47 KB
/
build-wasm_of_ocaml.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
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
name: Build wasm_of_ocaml
on:
pull_request:
push:
branches:
- master
jobs:
build:
env:
WASM_OF_OCAML: true
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
ocaml-compiler:
- "4.14"
- "5.0"
- "5.1"
- "5.3"
separate_compilation:
- true
jane_street_tests:
- false
all_jane_street_tests:
- false
include:
- os: macos-latest
ocaml-compiler: "5.3"
separate_compilation: true
jane_street_tests: false
all_jane_street_tests: false
- os: ubuntu-latest
ocaml-compiler: "5.2"
separate_compilation: true
jane_street_tests: true
all_jane_street_tests: true
- os: ubuntu-latest
ocaml-compiler: "5.2"
separate_compilation: false
jane_street_tests: true
all_jane_street_tests: false
runs-on: ${{ matrix.os }}
steps:
- name: Set git to use LF
if: ${{ matrix.os == 'windows-latest' && matrix.ocaml-compiler < 5.2 }}
run: |
git config --global core.autocrlf false
git config --global core.eol lf
git config --global core.ignorecase false
- name: Checkout tree
uses: actions/checkout@v4
with:
path: wasm_of_ocaml
- name: Checkout Jane Street opam repository
if: matrix.jane_street_tests
uses: actions/checkout@v4
with:
repository: janestreet/opam-repository
ref: 41c89c7824533f6b63cc5b6d75e6ddb1441d1520
path: janestreet/opam-repository
- name: Set-up Node.js
uses: actions/setup-node@v4
with:
node-version: latest
- name: Set-up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Set-up Binaryen
uses: Aandreba/[email protected]
with:
token: ${{ github.token }}
- name: Pin faked binaryen-bin package
# It's faster to use a cached version
run: opam install --fake binaryen-bin
- name: Pin wasm_of_ocaml
working-directory: ./wasm_of_ocaml
run: opam pin -n --with-version `< VERSION` .
- name: Checkout Jane Street packages
if: matrix.jane_street_tests
run: |
opam repo add js janestreet/opam-repository
opam install opam-format ocamlfind dune graphics cmdliner
opam exec -- ocaml wasm_of_ocaml/tools/ci_setup.ml
- name: Pin Jane Street packages
if: ${{ ! matrix.jane_street_tests }}
run: |
opam pin add -n base.v0.16.1 https://github.com/ocaml-wasm/base.git#wasm
opam pin add -n time_now.v0.16.1 https://github.com/ocaml-wasm/time_now.git#wasm
opam pin add -n ppx_inline_test.v0.16.1 https://github.com/ocaml-wasm/ppx_inline_test.git#wasm
opam pin add -n ppx_expect.v0.16.1 https://github.com/ocaml-wasm/ppx_expect.git#wasm
- name: Install wasm_of_ocaml and its test dependencies
working-directory: ./wasm_of_ocaml
run: |
opam install `basename -s .opam *.opam` num cohttp-lwt-unix ppx_expect cstruct
- name: Run tests
if: ${{ matrix.separate_compilation }}
working-directory: ./wasm_of_ocaml
run: opam exec -- dune build @runtest-wasm
- name: Run tests with CPS effects
if: ${{ matrix.ocaml-compiler >= '5.' && matrix.separate_compilation }}
working-directory: ./wasm_of_ocaml
run: opam exec -- dune build @runtest-wasm --profile with-effects
- name: Run Base tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/base
run: opam exec -- dune runtest
- name: Run Base bigstring tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/base_bigstring
run: opam exec -- dune runtest
- name: Run Core tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/core
run: opam exec -- dune runtest
- name: Run Bignum tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/bignum
run: opam exec -- dune runtest
- name: Run Bin_prot tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/bin_prot
run: opam exec -- dune runtest
- name: Run String_dict tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/string_dict
run: opam exec -- dune runtest
- name: Run Zarith tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/zarith_stubs_js
run: opam exec -- dune runtest
- name: Run Virtual_dom tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/virtual_dom
run: opam exec -- dune runtest
- name: Run Bonsai tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/bonsai_test
run: opam exec -- dune runtest
- name: Write node wrapper
run: |
mkdir -p ~/.local/bin
cat > ~/.local/bin/node <<EOF
#!/bin/sh
exec `which node` --experimental-wasm-stack-switching "\$@"
EOF
chmod +x ~/.local/bin/node
echo ~/.local/bin >> "$GITHUB_PATH"
- name: Run Bonsai web tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/bonsai_web_test
run: opam exec -- dune runtest
- name: Run Bonsai web components' tests
if: matrix.all_jane_street_tests
working-directory: ./janestreet/lib/bonsai_web_components
run: opam exec -- dune runtest
- name: Run Bonsai tests (release profile)
if: ${{ ! matrix.separate_compilation }}
working-directory: ./janestreet/lib/bonsai_test
run: opam exec -- dune runtest --profile release
- name: Run Bonsai web tests (release profile)
if: ${{ ! matrix.separate_compilation }}
working-directory: ./janestreet/lib/bonsai_web_test
run: opam exec -- dune runtest --profile release
- name: Run Bonsai web components' tests (release profile)
if: ${{ ! matrix.separate_compilation }}
working-directory: ./janestreet/lib/bonsai_web_components
run: opam exec -- dune runtest --profile release