diff --git a/service/conf.ml b/service/conf.ml index 01bf7d1b..c0e3a4b9 100644 --- a/service/conf.ml +++ b/service/conf.ml @@ -116,6 +116,18 @@ let pool_of_arch = function | `Ppc64le -> "linux-ppc64" | `Riscv64 -> "linux-riscv64" +let disabled_arches = [ `Riscv64 (* Unsufficient capacity in the pool *) ] + +(* Arches supported by [distro] but unsupported by [DD.master_distro]. *) +let supplementary_arches ov master_distro distro = + if List.mem distro (List.map DD.resolve_alias DD.latest_distros) then + let master_distro_arches = DD.distro_arches ov (master_distro :> DD.t) + and distro_arches = DD.distro_arches ov (distro :> DD.t) in + List.filter + (fun arch -> not (List.mem arch master_distro_arches)) + distro_arches + else [] + let platforms ~include_macos opam_version = let v ?(arch = `X86_64) label distro ocaml_version = { @@ -134,12 +146,17 @@ let platforms ~include_macos opam_version = let label = DD.latest_tag_of_distro (distro :> DD.t) in let tag = DD.tag_of_distro (distro :> DD.t) in let ov = OV.(Releases.latest |> with_just_major_and_minor) in + let filter_disabled = + List.filter_map (fun arch -> + if List.mem arch disabled_arches then None + else Some (v ~arch label tag ov)) + in if distro = master_distro then v label tag (OV.with_variant ov (Some "flambda")) - :: List.map - (fun arch -> v ~arch label tag ov) - (DD.distro_arches ov (distro :> DD.t)) - else [ v label tag ov ] + :: filter_disabled (DD.distro_arches ov (distro :> DD.t)) + else + v label tag ov + :: filter_disabled (supplementary_arches ov master_distro distro) in let make_release ?arch ov = let distro = DD.tag_of_distro (master_distro :> DD.t) in