Skip to content
name: Build wasm_of_ocaml
on:
pull_request:
push:
jobs:
build:
env:
OPAMJOBS: 2
OPAMYES: true
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
ocaml-compiler:
- 4.14.x
- 5.00.x
- 5.01.x
- 5.02.x
separate_compilation:
- true
include:
- os: macos-latest
ocaml-compiler: 5.02.x
separate_compilation: true
- os: ubuntu-latest
ocaml-compiler: 4.14.x
separate_compilation: false
runs-on: ${{ matrix.os }}
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
git config --global core.ignorecase false
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Restore cached binaryen
id: cache-binaryen
uses: actions/cache/restore@v4
with:
path: binaryen
key: ${{ runner.os }}-binaryen-version_118
- name: Checkout binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: WebAssembly/binaryen
path: binaryen
submodules: true
ref: version_118
- name: Install ninja (Ubuntu)
if: matrix.os == 'ubuntu-latest' && steps.cache-binaryen.outputs.cache-hit != 'true'
run: sudo apt-get install ninja-build
- name: Install ninja (MacOS)
if: matrix.os == 'macos-latest' && steps.cache-binaryen.outputs.cache-hit != 'true'
run: brew install ninja
- name: Build binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
working-directory: ./binaryen
run: |
cmake -G Ninja .
ninja
- name: Cache binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: binaryen
key: ${{ runner.os }}-binaryen-version_118
- name: Set binaryen's path
run: |
echo "$GITHUB_WORKSPACE/binaryen/bin" >> $GITHUB_PATH
- name: Install OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Checkout code
uses: actions/checkout@v4
with:
path: wasm_of_ocaml
- name: Pin faked binaryen-bin package
# It's faster to use a cached version
run: opam install --fake binaryen-bin
- name: Checkout Jane Street opam repository
uses: actions/checkout@v4
with:
repository: janestreet/opam-repository
ref: feaf8f831051fd5f316963b28efd728cf0b0eca1
path: jane-street/opam-repository
- name: Pin dune
run: opam pin add -n dune.3.17 https://github.com/ocaml/dune.git
- name: Pin wasm_of_ocaml
working-directory: ./wasm_of_ocaml
run: opam pin -n --with-version `< VERSION` .
- name: Install some needed packages
run: opam install opam-format ocamlfind dune graphics cmdliner sexplib0.v0.16.0
- name: Checkout Jane Street packages
run: opam exec -- ocaml wasm_of_ocaml/tools/ci_setup.ml
- name: Update test dependencies
run: opam install num cohttp-lwt-unix ppx_expect cstruct
- name: Install wasm_of_ocaml
working-directory: ./wasm_of_ocaml
run: opam install `basename -s .opam *.opam`
- name: Run tests
if: ${{ matrix.separate_compilation }}
working-directory: ./wasm_of_ocaml
run: opam exec -- dune build @all @runtest --profile 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 @all @runtest --profile wasm-effects
- name: Run Base tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/base
run: opam exec -- dune runtest
- name: Run Base bigstring tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/base_bigstring
run: opam exec -- dune runtest
- name: Run Core tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/core
run: opam exec -- dune runtest
- name: Run Bignum tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/bignum
run: opam exec -- dune runtest
- name: Run Bin_prot tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/bin_prot
run: opam exec -- dune runtest
- name: Run String_dict tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/string_dict
run: opam exec -- dune runtest
- name: Run Zarith tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/zarith_stubs_js
run: opam exec -- dune runtest
- name: Run Virtual_dom tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/virtual_dom
run: opam exec -- dune runtest
- name: Run Bonsai tests
if: ${{ matrix.ocaml-compiler < '5.' && matrix.separate_compilation }}
working-directory: ./jane-street/lib/bonsai
run: opam exec -- dune runtest
- name: Run Bonsai tests (release profile)
if: ${{ ! matrix.separate_compilation }}
working-directory: ./jane-street/lib/bonsai
run: opam exec -- dune runtest --profile release