Symptom
Intermittent failures of the ubuntu Build project step with:
File "tool/data-packer/lib/dune", line 17, characters 2-17:
Error: Library "hilite.markdown" not found.
make: *** [Makefile:9: all] Error 1
macOS is unaffected. It clears on a plain re-run. Seen at least twice:
The identical tree passes on a PR check and then fails on the follow-up main push, which points to an environmental/cache flake rather than a code problem.
Root cause
ocamlorg.opam depends on hilite via an unreleased git pin:
"hilite" {>= "0.6.0"}
...
pin-depends: [
[ "hilite.0.6.0" "git+https://github.com/patricoferris/hilite#f5368558f765ff6c884fda68acf4d4e9256970b4" ]
]
But there is no hilite 0.6.0. The latest release in ocaml/opam-repository is 0.5.0, and upstream has no 0.6.0/v0.6.0 tag. The pinned commit f5368558 is v0.5.0 + 17 commits and adds the MDX mode to hilite's markdown backend (src/markdown/*) — i.e. the hilite.markdown sublibrary that tool/data-packer/lib/dune consumes. The pin was introduced in #3593 ("Use Hilite's new ocaml-mdx support").
Building a git-pinned package in CI is cache-fragile: the git source is re-fetched/re-resolved rather than restored from an immutable, content-addressed tarball, so hilite.markdown occasionally isn't present at dune build time.
Proposed fix
- Cut a proper hilite 0.6.0 release to
ocaml/opam-repository, containing the MDX markdown backend (v0.5.0..f5368558). This is an upstream action by the hilite maintainer (patricoferris).
- Once released, drop the git pin here: remove the
pin-depends entry for hilite.0.6.0 and keep hilite {>= "0.6.0"} resolving from opam-repository.
That makes the build reproducible and removes the flake.
Workaround until then
Re-run the failed ubuntu job (gh run rerun <id> --failed).
Symptom
Intermittent failures of the ubuntu Build project step with:
macOS is unaffected. It clears on a plain re-run. Seen at least twice:
mainpush CI on the docs: note Git LFS workaround for pushing to contributor forks #3758 merge commit (run33375102857) — failed, green on re-run.The identical tree passes on a PR check and then fails on the follow-up
mainpush, which points to an environmental/cache flake rather than a code problem.Root cause
ocamlorg.opamdepends on hilite via an unreleased git pin:But there is no hilite 0.6.0. The latest release in
ocaml/opam-repositoryis 0.5.0, and upstream has no0.6.0/v0.6.0tag. The pinned commitf5368558isv0.5.0+ 17 commits and adds the MDX mode to hilite's markdown backend (src/markdown/*) — i.e. thehilite.markdownsublibrary thattool/data-packer/lib/duneconsumes. The pin was introduced in #3593 ("Use Hilite's new ocaml-mdx support").Building a git-pinned package in CI is cache-fragile: the git source is re-fetched/re-resolved rather than restored from an immutable, content-addressed tarball, so
hilite.markdownoccasionally isn't present atdune buildtime.Proposed fix
ocaml/opam-repository, containing the MDX markdown backend (v0.5.0..f5368558). This is an upstream action by the hilite maintainer (patricoferris).pin-dependsentry forhilite.0.6.0and keephilite {>= "0.6.0"}resolving from opam-repository.That makes the build reproducible and removes the flake.
Workaround until then
Re-run the failed ubuntu job (
gh run rerun <id> --failed).