package dockerfile-opam
Library
Module
Module type
Parameter
Class
Class type
Rules for generating Dockerfiles involving OPAM.
These are deployed at ocaml/opam on the Docker Hub. The interfaces here may change as the production deployments there change, so please contact anil@recoil.org
if you depend on these functions for your own infrastructure.
module Distro : sig ... end
Run Opam commands across a matrix of Docker containers. Each of these containers represents a different version of OCaml, Opam and an OS distribution (such as Debian or Alpine).
module Linux : sig ... end
Linux distribution-specific Dockerfile utility functions
module Windows : sig ... end
Windows specific Dockerfile utility functions.
val run_as_opam : ('a, unit, string, Dockerfile.t) format4 -> 'a
run_as_opam fmt
runs the command specified by the fmt
format string as the opam
user.
val install_opam_from_source :
?add_default_link:bool ->
?prefix:string ->
?enable_0install_solver:bool ->
branch:string ->
hash:string ->
unit ->
Dockerfile.t
Commands to install OPAM via a source code checkout from GitHub. The branch
can be a git tag or branch (e.g. 2.0
for opam 2.0.x or 2.1
for the opam 2.1.x). The binaries are installed under <prefix>/bin/opam-<branch>
, defaulting to /usr/local/bin
. If add_default_link
is true (the default), then the opam-<branch>
binary is hardlinked to opam
. Set it to false if you want to install multiple opam binaries from different branches in the same container. If enable_0install_solver
is true (false by default), then the builtin-0install
solver should be accessible in the resulting opam binary.
val gen_opam2_distro :
?win10_revision:Distro.win10_lcu ->
?winget:string ->
?clone_opam_repo:bool ->
?arch:Ocaml_version.arch ->
?labels:(string * string) list ->
opam_hashes:opam_hashes ->
Distro.t ->
string * Dockerfile.t
gen_opam2_distro ~opam_hashes d
will generate a Dockerfile for Linux distribution d
with opam 2.0, opam 2.1, opam 2.2 and opam master, per hash given in parameter.
val ocaml_depexts : Distro.t -> Ocaml_version.t -> Dockerfile.t
ocaml_depexts distro version
returns packages that are required under distro
by the OCaml distribution at version version
.
val all_ocaml_compilers :
string ->
Ocaml_version.arch ->
Distro.t ->
string * Dockerfile.t
all_ocaml_compilers hub_id arch distro
will generate an opam2 container that has all the recent OCaml compilers installed into a distribution distro
on architecture arch
.
val separate_ocaml_compilers :
string ->
Ocaml_version.arch ->
Distro.t ->
(string * Dockerfile.t) list
separate_ocaml_compilers hub_id arch distro
will install a list of Dockerfiles that build individual OCaml compiler versions and their variants (e.g. flambda) in separate containers.
val deprecated : Dockerfile.t
deprecated
is a minimal container that outputs a deprecation error. This is used to replace unsupported containers on the Hub rather than leaving an unmaintained distribution lying around with possible security holes.