Skip to content

Conversation

sabine
Copy link
Collaborator

@sabine sabine commented Aug 28, 2025

This is the reopen of #3132. Me and @cuihtlauac met to migrate all the open tasks over here. I hope we got them all!


General concerns that haven't been fully decided / documented:

  • (@cuihtlauac) To what extent will we support opam workflows on OCaml.org in the future? (@cuihtlauac has explored and considers it feasible)
  • (@sabine) The opam-repository pin update scenario: What do we need to communicate about this to contributors, how exaclty do we do this as maintainers? (e.g. have a section in contributor docs about "after rebase on main, my branch doesn't build anymore" and mention that this could be because the dependencies have beeen updated, with example of error message and steps to fix that - deleting dune.lock)

Remaining simple todos::

  • (@sabine) Update README.md, section “Getting Started”
  • (@sabine) we need to use a stable version of Dune on all GitHub Actions Workflows, in the Dockerfile, and for the local build / install (Makefile) (this PR aims to add a version parameter to the GitHub Action: update action to take a parameter 'version' to install stable Dune ocaml-dune/setup-dune#10, and the changes from this PR will only work afterwards)
  • (@sabine) as a smoke test, we create a new daily(?) GitHub Action that uses Developer Preview to build ocaml.org (this intends to benefit Dune Developer Preview)
  • (@sabine) Performance impact:
    • How does this change affect the build times (switch creation vs dune pkg, cold build difference, warm build difference)? Needs to be documented in this PR.
    • make clean must be implemented in such a way that it doesn't delete the dependencies (this would be equivalent to deleting the opam switch. All we need make clean to do is to delete all the build artifacts!)
    • add a new command make wipe that deletes the dependencies? (This would be useful in the docs, to tell people to use this when they run into trouble because we advanced the opam-repository pin for ocaml.org's dependencies.)

To put in maintenance backlog, without blocking this PR:

  • (@cuihtlauac) curl / ipv4 / ipv6-related Docker build issues under Ubuntu 25.04 (is this something to report on upstream, i.e. Ubuntu / Docker / Dune?)

Performance Impact

This Branch

Clean build, after using make clean:
$ make clean
dune clean --root .
sabine@pop-os:~/ocaml.org$ time make
dune build --root .
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 1179ms.
######################################################################## 100.0%
real    2m14.213s
user    5m43.592s
sys     2m40.199s

Repeat build without changes:

$ time make
dune build --root .
                                         
real    0m4.844s
user    0m3.828s
sys     0m1.008s
Clean build, including installation of dependencies:
$ time make
dune pkg lock
Locking dune.lock: Updating package repos "overlay", "pinned_opam_repository", "pinned_overlay_repository" and "upst                                                                                                                    Locking dune.lock: Updating package repos "overlay", "pinned_opam_repository", "pinned_overlay_repository" and "upst                                                                                                                    Solution for dune.lock:      
- alcotest.1.9.0
- angstrom.0.16.1
- asn1-combinators.0.3.2
- astring.0.8.5
- base.v0.17.2
- base-bytes.base
- base-threads.base
- base-unix.base
- base64.3.5.1
- bigarray-compat.1.1.0
- bigarray-overlap.0.2.1
- bigstringaf.0.10.0
- bos.0.2.1
- ca-certs.1.0.1
- camlp-streams.5.0.1
- caqti.2.2.4
- caqti-lwt.2.2.4
- checkseum.0.5.2
- cmarkit.0.3.0
- cmdliner.1.3.0
- cohttp.6.1.0
- cohttp-lwt.6.1.0
- cohttp-lwt-unix.6.1.0
- conduit.8.0.0
- conduit-lwt.8.0.0
- conduit-lwt-unix.8.0.0
- conf-gmp.5
- conf-gmp-powm-sec.4
- conf-libev.4-12
- conf-libssl.4
- conf-oniguruma.1
- conf-pkg-config.4
- cppo.1.8.0
- crunch.4.0.0
- csexp.1.5.2
- cstruct.6.2.0
- ctypes.0.23.0
- decompress.1.5.3
- digestif.1.3.0
- domain-name.0.4.1
- dream.1.0.0~alpha8
- dream-accept.0.1.0
- dream-encoding.0.3.0
- dream-httpaf.1.0.0~alpha4
- dream-pure.1.0.0~alpha2
- dune-build-info.3.19.0
- dune-configurator.3.19.0
- dune-private-libs.3.19.0
- dune-site.3.19.0
- duration.0.2.1
- dyn.3.19.0
- either.1.0.0
- eqaf.0.10
- ezjsonm.1.3.0
- faraday.0.8.2
- faraday-lwt.0.8.2
- faraday-lwt-unix.0.8.2
- fix.20250428
- fmt.0.10.0
- fpath.0.7.3
- gluten.0.5.2
- gluten-lwt.0.5.2
- gluten-lwt-unix.0.5.2
- gmap.0.3.0
- graphql.0.14.0
- graphql-lwt.0.14.0
- graphql_parser.0.14.0
- h2.0.12.0
- h2-lwt.0.12.0
- h2-lwt-unix.0.12.0
- hex.1.5.0
- hilite.0.4.0
- hmap.0.8.1
- hpack.0.12.0
- http.6.1.0
- httpun.0.1.0
- httpun-lwt.0.1.0
- httpun-lwt-unix.0.1.0
- httpun-types.0.1.0
- httpun-ws.0.2.0
- integers.0.7.0
- ipaddr.5.6.0
- ipaddr-sexp.5.6.0
- jsonm.1.0.2
- kdf.1.0.0
- ke.0.6
- lambdasoup.1.1.1
- logs.0.8.0
- lru.0.3.1
- lwt.5.9.1
- lwt-dllist.1.1.0
- lwt_ppx.5.9.1
- lwt_ssl.1.2.0
- macaddr.5.6.0
- magic-mime.1.3.1
- markup.1.0.3
- mdx.2.5.0
- menhir.20240715
- menhirCST.20240715
- menhirLib.20240715
- menhirSdk.20240715
- mirage-clock.4.2.0
- mirage-crypto.1.2.0
- mirage-crypto-ec.1.2.0
- mirage-crypto-pk.1.2.0
- mirage-crypto-rng.1.2.0
- mirage-crypto-rng-lwt.1.2.0
- mirage-kv.6.1.1
- mirage-kv-mem.4.0.0
- mirage-ptime.5.0.0
- mtime.2.1.0
- multipart_form.0.6.0
- multipart_form-lwt.0.6.0
- ocaml.5.2.0
- ocaml-base-compiler.5.2.0
- ocaml-compiler-libs.v0.17.0
- ocaml-config.3
- ocaml-syntax-shims.1.0.0
- ocaml-version.4.0.0
- ocaml_intrinsics_kernel.v0.17.1
- ocamlbuild.0.16.1+dune
- ocamlfind.1.9.8+dune
- ocamlformat.0.26.2
- ocamlformat-lib.0.26.2
- ocamlgraph.2.2.0
- ocp-indent.1.8.1
- ocplib-endian.1.2
- ohex.0.2.0
- oniguruma.0.1.2
- opam-core.2.3.0
- opam-file-format.2.1.6
- opam-format.2.3.0
- optint.0.3.0
- ordering.3.19.0
- ounit.2.2.7
- ounit2.2.2.7
- pecu.0.7
- pp.2.0.0
- ppx_derivers.1.2.1
- ppx_deriving.6.0.3
- ppx_deriving_yaml.0.4.0
- ppx_deriving_yojson.3.9.1
- ppx_import.1.11.0
- ppx_sexp_conv.v0.17.0
- ppx_stable.v0.17.0
- ppxlib.0.35.0
- ppxlib_jane.v0.17.0
- prettym.0.0.3
- psq.0.2.1
- ptime.1.2.0
- re.1.12.0
- result.1.5
- river.0.4
- rresult.0.7.0
- seq.base
- sexplib0.v0.17.0
- sha.1.15.4
- ssl.0.7.0
- stdio.v0.17.0
- stdlib-shims.0.3.0
- stdune.3.19.0
- stringext.1.6.0
- swhid_core.0.1
- syndic.1.6.1
- textmate-language.0.4.0
- timedesc.3.1.0
- timedesc-tzdb.3.1.0
- timedesc-tzlocal.3.1.0
- tls.2.0.1
- topkg.1.0.8
- uchar.0.0.2
- unstrctrd.0.4
- uri.4.4.0
- uri-sexp.4.4.0
- uucp.16.0.0
- uuseg.16.0.0
- uutf.1.0.4
- x509.1.0.6
- xmlm.1.4.0
- yaml.3.2.0
- yojson.2.2.2
- zarith.1.14
dune build --root .          
Done: 57% (4/7, 3 left) (jobs: 1)
######################################################################## 100.0%
######################################################################## 100.0%
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 1116ms.
######################################################################## 100.0%
######################################################################## 100.0%
real    3m25.763s
user    10m6.832s
sys     3m24.536s

Before Patch

Clean build, after using make clean:
$ make clean
opam exec -- dune clean --root .
sabine@pop-os:~/ocaml.org$ time make
opam exec -- dune build --root .
######################################################################## 100.0%
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 1323ms.
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
real    0m24.701s
user    0m55.949s
sys     0m18.443s
Repeat build without changes:
$ time make
opam exec -- dune build --root .
real    0m0.498s
user    0m0.376s
sys     0m0.107s
Clean build, including installation of dependencies:
$ time (make switch && make)
opam switch create . 5.2.0 --no-install --repos pin=git+https://github.com/ocaml/opam-repository#584630e7a7e27e3cf56158696a3fe94623a0cf4f

<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><>
Switch invariant: ["ocaml-base-compiler" {= "5.2.0"} | "ocaml-system" {= "5.2.0"}]
[NOTE] It seems you have not updated your repositories for a while. Consider updating them with:
       opam update


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved ocaml-config.3  (cached)
∗ installed base-bigarray.base
∗ installed base-threads.base
∗ installed base-unix.base
∗ installed ocaml-options-vanilla.1
⬇ retrieved ocaml-base-compiler.5.2.0  (cached)
∗ installed ocaml-base-compiler.5.2.0
∗ installed ocaml-config.3
∗ installed ocaml.5.2.0
∗ installed base-domains.base
∗ installed base-nnp.base
Done.
# Run eval $(opam env) to update the current shell environment
opam install -y ocamlformat=0.26.2 ocaml-lsp-server
[NOTE] It seems you have not updated your repositories for a while. Consider updating them with:
       opam update

The following actions will be performed:
=== install 49 packages
  ∗ astring                 0.8.5    [required by ocaml-lsp-server]
  ∗ base                    v0.17.2  [required by ocaml-lsp-server]
  ∗ base-bytes              base     [required by ocp-indent]
  ∗ camlp-streams           5.0.1    [required by ocaml-lsp-server]
  ∗ chrome-trace            3.19.0   [required by ocaml-lsp-server]
  ∗ cmdliner                1.3.0    [required by ocamlformat]
  ∗ csexp                   1.5.2    [required by ocaml-lsp-server]
  ∗ dune                    3.19.0   [required by ocaml-lsp-server, ocamlformat]
  ∗ dune-build-info         3.19.0   [required by ocaml-lsp-server]
  ∗ dune-configurator       3.19.0   [required by base]
  ∗ dune-rpc                3.19.0   [required by ocaml-lsp-server]
  ∗ dyn                     3.19.0   [required by ocaml-lsp-server]
  ∗ either                  1.0.0    [required by ocamlformat-lib]
  ∗ fiber                   3.7.0    [required by ocaml-lsp-server]
  ∗ fix                     20250428 [required by ocamlformat-lib]
  ∗ fpath                   0.7.3    [required by ocamlformat-lib]
  ∗ jsonrpc                 1.21.0   [required by ocaml-lsp-server]
  ∗ lsp                     1.21.0   [required by ocaml-lsp-server]
  ∗ menhir                  20240715 [required by ocamlformat-lib]
  ∗ menhirCST               20240715 [required by menhir]
  ∗ menhirLib               20240715 [required by ocamlformat-lib]
  ∗ menhirSdk               20240715 [required by ocamlformat-lib]
  ∗ merlin-lib              5.3-502  [required by ocaml-lsp-server]
  ∗ ocaml-lsp-server        1.21.0
  ∗ ocaml-version           4.0.0    [required by ocamlformat-lib]
  ∗ ocaml_intrinsics_kernel v0.17.1  [required by base]
  ∗ ocamlbuild              0.16.1   [required by astring]
  ∗ ocamlc-loc              3.19.0   [required by ocaml-lsp-server]
  ∗ ocamlfind               1.9.8    [required by astring]
  ∗ ocamlformat             0.26.2
  ∗ ocamlformat-lib         0.26.2   [required by ocamlformat]
  ∗ ocamlformat-rpc-lib     0.27.0   [required by ocaml-lsp-server]
  ∗ ocp-indent              1.8.1    [required by ocamlformat-lib]
  ∗ ordering                3.19.0   [required by ocaml-lsp-server]
  ∗ pp                      2.0.0    [required by ocaml-lsp-server]
  ∗ ppx_yojson_conv_lib     v0.17.0  [required by ocaml-lsp-server]
  ∗ re                      1.12.0   [required by ocaml-lsp-server, ocamlformat]
  ∗ result                  1.5      [required by ocamlformat-lib]
  ∗ seq                     base     [required by re]
  ∗ sexplib0                v0.17.0  [required by base]
  ∗ spawn                   v0.17.0  [required by ocaml-lsp-server]
  ∗ stdio                   v0.17.0  [required by ocamlformat-lib]
  ∗ stdune                  3.19.0   [required by ocaml-lsp-server]
  ∗ topkg                   1.0.8    [required by astring]
  ∗ uucp                    16.0.0   [required by uuseg]
  ∗ uuseg                   16.0.0   [required by ocamlformat-lib]
  ∗ uutf                    1.0.4    [required by lsp, ocamlformat-lib]
  ∗ xdg                     3.19.0   [required by ocaml-lsp-server]
  ∗ yojson                  2.2.2    [required by ocaml-lsp-server]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved astring.0.8.5  (cached)
⬇ retrieved base.v0.17.2  (cached)
⬇ retrieved camlp-streams.5.0.1  (cached)
⬇ retrieved csexp.1.5.2  (cached)
⬇ retrieved cmdliner.1.3.0  (cached)
⬇ retrieved either.1.0.0  (cached)
⬇ retrieved fiber.3.7.0  (cached)
⬇ retrieved fix.20250428  (cached)
⬇ retrieved fpath.0.7.3  (cached)
⬇ retrieved menhir.20240715, menhirCST.20240715, menhirLib.20240715, menhirSdk.20240715  (cached)
⬇ retrieved chrome-trace.3.19.0, dune.3.19.0, dune-build-info.3.19.0, dune-configurator.3.19.0, dune-rpc.3.19.0, dyn.3.19.0, ocamlc-loc.3.19.0, ordering.3.19.0, stdune.3.19.0, xdg.3.19.0  (cached)
⬇ retrieved jsonrpc.1.21.0, lsp.1.21.0, ocaml-lsp-server.1.21.0  (cached)
⬇ retrieved merlin-lib.5.3-502  (cached)
⬇ retrieved ocaml-version.4.0.0  (cached)
⬇ retrieved ocaml_intrinsics_kernel.v0.17.1  (cached)
⬇ retrieved ocamlbuild.0.16.1  (cached)
⬇ retrieved ocamlfind.1.9.8  (cached)
∗ installed cmdliner.1.3.0
⬇ retrieved ocp-indent.1.8.1  (cached)
⬇ retrieved pp.2.0.0  (cached)
⬇ retrieved ppx_yojson_conv_lib.v0.17.0  (cached)
⬇ retrieved re.1.12.0  (cached)
⬇ retrieved result.1.5  (cached)
⬇ retrieved seq.base  (cached)
∗ installed seq.base
⬇ retrieved sexplib0.v0.17.0  (cached)
⬇ retrieved ocamlformat.0.26.2, ocamlformat-lib.0.26.2  (cached)
⬇ retrieved ocamlformat-rpc-lib.0.27.0  (cached)
⬇ retrieved spawn.v0.17.0  (cached)
⬇ retrieved stdio.v0.17.0  (cached)
⬇ retrieved uuseg.16.0.0  (cached)
⬇ retrieved topkg.1.0.8  (cached)
⬇ retrieved uutf.1.0.4  (cached)
⬇ retrieved yojson.2.2.2  (cached)
⬇ retrieved uucp.16.0.0  (cached)
∗ installed ocamlfind.1.9.8
∗ installed base-bytes.base
∗ installed ocamlbuild.0.16.1
∗ installed topkg.1.0.8
∗ installed uutf.1.0.4
∗ installed astring.0.8.5
∗ installed fpath.0.7.3
∗ installed dune.3.19.0
∗ installed camlp-streams.5.0.1
∗ installed csexp.1.5.2
∗ installed either.1.0.0
∗ installed fix.20250428
∗ installed jsonrpc.1.21.0
∗ installed menhirCST.20240715
∗ installed menhirLib.20240715
∗ installed menhirSdk.20240715
∗ installed ocaml-version.4.0.0
∗ installed ocaml_intrinsics_kernel.v0.17.1
∗ installed ocp-indent.1.8.1
∗ installed pp.2.0.0
∗ installed re.1.12.0
∗ installed ocamlformat-rpc-lib.0.27.0
∗ installed result.1.5
∗ installed sexplib0.v0.17.0
∗ installed spawn.v0.17.0
∗ installed dune-build-info.3.19.0
∗ installed chrome-trace.3.19.0
∗ installed ordering.3.19.0
∗ installed yojson.2.2.2
∗ installed dune-configurator.3.19.0
∗ installed xdg.3.19.0
∗ installed ppx_yojson_conv_lib.v0.17.0
∗ installed dyn.3.19.0
∗ installed ocamlc-loc.3.19.0
∗ installed stdune.3.19.0
∗ installed base.v0.17.2
∗ installed lsp.1.21.0
∗ installed uucp.16.0.0
∗ installed fiber.3.7.0
∗ installed stdio.v0.17.0
∗ installed merlin-lib.5.3-502
∗ installed dune-rpc.3.19.0
∗ installed uuseg.16.0.0
∗ installed menhir.20240715
∗ installed ocaml-lsp-server.1.21.0
∗ installed ocamlformat-lib.0.26.2
∗ installed ocamlformat.0.26.2
Done.

<><> ocp-indent.1.8.1 installed successfully ><><><><><><><><><><><><><><><><><>
=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:

   * for Emacs, add these lines to ~/.emacs:
     (add-to-list 'load-path "/home/sabine/ocaml.org/_opam/share/emacs/site-lisp")
     (require 'ocp-indent)

   * for Vim, add this line to ~/.vimrc:
     set rtp^="/home/sabine/ocaml.org/_opam/share/ocp-indent/vim"
# Run eval $(opam env) to update the current shell environment
opam install -y --deps-only --with-test --with-doc .
[WARNING] Failed checks on tailwindcss package definition from source at git+file:///home/sabine/ocaml.org#HEAD:
    error 57: Synopsis must not be empty
The following additional pinnings are required by ocamlorg.dev:
  - river.dev at git+https://github.com/aantron/river#476dc945a908a69548bddd267f143a3e5d9c8a1a
Pin and install them? [y/n] y
[river.dev] synchronised (no changes)
river is now pinned to git+https://github.com/aantron/river#476dc945a908a69548bddd267f143a3e5d9c8a1a (version dev)
[NOTE] It seems you have not updated your repositories for a while. Consider updating them with:
       opam update

The following actions will be performed:
=== install 132 packages
  ∗ alcotest              1.9.0        [required by ocamlorg]
  ∗ angstrom              0.16.1       [required by timedesc]
  ∗ asn1-combinators      0.3.2        [required by x509]
  ∗ base64                3.5.1        [required by cohttp]
  ∗ bigarray-compat       1.1.0        [required by dream]
  ∗ bigarray-overlap      0.2.1        [required by prettym]
  ∗ bigstringaf           0.10.0       [required by multipart_form, caqti, angstrom, etc.]
  ∗ bos                   0.2.1        [required by ocamlorg]
  ∗ ca-certs              1.0.1        [required by conduit-lwt-unix]
  ∗ caqti                 2.2.4        [required by dream]
  ∗ caqti-lwt             2.2.4        [required by dream]
  ∗ checkseum             0.5.2        [required by decompress]
  ∗ cmarkit               0.3.0        [required by ocamlorg]
  ∗ cohttp                6.1.0        [required by ocamlorg]
  ∗ cohttp-lwt            6.1.0        [required by cohttp-lwt-unix, river]
  ∗ cohttp-lwt-unix       6.1.0        [required by ocamlorg]
  ∗ conduit               8.0.0        [required by conduit-lwt]
  ∗ conduit-lwt           8.0.0        [required by cohttp-lwt-unix]
  ∗ conduit-lwt-unix      8.0.0        [required by cohttp-lwt-unix]
  ∗ conf-gmp              5            [required by conf-gmp-powm-sec, zarith]
  ∗ conf-gmp-powm-sec     4            [required by mirage-crypto-pk]
  ∗ conf-libev            4-12         [required by dream]
  ∗ conf-libssl           4            [required by ssl]
  ∗ conf-oniguruma        1            [required by oniguruma]
  ∗ conf-pkg-config       4            [required by conf-oniguruma]
  ∗ cppo                  1.8.0        [required by odoc, mdx, ppx_deriving]
  ∗ crunch                4.0.0        [required by ocamlorg]
  ∗ cstruct               6.2.0        [required by dream, hex]
  ∗ ctypes                0.23.0       [required by yaml]
  ∗ decompress            1.5.3        [required by dream-encoding]
  ∗ digestif              1.3.0        [required by dream]
  ∗ domain-name           0.4.1        [required by caqti, ipaddr, caqti-lwt]
  ∗ dream                 1.0.0~alpha7 [required by dream-accept, dream-encoding]
  ∗ dream-accept          0.1.0        [required by ocamlorg]
  ∗ dream-encoding        0.3.0        [required by ocamlorg]
  ∗ dream-httpaf          1.0.0~alpha3 [required by dream]
  ∗ dream-pure            1.0.0~alpha2 [required by dream]
  ∗ dune-private-libs     3.19.0       [required by dune-site]
  ∗ dune-site             3.19.0       [required by caqti]
  ∗ duration              0.2.1        [required by mirage-crypto-rng-lwt]
  ∗ eqaf                  0.10         [required by digestif, mirage-crypto]
  ∗ ezjsonm               1.3.0        [required by ocamlorg]
  ∗ faraday               0.8.2        [required by dream-httpaf]
  ∗ faraday-lwt           0.8.2        [required by faraday-lwt-unix]
  ∗ faraday-lwt-unix      0.8.2        [required by dream-httpaf]
  ∗ fmt                   0.10.0       [required by ocamlorg]
  ∗ gmap                  0.3.0        [required by x509]
  ∗ graphql               0.14.0       [required by ocamlorg]
  ∗ graphql-lwt           0.14.0       [required by dream]
  ∗ graphql_parser        0.14.0       [required by dream]
  ∗ hex                   1.5.0        [required by ezjsonm]
  ∗ hilite                0.4.0        [required by ocamlorg]
  ∗ hmap                  0.8.1        [required by dream-pure]
  ∗ http                  6.1.0        [required by cohttp, cohttp-lwt-unix]
  ∗ integers              0.7.0        [required by ctypes]
  ∗ ipaddr                5.6.0        [required by cohttp-lwt, conduit-lwt-unix]
  ∗ ipaddr-sexp           5.6.0        [required by conduit-lwt-unix]
  ∗ jsonm                 1.0.2        [required by ezjsonm]
  ∗ kdf                   1.0.0        [required by x509, tls]
  ∗ ke                    0.6          [required by multipart_form, multipart_form-lwt]
  ∗ lambdasoup            1.1.1        [required by ocamlorg]
  ∗ logs                  0.8.0        [required by ocamlorg]
  ∗ lru                   0.3.1        [required by caqti]
  ∗ lwt                   5.9.1        [required by ocamlorg]
  ∗ lwt-dllist            1.1.0        [required by caqti]
  ∗ lwt_ppx               5.9.1        [required by dream-encoding]
  ∗ lwt_ssl               1.2.0        [required by conduit-lwt-unix, dream]
  ∗ macaddr               5.6.0        [required by ipaddr]
  ∗ magic-mime            1.3.1        [required by cohttp-lwt-unix]
  ∗ markup                1.0.3        [required by dream]
  ∗ mdx                   2.5.0        [required by ocamlorg]
  ∗ mirage-clock          4.2.0        [required by dream]
  ∗ mirage-crypto         1.2.0        [required by dream]
  ∗ mirage-crypto-ec      1.2.0        [required by x509, tls]
  ∗ mirage-crypto-pk      1.2.0        [required by x509, tls]
  ∗ mirage-crypto-rng     1.2.0        [required by dream]
  ∗ mirage-crypto-rng-lwt 1.2.0        [required by dream]
  ∗ mirage-kv             6.1.1        [required by mirage-kv-mem]
  ∗ mirage-kv-mem         4.0.0        [required by ocamlorg]
  ∗ mirage-ptime          5.0.0        [required by mirage-kv-mem]
  ∗ mtime                 2.1.0        [required by caqti-lwt, caqti, mirage-crypto-rng-lwt]
  ∗ multipart_form        0.6.0        [required by dream]
  ∗ multipart_form-lwt    0.6.0        [required by dream]
  ∗ ocaml-compiler-libs   v0.17.0      [required by ppxlib]
  ∗ ocaml-syntax-shims    1.0.0        [required by alcotest]
  ∗ ocamlgraph            2.2.0        [required by opam-core]
  ∗ ocplib-endian         1.2          [required by lwt]
  ∗ odoc                  3.0.0        [required by ocamlorg, tailwindcss]
  ∗ odoc-parser           3.0.0        [required by odoc]
  ∗ ohex                  0.2.0        [required by ca-certs]
  ∗ oniguruma             0.1.2        [required by textmate-language]
  ∗ opam-core             2.3.0        [required by opam-format]
  ∗ opam-file-format      2.1.6        [required by opam-format]
  ∗ opam-format           2.3.0        [required by ocamlorg]
  ∗ optint                0.3.0        [required by mirage-kv-mem]
  ∗ ounit                 2.2.7        [required by ocamlorg]
  ∗ ounit2                2.2.7        [required by ounit]
  ∗ pecu                  0.7          [required by multipart_form]
  ∗ ppx_derivers          1.2.1        [required by ppx_deriving]
  ∗ ppx_deriving          6.0.3        [required by ocamlorg]
  ∗ ppx_deriving_yaml     0.4.0        [required by ocamlorg]
  ∗ ppx_deriving_yojson   3.9.1        [required by ocamlorg]
  ∗ ppx_import            1.11.0       [required by ocamlorg]
  ∗ ppx_sexp_conv         v0.17.0      [required by cohttp, cohttp-lwt-unix]
  ∗ ppx_stable            v0.17.0      [required by ocamlorg]
  ∗ ppxlib                0.35.0       [required by ppx_import, ppx_deriving_yaml, ppx_deriving, etc.]
  ∗ ppxlib_jane           v0.17.0      [required by ppx_sexp_conv]
  ∗ prettym               0.0.3        [required by multipart_form]
  ∗ psq                   0.2.1        [required by dream-httpaf]
  ∗ ptime                 1.2.0        [required by ocamlorg]
  ∗ river                 dev (pinned) [required by ocamlorg]
  ∗ rresult               0.7.0        [required by bos]
  ∗ sha                   1.15.4       [required by opam-core]
  ∗ ssl                   0.7.0        [required by dream]
  ∗ stdlib-shims          0.3.0        [required by alcotest]
  ∗ stringext             1.6.0        [required by cohttp]
  ∗ swhid_core            0.1          [required by opam-core]
  ∗ syndic                1.6.1        [required by ocamlorg]
  ∗ textmate-language     0.4.0        [required by hilite]
  ∗ timedesc              3.1.0        [required by ocamlorg]
  ∗ timedesc-tzdb         3.1.0        [required by timedesc]
  ∗ timedesc-tzlocal      3.1.0        [required by timedesc]
  ∗ tls                   2.0.1        [required by caqti]
  ∗ tyxml                 4.6.0        [required by odoc]
  ∗ uchar                 0.0.2        [required by markup]
  ∗ unstrctrd             0.4          [required by multipart_form]
  ∗ uri                   4.4.0        [required by ocamlorg]
  ∗ uri-sexp              4.4.0        [required by cohttp]
  ∗ x509                  1.0.6        [required by ca-certs, caqti]
  ∗ xmlm                  1.4.0        [required by ocamlorg]
  ∗ yaml                  3.2.0        [required by ppx_deriving_yaml]
  ∗ zarith                1.14         [required by mirage-crypto-pk]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved asn1-combinators.0.3.2  (cached)
⬇ retrieved angstrom.0.16.1  (cached)
⬇ retrieved alcotest.1.9.0  (cached)
⬇ retrieved base64.3.5.1  (cached)
⬇ retrieved bigarray-compat.1.1.0  (cached)
⬇ retrieved bigarray-overlap.0.2.1  (cached)
⬇ retrieved bigstringaf.0.10.0  (cached)
⬇ retrieved bos.0.2.1  (cached)
⬇ retrieved ca-certs.1.0.1  (cached)
⬇ retrieved checkseum.0.5.2  (cached)
⬇ retrieved caqti.2.2.4, caqti-lwt.2.2.4  (cached)
⬇ retrieved cmarkit.0.3.0  (cached)
⬇ retrieved conf-gmp.5  (cached)
⬇ retrieved conf-gmp-powm-sec.4  (cached)
⬇ retrieved conf-libev.4-12  (cached)
⬇ retrieved conf-libssl.4  (cached)
⬇ retrieved cohttp.6.1.0, cohttp-lwt.6.1.0, cohttp-lwt-unix.6.1.0, http.6.1.0  (cached)
∗ installed base64.3.5.1
∗ installed bigarray-compat.1.1.0
∗ installed bigstringaf.0.10.0
⬇ retrieved conduit.8.0.0, conduit-lwt.8.0.0, conduit-lwt-unix.8.0.0  (cached)
⬇ retrieved cppo.1.8.0  (cached)
∗ installed conf-gmp.5
∗ installed conf-libev.4-12
∗ installed conf-pkg-config.4
⬇ retrieved crunch.4.0.0  (cached)
⬇ retrieved cstruct.6.2.0  (cached)
⬇ retrieved ctypes.0.23.0  (cached)
∗ installed conf-gmp-powm-sec.4
∗ installed conf-libssl.4
∗ installed conf-oniguruma.1
⬇ retrieved domain-name.0.4.1  (cached)
⬇ retrieved dream.1.0.0~alpha7  (cached)
⬇ retrieved dream-accept.0.1.0  (cached)
⬇ retrieved dream-encoding.0.3.0  (cached)
∗ installed http.6.1.0
⬇ retrieved dream-httpaf.1.0.0~alpha3  (cached)
∗ installed bigarray-overlap.0.2.1
⬇ retrieved decompress.1.5.3  (cached)
∗ installed domain-name.0.4.1
⬇ retrieved dream-pure.1.0.0~alpha2  (cached)
⬇ retrieved duration.0.2.1  (cached)
⬇ retrieved eqaf.0.10  (cached)
⬇ retrieved ezjsonm.1.3.0  (cached)
⬇ retrieved faraday.0.8.2, faraday-lwt.0.8.2, faraday-lwt-unix.0.8.2  (cached)
⬇ retrieved fmt.0.10.0  (cached)
⬇ retrieved gmap.0.3.0  (cached)
⬇ retrieved graphql.0.14.0, graphql-lwt.0.14.0, graphql_parser.0.14.0  (cached)
⬇ retrieved hex.1.5.0  (cached)
⬇ retrieved hilite.0.4.0  (cached)
⬇ retrieved hmap.0.8.1  (cached)
⬇ retrieved integers.0.7.0  (cached)
⬇ retrieved ipaddr.5.6.0, ipaddr-sexp.5.6.0, macaddr.5.6.0  (cached)
∗ installed duration.0.2.1
∗ installed gmap.0.3.0
⬇ retrieved jsonm.1.0.2  (cached)
∗ installed faraday.0.8.2
⬇ retrieved kdf.1.0.0  (cached)
⬇ retrieved ke.0.6  (cached)
⬇ retrieved lambdasoup.1.1.1  (cached)
⬇ retrieved logs.0.8.0  (cached)
⬇ retrieved lru.0.3.1  (cached)
⬇ retrieved lwt.5.9.1, lwt_ppx.5.9.1  (cached)
⬇ retrieved lwt-dllist.1.1.0  (cached)
⬇ retrieved lwt_ssl.1.2.0  (cached)
⬇ retrieved magic-mime.1.3.1  (cached)
⬇ retrieved markup.1.0.3  (cached)
∗ installed macaddr.5.6.0
∗ installed hmap.0.8.1
∗ installed eqaf.0.10
∗ installed cppo.1.8.0
⬇ retrieved mdx.2.5.0  (cached)
⬇ retrieved digestif.1.3.0  (cached)
∗ installed lwt-dllist.1.1.0
⬇ retrieved mirage-clock.4.2.0  (cached)
⬇ retrieved mirage-kv.6.1.1  (cached)
⬇ retrieved mirage-kv-mem.4.0.0  (cached)
⬇ retrieved mirage-ptime.5.0.0  (cached)
⬇ retrieved mtime.2.1.0  (cached)
⬇ retrieved multipart_form.0.6.0, multipart_form-lwt.0.6.0  (cached)
⬇ retrieved ocaml-compiler-libs.v0.17.0  (cached)
⬇ retrieved ocaml-syntax-shims.1.0.0  (cached)
∗ installed mirage-clock.4.2.0
⬇ retrieved ocamlgraph.2.2.0  (cached)
⬇ retrieved dune-private-libs.3.19.0, dune-site.3.19.0  (cached)
∗ installed cmarkit.0.3.0
∗ installed fmt.0.10.0
∗ installed jsonm.1.0.2
∗ installed magic-mime.1.3.1
∗ installed ipaddr.5.6.0
⬇ retrieved mirage-crypto.1.2.0, mirage-crypto-ec.1.2.0, mirage-crypto-pk.1.2.0, mirage-crypto-rng.1.2.0, mirage-crypto-rng-lwt.1.2.0  (cached)
∗ installed digestif.1.3.0
∗ installed mtime.2.1.0
∗ installed ocaml-compiler-libs.v0.17.0
∗ installed ocaml-syntax-shims.1.0.0
⬇ retrieved ocplib-endian.1.2  (cached)
∗ installed ocamlgraph.2.2.0
⬇ retrieved odoc.3.0.0, odoc-parser.3.0.0  (cached)
∗ installed cstruct.6.2.0
∗ installed graphql_parser.0.14.0
∗ installed ke.0.6
⬇ retrieved ohex.0.2.0  (cached)
∗ installed angstrom.0.16.1
⬇ retrieved oniguruma.0.1.2  (cached)
∗ installed ocplib-endian.1.2
∗ installed mirage-crypto.1.2.0
⬇ retrieved opam-core.2.3.0, opam-format.2.3.0  (cached)
∗ installed hex.1.5.0
⬇ retrieved opam-file-format.2.1.6  (cached)
∗ installed ohex.0.2.0
⬇ retrieved optint.0.3.0  (cached)
⬇ retrieved ounit.2.2.7, ounit2.2.2.7  (cached)
⬇ retrieved pecu.0.7  (cached)
⬇ retrieved ppx_derivers.1.2.1  (cached)
∗ installed kdf.1.0.0
⬇ retrieved ppx_deriving.6.0.3  (cached)
⬇ retrieved ppx_deriving_yaml.0.4.0  (cached)
⬇ retrieved ppx_deriving_yojson.3.9.1  (cached)
⬇ retrieved ppx_import.1.11.0  (cached)
⬇ retrieved ppx_sexp_conv.v0.17.0  (cached)
⬇ retrieved ppx_stable.v0.17.0  (cached)
⬇ retrieved ppxlib_jane.v0.17.0  (cached)
⬇ retrieved prettym.0.0.3  (cached)
⬇ retrieved psq.0.2.1  (cached)
⬇ retrieved ptime.1.2.0  (cached)
⬇ retrieved rresult.0.7.0  (cached)
∗ installed ppx_derivers.1.2.1
∗ installed ezjsonm.1.3.0
∗ installed odoc-parser.3.0.0
⬇ retrieved sha.1.15.4  (cached)
⬇ retrieved ssl.0.7.0  (cached)
∗ installed oniguruma.0.1.2
∗ installed pecu.0.7
⬇ retrieved stdlib-shims.0.3.0  (cached)
⬇ retrieved stringext.1.6.0  (cached)
⬇ retrieved swhid_core.0.1  (cached)
∗ installed optint.0.3.0
⬇ retrieved ppxlib.0.35.0  (cached)
∗ installed psq.0.2.1
∗ installed stdlib-shims.0.3.0
∗ installed opam-file-format.2.1.6
∗ installed stringext.1.6.0
⬇ retrieved syndic.1.6.1  (cached)
∗ installed swhid_core.0.1
∗ installed prettym.0.0.3
⬇ retrieved textmate-language.0.4.0  (cached)
⬇ retrieved timedesc.3.1.0, timedesc-tzdb.3.1.0, timedesc-tzlocal.3.1.0  (cached)
∗ installed dune-private-libs.3.19.0
∗ installed ptime.1.2.0
∗ installed rresult.0.7.0
∗ installed ssl.0.7.0
∗ installed checkseum.0.5.2
∗ installed lru.0.3.1
∗ installed alcotest.1.9.0
∗ installed integers.0.7.0
∗ installed ounit2.2.2.7
⬇ retrieved tls.2.0.1  (cached)
⬇ retrieved river.dev  (no changes)
⬇ retrieved tyxml.4.6.0  (cached)
∗ installed ounit.2.2.7
∗ installed mirage-ptime.5.0.0
∗ installed textmate-language.0.4.0
∗ installed lwt.5.9.1
∗ installed crunch.4.0.0
∗ installed sha.1.15.4
⬇ retrieved uchar.0.0.2  (cached)
⬇ retrieved unstrctrd.0.4  (cached)
∗ installed asn1-combinators.0.3.2
⬇ retrieved uri.4.4.0, uri-sexp.4.4.0  (cached)
∗ installed graphql.0.14.0
∗ installed timedesc-tzdb.3.1.0
∗ installed timedesc-tzlocal.3.1.0
⬇ retrieved x509.1.0.6  (cached)
∗ installed faraday-lwt.0.8.2
∗ installed lwt_ssl.1.2.0
∗ installed mirage-kv.6.1.1
⬇ retrieved xmlm.1.4.0  (cached)
⬇ retrieved yaml.3.2.0  (cached)
⬇ retrieved zarith.1.14  (cached)
∗ installed graphql-lwt.0.14.0
∗ installed hilite.0.4.0
∗ installed unstrctrd.0.4
∗ installed faraday-lwt-unix.0.8.2
∗ installed uchar.0.0.2
∗ installed mirage-kv-mem.4.0.0
∗ installed decompress.1.5.3
∗ installed dune-site.3.19.0
∗ installed timedesc.3.1.0
∗ installed logs.0.8.0
∗ installed uri.4.4.0
∗ installed xmlm.1.4.0
∗ installed markup.1.0.3
∗ installed mirage-crypto-rng.1.2.0
∗ installed multipart_form.0.6.0
∗ installed lambdasoup.1.1.1
∗ installed mirage-crypto-rng-lwt.1.2.0
∗ installed syndic.1.6.1
∗ installed multipart_form-lwt.0.6.0
∗ installed tyxml.4.6.0
∗ installed zarith.1.14
∗ installed mdx.2.5.0
∗ installed mirage-crypto-pk.1.2.0
∗ installed opam-core.2.3.0
∗ installed bos.0.2.1
∗ installed ctypes.0.23.0
∗ installed mirage-crypto-ec.1.2.0
∗ installed yaml.3.2.0
∗ installed x509.1.0.6
∗ installed ca-certs.1.0.1
∗ installed opam-format.2.3.0
∗ installed odoc.3.0.0
∗ installed tls.2.0.1
∗ installed ppxlib.0.35.0
∗ installed caqti.2.2.4
∗ installed caqti-lwt.2.2.4
∗ installed ppxlib_jane.v0.17.0
∗ installed ppx_deriving_yaml.0.4.0
∗ installed ppx_stable.v0.17.0
∗ installed ppx_import.1.11.0
∗ installed lwt_ppx.5.9.1
∗ installed ppx_deriving.6.0.3
∗ installed ppx_sexp_conv.v0.17.0
∗ installed dream-pure.1.0.0~alpha2
∗ installed ppx_deriving_yojson.3.9.1
∗ installed ipaddr-sexp.5.6.0
∗ installed uri-sexp.4.4.0
∗ installed dream-httpaf.1.0.0~alpha3
∗ installed conduit.8.0.0
∗ installed cohttp.6.1.0
∗ installed conduit-lwt.8.0.0
∗ installed dream.1.0.0~alpha7
∗ installed cohttp-lwt.6.1.0
∗ installed conduit-lwt-unix.8.0.0
∗ installed dream-encoding.0.3.0
∗ installed dream-accept.0.1.0
∗ installed cohttp-lwt-unix.6.1.0
∗ installed river.dev
Done.
# Run eval $(opam env) to update the current shell environment
opam exec -- dune build --root .
######################################################################## 100.0%
######################################################################## 100.0%
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 1501ms.
######################################################################## 100.0%
######################################################################## 100.0%
real    4m7.485s
user    15m8.991s
sys     4m40.868s

@sabine sabine mentioned this pull request Aug 28, 2025
16 tasks
@cuihtlauac
Copy link
Collaborator

cuihtlauac commented Aug 28, 2025

Here is an update on the docker build issue I'm facing in Ubuntu 25.04. I'm using a simplified set-up:

Dockerfile:

FROM alpine:3.21 AS build

RUN apk -U upgrade --no-cache && apk add --no-cache curl

RUN curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh

Makefile:

docker: Dockerfile
	docker build --no-cache --progress=plaisetup $< .

This fails in my setup. However, if I replace -6 by -4, it succeeds.

Here is the error log:

bidon>make                                                              default
docker build --no-cache --progress=plain -f Dockerfile .
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 223B done
#1 DONE 0.0s

#2 [internal] load metadata for docker.io/library/alpine:3.21
#2 DONE 0.0s

#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [1/3] FROM docker.io/library/alpine:3.21
#4 CACHED

#5 [2/3] RUN apk -U upgrade --no-cache && apk add --no-cache curl
#5 0.111 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
#5 0.240 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
#5 0.432 (1/3) Upgrading busybox (1.37.0-r12 -> 1.37.0-r13)
#5 0.475 Executing busybox-1.37.0-r13.post-upgrade
#5 0.490 (2/3) Upgrading busybox-binsh (1.37.0-r12 -> 1.37.0-r13)
#5 0.503 (3/3) Upgrading ssl_client (1.37.0-r12 -> 1.37.0-r13)
#5 0.515 Executing busybox-1.37.0-r13.trigger
#5 0.519 OK: 7 MiB in 15 packages
#5 0.562 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
#5 0.694 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
#5 0.880 (1/9) Installing brotli-libs (1.1.0-r2)
#5 0.914 (2/9) Installing c-ares (1.34.5-r0)
#5 0.931 (3/9) Installing libunistring (1.2-r0)
#5 0.956 (4/9) Installing libidn2 (2.3.7-r0)
#5 0.977 (5/9) Installing nghttp2-libs (1.64.0-r0)
#5 0.990 (6/9) Installing libpsl (0.21.5-r3)
#5 1.004 (7/9) Installing zstd-libs (1.5.6-r2)
#5 1.026 (8/9) Installing libcurl (8.12.1-r1)
#5 1.045 (9/9) Installing curl (8.12.1-r1)
#5 1.081 Executing busybox-1.37.0-r13.trigger
#5 1.085 OK: 12 MiB in 24 packages
#5 DONE 1.1s

#6 [3/3] RUN curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh
#6 12.16 * Could not resolve host: github.com
#6 12.16 * shutting down connection #0
#6 12.16 curl: (6) Could not resolve host: github.com
#6 ERROR: process "/bin/sh -c curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh" did not complete successfully: exit code: 6
------
 > [3/3] RUN curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh:
12.16 * Could not resolve host: github.com
12.16 * shutting down connection #0
12.16 curl: (6) Could not resolve host: github.com
------
Dockerfile:5
--------------------
   3 |     RUN apk -U upgrade --no-cache && apk add --no-cache curl
   4 |
   5 | >>> RUN curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh
   6 |
--------------------
ERROR: failed to solve: process "/bin/sh -c curl -v -6 -sSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v1/install.sh" did not complete successfully: exit code: 6
make: *** [Makefile:2: docker] Error 1

This is pretty similar to the error I observed in ocaml.org docker build in my machine. I also observe that if neither -4 nor -6 are present, it fails the same way. But, not always! Most often it fails, but once in a while, it is successful.

Here is my current understanding of the problem

  • curl needs to do a GET on some GitHub host, DNS fails
  • Failure is frequent, but does not always take place
  • Using
    • curl 8.12.1
    • Alpine 3.21 (using musl)
    • docker 27.5.1
    • ubuntu 25.04

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants