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
|
FROM ocaml/opam:debian-ocaml-5.3
WORKDIR /bench-dir
RUN sudo apt-get update \
&& sudo apt-get install -qq -yy --no-install-recommends \
pkg-config libgmp-dev jq time
RUN sudo ln -sf /usr/bin/opam-2.3 /usr/bin/opam
RUN opam remote add origin https://github.com/ocaml/opam-repository.git \
&& opam update
# Install node
ENV NODE_VERSION=v24.0.0-v8-canary2025030537242e55ac
ENV NODE=node-$NODE_VERSION-linux-x64
RUN curl -q https://nodejs.org/download/v8-canary/$NODE_VERSION/$NODE.tar.xz \
| tar xJf -
ENV PATH="/bench-dir/$NODE/bin:$PATH"
# Install binaryen
ENV BINARYEN_VERSION=version_122
ENV BINARYEN=binaryen-$BINARYEN_VERSION
RUN curl -Lq https://github.com/WebAssembly/binaryen/releases/download/$BINARYEN_VERSION/$BINARYEN-x86_64-linux.tar.gz \
| tar zxf -
ENV PATH="/bench-dir/$BINARYEN/bin:$PATH"
RUN opam install --fake binaryen-bin
# Jane Street opam packages
RUN mkdir janestreet \
&& cd janestreet \
&& git clone --depth 20 https://github.com/janestreet/opam-repository \
&& cd opam-repository \
&& git checkout 2819773f29b6f6c14b918eae3cb40c8ff6b22d0e \
&& opam remote add js .
# Install dependencies
WORKDIR /bench-dir/js_of_ocaml
COPY --chown=opam:opam js_of_ocaml-compiler.opam .
RUN opam install -y --deps-only ./js_of_ocaml-compiler.opam \
&& opam install opam-format stringext uucp cstruct \
&& opam pin add ppxlib -n 0.35.0 \
&& opam clean
# Prepare partial render table benchmark
COPY --chown=opam:opam dune-project ./
COPY --chown=opam:opam tools ./tools
RUN opam exec -- dune exec tools/ci_setup.exe ../janestreet . \
&& opam exec -- dune build --root ../janestreet --profile release lib/bonsai_web_components/partial_render_table/bench/bin/main.bc-for-jsoo \
&& opam remove js_of_ocaml-compiler ojs \
&& opam clean
# Bin_prot packages
RUN opam pin add -n https://github.com/janestreet/bin_prot.git#125e336faacd2e2e8c7a1fed2231bde1cebfebdd \
&& opam install ppx_bin_prot
# Copy sources
COPY --chown=opam:opam . ./
WORKDIR /bench-dir/js_of_ocaml/benchmarks
|