Base images for OxCaml
Mark Elvers
1 min read

Categories

  • oxcaml

Tags

  • tunbury.org

As @dra27 suggested, I first added support in ocurrent/ocaml-version. I went with the name flambda2, which matched the name in the opam package.

Wherever I found the type Flambda, I added Flambda2. I added a list of OxCaml versions in the style of the unreleased betas and a function is_oxcaml to test if the variant is of type Flambda2, closely following the is_multicore design! The final change was to additional_packages concatenated ocaml-options-only- to flambda2 - again, this change was also needed for multicore.

It was a relatively minor change to the base-image-builder, adding Ocaml_version.Releases.oxcaml to the available switches on AMD64 and ARM64. Following the precedent set by maybe_add_beta and maybe_add_multicore, I added maybe_add_jst, which added the Jane Street opam repository for these builds.

The builds mostly failed because they depended on autoconf, which isn’t included by default on most distributions. Looking in the dockerfile, there is a function called ocaml_depexts, which includes zstd for OCaml > 5.1.0. I extended this function to include autoconf when building OxCaml.

The Arch Linux builds failed due to missing which, so I added this as I did for autoconf

The following are working:

  • Ubuntu 24.10, 24.04, 22.04
  • OpenSUSE Tumbleweed
  • Fedora 42, 41
  • Debian Unstable, Testing, 12
  • Arch

Failures

  • Alpine 3.21
    • missing linux/auxvec.h header
  • OpenSUSE 15.6
    • autoconf is too old in the distribution
  • Debian 11
    • autoconf is too old in the distribution
  • Oracle Linux 9, 8
    • autoconf is too old in the distribution

There is some discussion about whether building these with the base image builder is the best approach, so I won’t create PRs at this time. My branches are: