Runtime: allow one to directly access values exported in the runtime #485
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: wasm_of_ocaml | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| schedule: | |
| # Prime the caches every Monday | |
| - cron: 0 1 * * MON | |
| jobs: | |
| build: | |
| env: | |
| WASM_OF_OCAML: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| os-name: | |
| - Ubuntu | |
| ocaml-compiler: | |
| - "4.14" | |
| - "5.0" | |
| - "5.1" | |
| - "5.2" | |
| - "5.4" | |
| separate_compilation: | |
| - true | |
| jane_street_tests: | |
| - false | |
| all_jane_street_tests: | |
| - false | |
| include: | |
| - os: macos-latest | |
| os-name: MacOS | |
| ocaml-compiler: "5.3" | |
| separate_compilation: true | |
| jane_street_tests: false | |
| all_jane_street_tests: false | |
| - os: windows-latest | |
| os-name: Windows | |
| ocaml-compiler: "5.3" | |
| separate_compilation: true | |
| # Jane Street tests disabled for now (basement only works on Linux) | |
| jane_street_tests: false | |
| all_jane_street_tests: false | |
| - os: ubuntu-latest | |
| os-name: Ubuntu | |
| ocaml-compiler: "5.3" | |
| separate_compilation: true | |
| jane_street_tests: true | |
| all_jane_street_tests: true | |
| - os: ubuntu-latest | |
| os-name: Ubuntu | |
| ocaml-compiler: "5.3" | |
| separate_compilation: false | |
| jane_street_tests: true | |
| all_jane_street_tests: false | |
| runs-on: ${{ matrix.os }} | |
| name: | |
| ${{ (! matrix.separate_compilation) && 'Whole program / ' || ''}}${{ matrix.ocaml-compiler }} / ${{ matrix.os-name }}${{ matrix.all_jane_street_tests && ' / Jane Street tests' || ''}} | |
| steps: | |
| - name: Update apt cache | |
| if: ${{ matrix.os == 'ubuntu-latest' }} | |
| run: sudo apt-get update | |
| - name: Checkout tree | |
| uses: actions/checkout@v5 | |
| with: | |
| path: wasm_of_ocaml | |
| - name: Checkout Jane Street opam repository | |
| if: matrix.jane_street_tests | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: janestreet/opam-repository | |
| ref: 2819773f29b6f6c14b918eae3cb40c8ff6b22d0e | |
| path: janestreet/opam-repository | |
| - name: Set-up Node.js | |
| uses: actions/setup-node@v6 | |
| 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/setup-binaryen@v1.0.0 | |
| with: | |
| token: ${{ github.token }} | |
| - name: Install faked binaryen-bin package | |
| # It's faster to use a cached version | |
| run: opam install --fake binaryen-bin | |
| # Work-around a race between reinstalling mingw-w64-shims | |
| # (because of conf-pkg-config optional dep) and installing other | |
| # packages that implicitly depend on mingw-w64-shims. | |
| - run: opam install conf-pkg-config conf-mingw-w64-gcc-i686 conf-mingw-w64-g++-x86_64 | |
| if: runner.os == 'Windows' | |
| - name: Pin wasm_of_ocaml | |
| working-directory: ./wasm_of_ocaml | |
| run: opam pin . -n --with-version dev | |
| - name: Checkout Jane Street packages | |
| if: matrix.jane_street_tests | |
| run: | | |
| opam repo add js janestreet/opam-repository | |
| opam install opam-format | |
| opam exec -- dune exec --root wasm_of_ocaml tools/ci_setup.exe | |
| - name: Pin Jane Street packages (v0.16) | |
| if: contains(fromJson('["4.14","5.0","5.1","5.2"]'), matrix.ocaml-compiler) | |
| 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: Pin Jane Street packages (v0.17) | |
| if: ${{ ! (matrix.jane_street_tests || contains(fromJson('["4.14","5.0","5.1","5.2"]'), matrix.ocaml-compiler)) }} | |
| run: | | |
| opam pin add -n base.v0.17.3 https://github.com/ocaml-wasm/base.git#wasm-v0.17 | |
| opam pin add -n time_now.v0.17.0 https://github.com/ocaml-wasm/time_now.git#wasm-v0.17 | |
| opam pin add -n ppx_inline_test.v0.17.1 https://github.com/ocaml-wasm/ppx_inline_test.git#wasm-v0.17 | |
| opam pin add -n ppx_expect.v0.17.3 https://github.com/ocaml-wasm/ppx_expect.git#wasm-v0.17 | |
| - name: Install wasm_of_ocaml and its test dependencies | |
| working-directory: ./wasm_of_ocaml | |
| run: | | |
| opam install . -t | |
| - name: Run tests | |
| if: ${{ matrix.separate_compilation }} | |
| working-directory: ./wasm_of_ocaml | |
| run: opam exec -- dune build @runtest-wasm | |
| # we continue-on-error on windows because we seem to often hit | |
| # an internal assert inside libuv. | |
| # See https://github.com/libuv/libuv/issues/3622 | |
| - name: Run tests with CPS effects | |
| if: ${{ matrix.ocaml-compiler >= '5.' && matrix.separate_compilation }} | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| 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 | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/base | |
| run: opam exec -- dune runtest | |
| - name: Run Base bigstring tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/base_bigstring | |
| run: opam exec -- dune runtest | |
| - name: Run Core tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/core | |
| run: opam exec -- dune runtest | |
| - name: Run Bignum tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/bignum | |
| run: opam exec -- dune runtest | |
| - name: Run Bin_prot tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/bin_prot | |
| run: opam exec -- dune runtest | |
| - name: Run String_dict tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/string_dict | |
| run: opam exec -- dune runtest | |
| - name: Run Zarith tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/zarith_stubs_js | |
| run: opam exec -- dune runtest | |
| - name: Run Virtual_dom tests | |
| if: matrix.all_jane_street_tests | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/virtual_dom | |
| run: opam exec -- dune runtest | |
| - name: Run Bonsai tests | |
| if: ${{ matrix.all_jane_street_tests && matrix.os != 'windows-latest' }} | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/bonsai_test | |
| run: opam exec -- dune runtest | |
| - name: Run Bonsai web tests | |
| if: ${{ matrix.all_jane_street_tests && matrix.os != 'windows-latest' }} | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| working-directory: ./janestreet/lib/bonsai_web_test | |
| run: opam exec -- dune runtest | |
| - name: Run Bonsai web components' tests | |
| if: ${{ matrix.all_jane_street_tests && matrix.os != 'windows-latest' }} | |
| continue-on-error: ${{ matrix.os == 'windows-latest' }} | |
| 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 |