My aggregated monorepo of OCaml code, automaintained
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add build failure analysis: 114 sampled from 1,146 root failures

Each failure has a markdown file with:
- Package name and version
- Error category
- Actual error lines from the build log
- Root cause explanation
- Suggested fix (opam constraints, depexts, patches)

Major categories:
- ~20 missing system deps (not in Debian Bookworm)
- ~18 missing OCaml deps (cascading failures)
- ~15 compiler incompatibilities (OCaml 5.x API changes)
- ~15 dependency API changes (cmdliner, lwt, tyxml, etc.)
- ~8 build script bugs
- ~3 broken source URLs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+2552
+15
docs/failures/OCADml.md
··· 1 + # OCADml.0.2.1 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "lib/dune", line 4, characters 12-18: 8 + 4 | (libraries cairo2)) 9 + ^^^^^^ 10 + Error: Library "cairo2" not found. 11 + ``` 12 + 13 + **Root cause:** The package depends on the `cairo2` OCaml library at build time, but this dependency is not installed. The `cairo2` library (ocaml-cairo bindings) requires the system library `libcairo2-dev` and the opam package `cairo2`. 14 + 15 + **Suggested fix:** Add `"cairo2"` to the `depends` field in the opam file. If it is already listed, check that the solver is including it. The `cairo2` opam package itself requires the `libcairo2-dev` depext.
+15
docs/failures/OSCADml.md
··· 1 + # OSCADml.0.2.1 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "lib/dune", line 4, characters 19-25: 8 + 4 | (libraries OCADml cairo2 unix)) 9 + ^^^^^^ 10 + Error: Library "cairo2" not found. 11 + ``` 12 + 13 + **Root cause:** Same as OCADml -- the `cairo2` OCaml library is not installed. OSCADml depends on both OCADml and cairo2. 14 + 15 + **Suggested fix:** Add `"cairo2"` to the `depends` field in the opam file. The `cairo2` opam package requires the `libcairo2-dev` depext.
+65
docs/failures/README.md
··· 1 + # Build Failure Analysis 2 + 3 + Analysis of 114 sampled root failures from 1,146 total (10% sample). 4 + 5 + ## Summary by Category 6 + 7 + | Category | Count | Description | 8 + |----------|-------|-------------| 9 + | Missing system dep | ~20 | System library/tool not available in Debian Bookworm | 10 + | Missing OCaml dep (cascade) | ~18 | Dep not installed because it failed to build upstream | 11 + | Compiler incompatibility | ~15 | Package uses OCaml APIs removed in newer versions | 12 + | Dependency API change | ~15 | Breaking change in a dependency (cmdliner, lwt, tyxml, etc.) | 13 + | Build script bug | ~8 | Install script, C compilation, or build system issues | 14 + | Source download failure | ~3 | Source URL broken or SSL certificate expired | 15 + | Infra issue | ~2 | opam-build internal crash | 16 + 17 + ## Common Root Causes 18 + 19 + ### 1. Compiler incompatibility (OCaml 5.x) 20 + Many older packages use APIs removed in OCaml 5.0+: 21 + - `Result.result` → use `result` (stdlib since 4.08) 22 + - `String.uppercase` → `String.uppercase_ascii` 23 + - `Pervasives` → `Stdlib` 24 + - `compiler-libs` internal changes 25 + 26 + **Fix:** Add `ocaml-version` upper bound constraint in opam file. 27 + 28 + ### 2. cmdliner >= 1.1.0 breaking changes 29 + `Term.eval`, `Term.default_exits` etc. removed. 30 + Affects: checkseum, hlarp, mastodon-archive-viewer, ocamlformat, etc. 31 + 32 + **Fix:** Add `cmdliner { < "1.1.0" }` constraint or update code. 33 + 34 + ### 3. Missing system deps not in Debian Bookworm 35 + - Python 2.7 (EOL) — conf-python-2-7 36 + - Old LLVM versions (3.x, 4.x) — conf-bap-llvm 37 + - libfswatch — not packaged in Debian 38 + - Old Rust editions — conf-rust-2024 39 + 40 + **Fix:** Add `available: false` or OS version constraint. 41 + 42 + ### 4. Missing depexts 43 + Some packages need system deps not declared in their opam files: 44 + - lablgl needs `freeglut3-dev` 45 + - lablgtk needs `x11proto-dev`, `shared-mime-info` 46 + - raylib needs X11 dev packages 47 + 48 + **Fix:** Add `depexts` field to opam file. 49 + 50 + ### 5. Cascading failures from key packages 51 + A few root failures cause many downstream cascades: 52 + - lablgtk3 → coqide, why3-ide, lablgtk3-sourceview3 53 + - bap-llvm → all bap-* packages 54 + - eliom → ocsigen-start 55 + - metapp → metaquot, traverse, refl 56 + - js_of_ocaml-compiler → cohttp-lwt-jsoo, fmlib_js, gitlab-jsoo 57 + 58 + ### 6. Dependency API changes 59 + Packages pinned to old dep versions that changed APIs: 60 + - lwt 5.x removed `Lwt_stream.Error` 61 + - tyxml changed type signatures 62 + - cstruct removed old functions 63 + - menhir changed API 64 + 65 + **Fix:** Add version constraints on deps.
+15
docs/failures/advi.md
··· 1 + # advi.2.0.0 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/dune", line 8, characters 46-65: 8 + 8 | (libraries str unix graphics camlimages.core camlimages.graphics 9 + ^^^^^^^^^^^^^^^^^^^ 10 + Error: Library "camlimages.graphics" not found. 11 + ``` 12 + 13 + **Root cause:** The `camlimages.graphics` sub-library is not available. The `camlimages` package builds the `graphics` sub-library only when the `graphics` OCaml library is installed. On modern OCaml (>= 4.09), `graphics` is a separate opam package. 14 + 15 + **Suggested fix:** Add `"graphics"` and ensure `"camlimages"` is built with graphics support in the opam `depends` field. May also need an upper bound on OCaml version or a version constraint on `camlimages` that provides the graphics sub-library.
+15
docs/failures/aws-s3-async.4.4.0.md
··· 1 + # aws-s3-async.4.4.0 2 + 3 + **Error category:** Dependency API incompatibility (cmdliner) 4 + 5 + **Error lines:** 6 + ``` 7 + File "cli/cli.ml", line 82, characters 4-13: 8 + 82 | Term.info "cp" ~doc:"Copy files to and from S3" 9 + ^^^^^^^^^ 10 + Error: Unbound value Term.info 11 + ``` 12 + 13 + **Root cause:** The package uses `Term.info` from cmdliner, which was removed in cmdliner >= 1.1.0. In newer cmdliner, `Term.info` was replaced by `Cmd.info`. 14 + 15 + **Suggested fix:** Add an upper bound on cmdliner in the opam file: `"cmdliner" {< "1.1.0"}`. Alternatively, update the source code to use the new cmdliner API.
+15
docs/failures/aws-s3-async.4.5.1.md
··· 1 + # aws-s3-async.4.5.1 2 + 3 + **Error category:** Dependency API incompatibility (cmdliner) 4 + 5 + **Error lines:** 6 + ``` 7 + File "cli/cli.ml", line 82, characters 4-13: 8 + 82 | Term.info "cp" ~doc:"Copy files to and from S3" 9 + ^^^^^^^^^ 10 + Error: Unbound value Term.info 11 + ``` 12 + 13 + **Root cause:** Same issue as aws-s3-async.4.4.0. The package uses the old cmdliner `Term.info` API which was removed in cmdliner >= 1.1.0. 14 + 15 + **Suggested fix:** Add an upper bound on cmdliner: `"cmdliner" {< "1.1.0"}`. Alternatively, update the source code to the new cmdliner `Cmd` API.
+18
docs/failures/bap-arm.md
··· 1 + # bap-arm.2.5.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-primus' not found 9 + [ERROR] The compilation of bap-arm.2.5.0 failed at "./configure --prefix=/home/opam/.opam/default --enable-arm". 10 + ``` 11 + 12 + ## Root cause 13 + 14 + The `./configure` script runs `ocamlfind` to check for the `bap-primus` package, which is not installed. The BAP ecosystem uses a monorepo-style build where many `bap-*` packages share configure-time checks. The `bap-primus` dependency was likely not solved into the install plan, or failed to build in a prior layer. 15 + 16 + ## Suggested fix 17 + 18 + Ensure `bap-primus` is listed as a build dependency in the opam file. If it already is, the root failure is in the `bap-primus` package itself -- fix that first and this package will follow.
+18
docs/failures/bap-constant-tracker.md
··· 1 + # bap-constant-tracker.2.3.0 2 + 3 + **Error category:** Build infrastructure error (opam-build internal crash) 4 + 5 + ## Error 6 + 7 + ``` 8 + opam-build: internal error, uncaught exception: 9 + Sys_error("/home/opam/.opam/repo/default/packages/guardian/guardian.0.0.5: No such file or directory") 10 + ``` 11 + 12 + ## Root cause 13 + 14 + The custom `opam-build` wrapper crashed with an internal `Sys_error` before the package build even started. It tried to read a package directory (`guardian.0.0.5`) that does not exist in the opam repository overlay inside the container. This is a corrupted or incomplete repository state in the build layer. 15 + 16 + ## Suggested fix 17 + 18 + Regenerate the opam repository overlay in the base layer, ensuring all package directories are present. This is not a package-level issue -- it is a build infrastructure problem with the repository snapshot.
+19
docs/failures/bap-primus-greedy-scheduler.md
··· 1 + # bap-primus-greedy-scheduler.2.5.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-primus' not found 9 + [ERROR] The compilation of bap-primus-greedy-scheduler.2.5.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-primus-greedy". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + Same as `bap-arm`: the `bap-primus` ocamlfind package is not installed. This is a cascading failure from whatever prevented `bap-primus` from being built or included in the install plan. 16 + 17 + ## Suggested fix 18 + 19 + Fix the `bap-primus` package build first. This package will then succeed.
+18
docs/failures/bap-primus-loader.md
··· 1 + # bap-primus-loader.2.3.0 2 + 3 + **Error category:** Build infrastructure error (opam-build internal crash) 4 + 5 + ## Error 6 + 7 + ``` 8 + opam-build: internal error, uncaught exception: 9 + Sys_error("/home/opam/.opam/repo/default/packages/orthologic-coq: No such file or directory") 10 + ``` 11 + 12 + ## Root cause 13 + 14 + The custom `opam-build` wrapper crashed before the package build started. It attempted to traverse a package directory (`orthologic-coq`) that does not exist in the repository overlay. This is identical in nature to the `bap-constant-tracker` failure -- a corrupted or incomplete opam repository state. 15 + 16 + ## Suggested fix 17 + 18 + Regenerate the opam repository overlay in the base layer. This is a build infrastructure problem, not a package-level issue.
+19
docs/failures/bap-primus-mark-visited.md
··· 1 + # bap-primus-mark-visited.2.3.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-primus-track-visited' not found 9 + [ERROR] The compilation of bap-primus-mark-visited.2.3.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-primus-mark-visited". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + The configure script requires the `bap-primus-track-visited` ocamlfind package, which is not installed. This is a cascading failure from the BAP dependency chain. 16 + 17 + ## Suggested fix 18 + 19 + Ensure `bap-primus-track-visited` is in the opam depends. Fix the upstream BAP dependency that provides this package first.
+19
docs/failures/bap-primus-symbolic-executor.md
··· 1 + # bap-primus-symbolic-executor.2.3.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-primus-track-visited' not found 9 + [ERROR] The compilation of bap-primus-symbolic-executor.2.3.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-primus-symbolic-executor". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + Same as `bap-primus-mark-visited`: the `bap-primus-track-visited` ocamlfind package is missing. Cascading BAP dependency failure. 16 + 17 + ## Suggested fix 18 + 19 + Fix the upstream BAP dependency that provides `bap-primus-track-visited` first.
+19
docs/failures/bap-primus-x86.md
··· 1 + # bap-primus-x86.2.4.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-x86-cpu' not found 9 + [ERROR] The compilation of bap-primus-x86.2.4.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-primus-x86". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + The `bap-x86-cpu` ocamlfind package is not installed. This is a cascading failure -- likely `bap-x86` (which provides `bap-x86-cpu`) failed to build first. 16 + 17 + ## Suggested fix 18 + 19 + Fix `bap-x86` first. This package depends on it transitively.
+19
docs/failures/bap-relocatable.md
··· 1 + # bap-relocatable.2.4.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-x86-cpu' not found 9 + [ERROR] The compilation of bap-relocatable.2.4.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-relocatable". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + Same as `bap-primus-x86`: the `bap-x86-cpu` ocamlfind package is not installed. Cascading failure from `bap-x86`. 16 + 17 + ## Suggested fix 18 + 19 + Fix `bap-x86` first.
+19
docs/failures/bap-thumb.md
··· 1 + # bap-thumb.2.5.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-arm' not found 9 + [ERROR] The compilation of bap-thumb.2.5.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-thumb". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + The `bap-arm` ocamlfind package is not installed. Since `bap-arm` itself fails (missing `bap-primus`), this is a cascading failure down the BAP dependency chain. 16 + 17 + ## Suggested fix 18 + 19 + Fix `bap-primus` and `bap-arm` first. This package depends on `bap-arm`.
+19
docs/failures/bap-x86.md
··· 1 + # bap-x86.2.4.0 2 + 3 + **Error category:** Missing OCaml dependency (dep not installed in layer) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlfind: Package `bap-llvm' not found 9 + [ERROR] The compilation of bap-x86.2.4.0 failed at 10 + "./configure --prefix=/home/opam/.opam/default --enable-x86". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + The `bap-llvm` ocamlfind package is not installed. This is the root cause for the cascading `bap-x86-cpu` failures in `bap-primus-x86` and `bap-relocatable`. The `bap-llvm` package likely failed to build or was not included in the solver plan. 16 + 17 + ## Suggested fix 18 + 19 + Ensure `bap-llvm` is in the install plan and builds successfully. It may require LLVM system libraries via depexts (e.g., `libllvm-dev`).
+29
docs/failures/cairo2-gtk.md
··· 1 + # cairo2-gtk.0.6.5 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Package 'xproto', required by 'xau', not found 9 + Package 'renderproto', required by 'xrender', not found 10 + Package 'kbproto', required by 'x11', not found 11 + Package 'xextproto', required by 'xext', not found 12 + Package 'shared-mime-info', required by 'gdk-pixbuf-2.0', not found 13 + Error: command exited with code 1: /usr/bin/pkgconf --personality x86_64-pc-linux-gnu --cflags gtk+-2.0 14 + [ERROR] The compilation of cairo2-gtk.0.6.5 failed at "dune build -p cairo2-gtk -j 39". 15 + ``` 16 + 17 + ## Root cause 18 + 19 + Same as lablgtk: missing X11 protocol headers and shared-mime-info, preventing pkg-config from resolving GTK+ 2.0 dependencies. 20 + 21 + ## Suggested fix 22 + 23 + Add missing depexts: 24 + 25 + ``` 26 + depexts: [ 27 + ["x11proto-dev" "shared-mime-info" "libgtk2.0-dev"] {os-family = "debian"} 28 + ] 29 + ```
+29
docs/failures/cairo2-pango.md
··· 1 + # cairo2-pango.0.6.1 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Package 'xproto', required by 'xau', not found 9 + Package 'renderproto', required by 'xrender', not found 10 + Package 'kbproto', required by 'x11', not found 11 + Package 'xextproto', required by 'xext', not found 12 + Package 'shared-mime-info', required by 'gdk-pixbuf-2.0', not found 13 + Error: command exited with code 1: /usr/bin/pkgconf --personality x86_64-pc-linux-gnu --cflags gtk+-2.0 14 + [ERROR] The compilation of cairo2-pango.0.6.1 failed at "dune build -p cairo2-pango -j 39". 15 + ``` 16 + 17 + ## Root cause 18 + 19 + Same as cairo2-gtk and lablgtk: missing X11 protocol development packages and shared-mime-info needed for GTK+ 2.0 pkg-config resolution. 20 + 21 + ## Suggested fix 22 + 23 + Add missing depexts: 24 + 25 + ``` 26 + depexts: [ 27 + ["x11proto-dev" "shared-mime-info" "libgtk2.0-dev"] {os-family = "debian"} 28 + ] 29 + ```
+17
docs/failures/catala-format.md
··· 1 + # catala-format.0.1.0 2 + 3 + **Error category:** Missing system dependency 4 + 5 + **Error lines:** 6 + ``` 7 + make-wrapper.sh: 73: envsubst: not found 8 + ``` 9 + 10 + **Root cause:** The build script `make-wrapper.sh` calls `envsubst`, which is part of the `gettext` package, but it is not installed in the build environment. 11 + 12 + **Suggested fix:** Add a depext for `gettext` (Debian package: `gettext`) in the opam file: 13 + ``` 14 + depexts: [ 15 + ["gettext"] {os-distribution = "debian"} 16 + ] 17 + ```
+14
docs/failures/ccbg.md
··· 1 + # ccbg.0.1 2 + 3 + **Error category:** Source download failure 4 + 5 + **Error lines:** 6 + ``` 7 + [ERROR] Failed to get sources of ccbg.0.1: curl failed 8 + download failed... https://git.zapashcanon.fr/zapashcanon/ccbg/archive/0.1.tar.gz 9 + (curl failed: exited with code 60) 10 + ``` 11 + 12 + **Root cause:** curl exit code 60 indicates an SSL certificate verification failure. The source archive host (`git.zapashcanon.fr`) has an untrusted or expired TLS certificate. 13 + 14 + **Suggested fix:** The upstream source URL needs to be updated in the opam repository to point to a working mirror, or the host's certificate needs to be renewed. This is an upstream/opam-repository metadata issue.
+31
docs/failures/checkseum.0.0.2.md
··· 1 + # checkseum.0.0.2 2 + 3 + **Build dir:** build-e8e97ac4367e 4 + 5 + **Error category:** Dependency API incompatibility (cmdliner) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "bin/crc32c.ml", line 36, characters 14-32: 11 + 36 | let exits = Term.default_exits in 12 + ^^^^^^^^^^^^^^^^^^ 13 + Error: Unbound value Term.default_exits 14 + 15 + File "bin/adler32.ml", line 36, characters 14-32: 16 + 36 | let exits = Term.default_exits in 17 + ^^^^^^^^^^^^^^^^^^ 18 + Error: Unbound value Term.default_exits 19 + ``` 20 + 21 + ## Root cause 22 + 23 + `Term.default_exits` was removed in cmdliner >= 1.1.0. This old version of checkseum uses the pre-1.1.0 cmdliner API. 24 + 25 + ## Suggested fix 26 + 27 + Add an upper-bound version constraint on cmdliner in the opam file: 28 + 29 + ``` 30 + depends: [ "cmdliner" {< "1.1.0"} ] 31 + ```
+36
docs/failures/checkseum.0.1.0.md
··· 1 + # checkseum.0.1.0 2 + 3 + **Build dir:** build-5ceaedce734c 4 + 5 + **Error category:** Dependency API incompatibility (cmdliner) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "bin/crc32.ml", line 41, characters 14-32: 11 + 41 | let exits = Term.default_exits in 12 + ^^^^^^^^^^^^^^^^^^ 13 + Error: Unbound value Term.default_exits 14 + 15 + File "bin/adler32.ml", line 41, characters 14-32: 16 + 41 | let exits = Term.default_exits in 17 + ^^^^^^^^^^^^^^^^^^ 18 + Error: Unbound value Term.default_exits 19 + 20 + File "bin/crc32c.ml", line 41, characters 14-32: 21 + 41 | let exits = Term.default_exits in 22 + ^^^^^^^^^^^^^^^^^^ 23 + Error: Unbound value Term.default_exits 24 + ``` 25 + 26 + ## Root cause 27 + 28 + `Term.default_exits` was removed in cmdliner >= 1.1.0. This old version of checkseum uses the pre-1.1.0 cmdliner API. 29 + 30 + ## Suggested fix 31 + 32 + Add an upper-bound version constraint on cmdliner in the opam file: 33 + 34 + ``` 35 + depends: [ "cmdliner" {< "1.1.0"} ] 36 + ```
+31
docs/failures/clangml.3.5.0.md
··· 1 + # clangml.3.5.0 2 + 3 + **Build dir:** build-a88ecf4dd515 4 + 5 + **Error category:** Missing system dependency / camlp4 incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + [WARNING] These additional system packages are required, but not available on your system: clang-3.5 libclang-3.5-dev llvm-3.5-dev 11 + 12 + Camlp4: Uncaught exception: DynLoader.Error ("/home/opam/.opam/default/lib/ocaml/unix.cma", 13 + "The module `Unix' is already loaded (either by the main program or a previously-dynlinked library)") 14 + 15 + File "tools/bridgen/bridgen.ml", line 1: 16 + Error: Error while running external preprocessor 17 + Command exited with code 2. 18 + ``` 19 + 20 + ## Root cause 21 + 22 + Two issues: (1) clang-3.5, libclang-3.5-dev, and llvm-3.5-dev are not available on Debian Bookworm (these ancient versions were dropped long ago). (2) The camlp4-based build system (using `deriving.syntax`) hits a module loading conflict with `Unix` on modern OCaml. 23 + 24 + ## Suggested fix 25 + 26 + This package is abandoned and tied to clang 3.5. It cannot be built on modern systems. Add upper-bound constraints on the OCaml version and mark the depexts as unavailable: 27 + 28 + ``` 29 + available: os-distribution != "debian" | os-version < "12" 30 + depends: [ "ocaml" {< "4.08"} ] 31 + ```
+26
docs/failures/clangml.3.6.0.6.md
··· 1 + # clangml.3.6.0.6 2 + 3 + **Build dir:** build-41105b295c4d 4 + 5 + **Error category:** Missing system dependency 6 + 7 + ## Error 8 + 9 + ``` 10 + [WARNING] These additional system packages are required, but not available on your system: clang-3.6 libclang-3.6-dev llvm-3.6-dev 11 + 12 + Fatal error: exception Myocamlbuild.No_command_found("[clang++-3.6; /usr/local/bin/clang++-3.6]") 13 + make: *** [Makefile:15: mainClang.native] Error 2 14 + ``` 15 + 16 + ## Root cause 17 + 18 + clang-3.6, libclang-3.6-dev, and llvm-3.6-dev are not available on Debian Bookworm. The build script searches for `clang++-3.6` and fails when it cannot find it. 19 + 20 + ## Suggested fix 21 + 22 + This package is tied to a specific ancient clang version. Mark it unavailable on modern distributions: 23 + 24 + ``` 25 + available: os-distribution != "debian" | os-version < "12" 26 + ```
+26
docs/failures/clangml.3.7.0.2.md
··· 1 + # clangml.3.7.0.2 2 + 3 + **Build dir:** build-2aa5bc80a18c 4 + 5 + **Error category:** Missing system dependency 6 + 7 + ## Error 8 + 9 + ``` 10 + [WARNING] These additional system packages are required, but not available on your system: clang-3.7 libclang-3.7-dev llvm-3.7-dev 11 + 12 + Fatal error: exception Myocamlbuild.No_command_found("[clang++-3.7; /usr/local/bin/clang++-3.7]") 13 + make: *** [Makefile:15: mainClang.native] Error 2 14 + ``` 15 + 16 + ## Root cause 17 + 18 + clang-3.7, libclang-3.7-dev, and llvm-3.7-dev are not available on Debian Bookworm. The build script searches for `clang++-3.7` and fails when it cannot find it. 19 + 20 + ## Suggested fix 21 + 22 + This package is tied to a specific ancient clang version. Mark it unavailable on modern distributions: 23 + 24 + ``` 25 + available: os-distribution != "debian" | os-version < "12" 26 + ```
+24
docs/failures/coccinelle.md
··· 1 + # coccinelle.1.0.8 2 + 3 + **Error category:** Compiler incompatibility (bundled stdcompat too old) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "stdcompat__arg_s.mli", lines 3-17, characters 0-38: 9 + 3 | type spec = Arg.spec = 10 + 4 | | Unit of (unit -> unit) 11 + ... 12 + 17 | | Expand of (string -> string array). 13 + Error: This variant or record definition does not match that of type Arg.spec 14 + An extra constructor, Rest_all, is provided in the original definition. 15 + make[3]: *** [Makefile:1566: stdcompat__arg_s.cmi] Error 2 16 + ``` 17 + 18 + ## Root cause 19 + 20 + Coccinelle 1.0.8 bundles an old version of `stdcompat` that does not know about the `Rest_all` constructor added to `Arg.spec` in OCaml 4.12. Building with OCaml >= 4.12 (here 5.3.0) causes a type mismatch. 21 + 22 + ## Suggested fix 23 + 24 + Add an upper bound on the OCaml version in the opam file: `"ocaml" {>= "4.02" & < "4.12"}`, or update to a newer coccinelle release that bundles a compatible stdcompat.
+27
docs/failures/cohttp-lwt-jsoo.2.5.8.md
··· 1 + # cohttp-lwt-jsoo.2.5.8 2 + 3 + **Build dir:** build-f2214b03fca8 4 + 5 + **Error category:** Missing dependency (js_of_ocaml not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "cohttp-lwt-jsoo/src/dune", line 7, characters 15-26: 11 + 7 | (libraries js_of_ocaml cohttp-lwt)) 12 + ^^^^^^^^^^^ 13 + Error: Library "js_of_ocaml" not found. 14 + 15 + File "cohttp-lwt-jsoo/src/dune", line 6, characters 20-35: 16 + 6 | (preprocess (pps js_of_ocaml-ppx)) 17 + ^^^^^^^^^^^^^^^ 18 + Error: Library "js_of_ocaml-ppx" not found. 19 + ``` 20 + 21 + ## Root cause 22 + 23 + The `js_of_ocaml` and `js_of_ocaml-ppx` libraries are not installed. This is a cascading failure -- js_of_ocaml-compiler failed to build (see js_of_ocaml-compiler.5.9.1.md), which likely prevented js_of_ocaml from being installed. 24 + 25 + ## Suggested fix 26 + 27 + Fix the js_of_ocaml-compiler build first, or add an appropriate OCaml version constraint. No opam metadata change needed for cohttp-lwt-jsoo itself.
+21
docs/failures/conf-bap-llvm.md
··· 1 + # conf-bap-llvm.1.1 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + [WARNING] These additional system packages are required, but not available on your system: llvm-4.0-dev 9 + command which llvm-config-4.0 failed: exit status 1 10 + command which llvm-config-40 failed: exit status 1 11 + LLVM not found 12 + [ERROR] The compilation of conf-bap-llvm.1.1 failed at "ocaml find-llvm.ml". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The package requires LLVM 4.0 development headers (`llvm-4.0-dev`), which is not available in Debian Bookworm. Bookworm ships LLVM 14/15. The find script searches for llvm-config versions 3.4-4.0 only, none of which exist. 18 + 19 + ## Suggested fix 20 + 21 + This version is too old to work on modern distributions. Add a version constraint on `conf-bap-llvm` to depend on a newer LLVM, or add an `available` filter to restrict to distributions that ship LLVM 4.0 or earlier.
+18
docs/failures/conf-libclang.md
··· 1 + # conf-libclang.13 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Error: No usable version of LLVM <=13.0.x found. 9 + [ERROR] The compilation of conf-libclang.13 failed at "bash -ex configure.sh 13". 10 + ``` 11 + 12 + ## Root cause 13 + 14 + The configure script searches for LLVM/Clang versions 3 through 13 via `llvm-config-*` binaries. Debian Bookworm ships LLVM 14, which is outside the accepted range. No `llvm-config` variant for versions <=13 is found. 15 + 16 + ## Suggested fix 17 + 18 + Add a depext for `llvm-13-dev` and `libclang-13-dev`, or update the package to accept LLVM 14+ which is available in Bookworm. Alternatively, add `depexts: [["libclang-13-dev" "llvm-13-dev"] {os-distribution = "debian"}]` if those packages exist in the archive.
+25
docs/failures/conf-python-2-7.md
··· 1 + # conf-python-2-7.1.2 2 + 3 + **Error category:** Missing system dependency (EOL software) 4 + 5 + ## Error 6 + 7 + ``` 8 + [WARNING] These additional system packages are required, but not available on your system: python2.7 9 + opam-build: internal error, uncaught exception: 10 + "python2.7": command not found. 11 + ``` 12 + 13 + ## Root cause 14 + 15 + Python 2.7 has been removed from Debian Bookworm. The `python2.7` package no longer exists in the repository, so the depext cannot be satisfied. 16 + 17 + ## Suggested fix 18 + 19 + This package is fundamentally broken on modern distributions. Add an `available` constraint to exclude Debian >= 12: 20 + 21 + ``` 22 + available: os-distribution != "debian" | os-version < "12" 23 + ``` 24 + 25 + Alternatively, mark the package as unavailable since Python 2 is EOL everywhere.
+25
docs/failures/conf-rust-2024.md
··· 1 + # conf-rust-2024.1 2 + 3 + **Error category:** Compiler version incompatibility 4 + 5 + ## Error 6 + 7 + ``` 8 + cargo 1.65.0 9 + error: the crate requires edition 2024, but the latest edition supported by this Rust version is 2021 10 + [ERROR] The compilation of conf-rust-2024.1 failed at "rustc --edition 2024 test.rs". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + Debian Bookworm ships Rust 1.63/Cargo 1.65, which only supports Rust editions up to 2021. The Rust 2024 edition requires Rust >= 1.85.0. The package correctly tests for edition 2024 support, but the system Rust is too old. 16 + 17 + ## Suggested fix 18 + 19 + Add a version constraint on the depext to require a newer Rust toolchain, or mark the package as unavailable on distributions with Rust < 1.85: 20 + 21 + ``` 22 + available: false # Rust 2024 edition not available in Debian Bookworm 23 + ``` 24 + 25 + Alternatively, install Rust via rustup rather than the system package.
+21
docs/failures/conjury.md
··· 1 + # conjury.2.1.1 2 + 3 + **Error category:** Missing system dependency (C headers) 4 + 5 + **Error lines:** 6 + ``` 7 + *** omake error: 8 + File Conjury/Basis/Exceptions.om: line 59, characters 8-21 9 + Uncaught Exception: 10 + External requirement: Header <stddef.h> not available! 11 + ``` 12 + 13 + **Root cause:** The package requires C standard library headers (`<stddef.h>`) which are not available. This typically means the C development headers (libc-dev) are not installed, or the omake build system cannot find them. 14 + 15 + **Suggested fix:** Add a depext for `libc6-dev` or ensure the build environment includes basic C development tools. In the opam file: 16 + ``` 17 + depexts: [ 18 + ["libc6-dev"] {os-distribution = "debian"} 19 + ] 20 + ``` 21 + Alternatively, this may indicate the omake-based build system has incorrect search paths for system headers.
+21
docs/failures/coqide-8.12.2.md
··· 1 + # coqide.8.12.2 2 + 3 + **Error category:** Build script error (install step fails -- missing binary) 4 + 5 + ## Error 6 + 7 + ``` 8 + install bin/coqide "/home/opam/.opam/default/bin" 9 + install: cannot stat 'bin/coqide': No such file or directory 10 + make[1]: *** [Makefile.ide:201: install-ide-bin] Error 1 11 + [ERROR] The installation of coqide failed at 12 + "make COQ_USE_DUNE= install-ide-bin install-ide-files install-ide-info install-ide-devfiles". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The build step compiled `coqidetop` but never built the `coqide` GUI binary. The install step then fails trying to copy `bin/coqide` which does not exist. This typically happens when GTK/lablgtk3 is not available at configure time, so the Makefile silently skips building the IDE frontend but the install target still expects it. 18 + 19 + ## Suggested fix 20 + 21 + Ensure `lablgtk3` and `lablgtk3-sourceview3` are installed and detected at configure time. If they cannot be installed, add version constraints to prevent this coqide version from being selected.
+20
docs/failures/coqide-8.17.1.md
··· 1 + # coqide.8.17.1 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "ide/coqide/dune", line 34, characters 54-74: 9 + 34 | (libraries coqide-server.protocol coqide-server.core lablgtk3-sourceview3 platform_specific)) 10 + ^^^^^^^^^^^^^^^^^^^^ 11 + Error: Library "lablgtk3-sourceview3" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `lablgtk3-sourceview3` library is not installed. This package depends on `lablgtk3-sourceview3` which itself fails to build (see `lablgtk3-sourceview3` failures). 17 + 18 + ## Suggested fix 19 + 20 + Fix the `lablgtk3-sourceview3` build first. This is a cascading failure.
+20
docs/failures/coqide-8.20.0.md
··· 1 + # coqide.8.20.0 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "ide/coqide/dune", line 35, characters 54-74: 9 + 35 | (libraries coqide-server.protocol coqide-server.core lablgtk3-sourceview3 platform_specific)) 10 + ^^^^^^^^^^^^^^^^^^^^ 11 + Error: Library "lablgtk3-sourceview3" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as coqide.8.17.1: the `lablgtk3-sourceview3` library is not installed. Cascading failure from `lablgtk3-sourceview3` build failure. 17 + 18 + ## Suggested fix 19 + 20 + Fix the `lablgtk3-sourceview3` build first.
+21
docs/failures/coqide-8.7.2.md
··· 1 + # coqide.8.7.2 2 + 3 + **Error category:** Build script error (install step fails -- missing binary) 4 + 5 + ## Error 6 + 7 + ``` 8 + install bin/coqide "/home/opam/.opam/default/bin" 9 + install: cannot stat 'bin/coqide': No such file or directory 10 + make[1]: *** [Makefile.ide:157: install-ide-bin] Error 1 11 + [ERROR] The installation of coqide failed at 12 + "make install-ide-bin install-ide-files install-ide-info install-ide-devfiles". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + Same as coqide.8.12.2: the `coqide` GUI binary was never built (only `coqidetop` was produced). The GTK frontend was likely skipped at configure time because lablgtk3 was not available. 18 + 19 + ## Suggested fix 20 + 21 + Ensure `lablgtk3` and `lablgtk3-sourceview3` are installed. Add appropriate version constraints if they cannot be built with the current compiler.
+21
docs/failures/coqide-8.8.0.md
··· 1 + # coqide.8.8.0 2 + 3 + **Error category:** Build script error (install step fails -- missing binary) 4 + 5 + ## Error 6 + 7 + ``` 8 + install bin/coqide "/home/opam/.opam/default/bin" 9 + install: cannot stat 'bin/coqide': No such file or directory 10 + make[1]: *** [Makefile.ide:163: install-ide-bin] Error 1 11 + [ERROR] The installation of coqide failed at 12 + "make install-ide-bin install-ide-files install-ide-info install-ide-devfiles". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + Same as coqide.8.7.2 and 8.12.2: the `coqide` GUI binary was never built. The GTK frontend was skipped at configure time because lablgtk3 was not available. 18 + 19 + ## Suggested fix 20 + 21 + Ensure `lablgtk3` and `lablgtk3-sourceview3` are installed. Add appropriate version constraints if they cannot be built with the current compiler.
+24
docs/failures/crlibm.md
··· 1 + # crlibm.0.2 2 + 3 + **Error category:** Build script error (C type conflicts) 4 + 5 + ## Error 6 + 7 + ``` 8 + src/crlibm/scs_lib/scs.h:53:19: error: conflicting types for 'int64_t'; have 'long long int' 9 + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:27:19: note: previous declaration of 'int64_t' with type 'int64_t' {aka 'long int'} 10 + src/crlibm/scs_lib/scs.h:132:3: error: unknown type name 'uint32_t' 11 + [ERROR] The compilation of crlibm.0.2 failed at "jbuilder build -p crlibm -j 39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The bundled `scs.h` header redefines `int64_t` as `long long int`, which conflicts with the system definition (`long int` on x86_64). It also uses `uint32_t` without including `<stdint.h>`. This is a 64-bit platform portability bug in the vendored C code. 17 + 18 + ## Suggested fix 19 + 20 + Patch `scs.h` to include `<stdint.h>` and use the standard type definitions instead of rolling its own. The opam package should carry a patch: 21 + 22 + ``` 23 + patches: ["fix-scs-types.patch"] 24 + ```
+21
docs/failures/crypt.md
··· 1 + # crypt.1.2 2 + 3 + **Error category:** Missing system dependency (linker error) 4 + 5 + ## Error 6 + 7 + ``` 8 + /usr/bin/ld: ../lib/libcrypt_stubs.a(crypt_stubs.o): in function `crypt_raw': 9 + crypt_stubs.c:(.text+0xb2): undefined reference to `crypt' 10 + /usr/bin/ld: ../lib/libcrypt_stubs.a(crypt_stubs.o): in function `crypt_md5': 11 + crypt_stubs.c:(.text+0x292): undefined reference to `crypt' 12 + collect2: error: ld returned 1 exit status 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `crypt()` function was moved from glibc to `libcrypt` (libxcrypt) in newer Linux distributions. The build links with `-lcrypt` in the library but the test binary does not link against it, causing undefined references at link time. Additionally, `crypt()` requires `#include <crypt.h>` explicitly and the package uses implicit declaration. 18 + 19 + ## Suggested fix 20 + 21 + Add depext for `libcrypt-dev` and patch the Makefile/build to ensure `-lcrypt` is passed during test linking. The package needs `depexts: [["libcrypt-dev"] {os-family = "debian"}]` and a build patch to fix the implicit declaration warning.
+17
docs/failures/devkit.md
··· 1 + # devkit.1.20210120 2 + 3 + **Error category:** Compiler incompatibility (OCaml >= 5.x) 4 + 5 + **Error lines:** 6 + ``` 7 + File "lwt_engines.ml", lines 37-76, characters 0-3: 8 + 37 | object(self) 9 + ... 10 + 76 | end 11 + Error: This non-virtual class has virtual methods. 12 + The following methods are virtual : id 13 + ``` 14 + 15 + **Root cause:** The `Lwt_engine.abstract` class gained a new virtual method `id` in newer versions of lwt, and `devkit` does not implement it. Additionally, multiple Warning 6 errors (`labels-omitted`) indicate incompatibility with OCaml 5.x where `String.starts_with`/`String.ends_with` require labelled arguments. 16 + 17 + **Suggested fix:** Add an upper bound on the OCaml version: `"ocaml" {< "5.0"}`, or add an upper bound on `lwt` to a version that does not require the `id` method. The package needs upstream updates for OCaml 5.x compatibility.
+15
docs/failures/dune-release.md
··· 1 + # dune-release.1.2.0 2 + 3 + **Error category:** Compiler incompatibility (OCaml >= 5.0) 4 + 5 + **Error lines:** 6 + ``` 7 + File "lib/github.mli", line 21, characters 25-38: 8 + 21 | Pkg.t -> (unit, R.msg) Result.result 9 + ^^^^^^^^^^^^^ 10 + Error: Unbound type constructor Result.result 11 + ``` 12 + 13 + **Root cause:** `Result.result` was removed from the standard library in OCaml 4.13+. The type is now simply `result` (unqualified) or `Result.t`. This old version of dune-release is incompatible with modern OCaml. 14 + 15 + **Suggested fix:** Add an upper bound on OCaml version: `"ocaml" {< "4.13"}`. This is a very old version of dune-release; upgrading to a newer version is the better solution.
+20
docs/failures/electrod.md
··· 1 + # electrod.0.5 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/dune", line 29, characters 50-59: 9 + 29 | hashcons logs.fmt mtime.clock.os printbox iter stdcompat stdlib-shims) 10 + ^^^^^^^^^ 11 + Error: Library "stdcompat" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `stdcompat` library is not installed in the build environment. The `electrod` package depends on it but it was not available in the layer. 17 + 18 + ## Suggested fix 19 + 20 + Ensure `stdcompat` is listed in the opam `depends` field. If it is, verify that `stdcompat` itself builds successfully with the current compiler version.
+21
docs/failures/eliom.md
··· 1 + # eliom.8.4.8 2 + 3 + **Error category:** Compiler incompatibility (type mismatch with newer tyxml) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/lib/eliom_form.eliom", line 169, characters 6-49: 9 + Error: This expression has type Html_types.script_attrib attrib list 10 + ... 11 + The first variant type does not allow tag(s) `Mime_type 12 + [ERROR] The compilation of eliom.8.4.8 failed at "make". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `eliom` package uses `tyxml` types for HTML attributes, but the version of `tyxml` installed has changed the `script_attrib` type to no longer include the `` `Mime_type `` variant. This is an API incompatibility between eliom 8.4.8 and the installed version of tyxml. 18 + 19 + ## Suggested fix 20 + 21 + Add a version constraint on `tyxml` in the opam file, e.g., `"tyxml" {< "4.6"}`, or upgrade to a newer eliom release that is compatible with the current tyxml.
+28
docs/failures/ffmpeg-0.2.1.md
··· 1 + # ffmpeg.0.2.1 2 + 3 + **Error category:** API incompatibility (FFmpeg version) 4 + 5 + ## Error 6 + 7 + ``` 8 + avutil_stubs.c:51:51: error: parameter 2 ('op') has incomplete type 9 + 51 | static int lock_manager(void **mtx, enum AVLockOp op) 10 + avutil_stubs.c:54:8: error: 'AV_LOCK_CREATE' undeclared (first use in this function) 11 + avutil_stubs.c:85:17: warning: implicit declaration of function 'av_lockmgr_register' 12 + [ERROR] The compilation of ffmpeg.0.2.1 failed at "make". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `AVLockOp` enum and `av_lockmgr_register()` function were removed in FFmpeg 4.0+. Debian Bookworm ships FFmpeg 5.1. This old version of the OCaml ffmpeg bindings is incompatible with modern FFmpeg. 18 + 19 + ## Suggested fix 20 + 21 + Add an upper bound on the ffmpeg system dependency or mark as unavailable: 22 + 23 + ``` 24 + depends: [ "ocaml" ] 25 + available: false # Incompatible with FFmpeg >= 4.0 26 + ``` 27 + 28 + Users should migrate to a newer version of the `ffmpeg` opam package.
+25
docs/failures/ffmpeg-0.4.1.md
··· 1 + # ffmpeg.0.4.1 2 + 3 + **Error category:** Build script error (OCaml module generation) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "avcodec.mli", line 149, characters 12-26: 9 + 149 | type id = Codec_id.video 10 + ^^^^^^^^^^^^^^ 11 + Error: Unbound type constructor Codec_id.video 12 + [ERROR] The compilation of ffmpeg.0.4.1 failed at "make". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `Codec_id` module does not define a `video` type. This is likely caused by the code generator (`codec_id.ml`) not producing the expected type definitions for the installed FFmpeg version (Bookworm ships FFmpeg 5.1). The stubs generator may be incompatible with the newer FFmpeg API where codec enumeration changed. 18 + 19 + ## Suggested fix 20 + 21 + Add an upper bound on supported FFmpeg versions or mark as unavailable. Users should use a newer version of the `ffmpeg` opam package that supports FFmpeg 5.x: 22 + 23 + ``` 24 + available: false # Incompatible with FFmpeg >= 5.0 25 + ```
+27
docs/failures/fmlib_js.0.5.0.md
··· 1 + # fmlib_js.0.5.0 2 + 3 + **Build dir:** build-b94b615ea911 4 + 5 + **Error category:** Missing dependency (js_of_ocaml not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "src/js/dune", line 5, characters 8-19: 11 + 5 | js_of_ocaml 12 + ^^^^^^^^^^^ 13 + Error: Library "js_of_ocaml" not found. 14 + 15 + File "src/js/dune", line 10, characters 13-28: 16 + 10 | (pps js_of_ocaml-ppx) 17 + ^^^^^^^^^^^^^^^ 18 + Error: Library "js_of_ocaml-ppx" not found. 19 + ``` 20 + 21 + ## Root cause 22 + 23 + The `js_of_ocaml` and `js_of_ocaml-ppx` libraries are not installed. This is a cascading failure -- js_of_ocaml-compiler failed to build (see js_of_ocaml-compiler.5.9.1.md), which likely prevented js_of_ocaml from being installed. 24 + 25 + ## Suggested fix 26 + 27 + Fix the js_of_ocaml-compiler build first, or add an appropriate OCaml version constraint. No opam metadata change needed for fmlib_js itself.
+23
docs/failures/frama-c.md
··· 1 + # frama-c.26.1 2 + 3 + **Error category:** Install script error 4 + 5 + ## Error 6 + 7 + ``` 8 + [frama-c: make install] 9 + + make "PREFIX=/home/opam/.opam/default" "MANDIR=" "install" 10 + - Installing Frama-C to current Opam switch 11 + - (copying and relocating files...) 12 + - make: *** [share/Makefile.installation:65: install] Error 1 13 + [ERROR] The installation of frama-c failed at 14 + "make PREFIX=/home/opam/.opam/default MANDIR= install". 15 + ``` 16 + 17 + ## Root cause 18 + 19 + The build step (`dune build`) succeeded, but the install step (`make install`) failed at `share/Makefile.installation:65`. The error output is minimal -- the Makefile rule at line 65 likely attempts to copy or relocate files that are missing, or encounters a permission/path issue. Frama-C 26.1 has an Ivette (GUI) component whose installation may require Node.js/yarn artifacts that were not built. 20 + 21 + ## Suggested fix 22 + 23 + Check whether the `ivette` component requires additional depexts (e.g., `nodejs`, `yarn`). If Ivette is not needed, a newer frama-c version may handle this more gracefully. Consider adding `conf-nodejs` and `conf-yarn` to depexts if the install script requires them.
+26
docs/failures/fswatch-0.1.1.md
··· 1 + # fswatch.11-0.1.1 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + stub.c:11:10: fatal error: libfswatch.h: No such file or directory 9 + 11 | #include <libfswatch.h> 10 + compilation terminated. 11 + [ERROR] The compilation of fswatch.11-0.1.1 failed at "dune build -p fswatch -j 39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `libfswatch` library is not available as a Debian package. The `fswatch` C library (libfswatch) is not packaged in Debian Bookworm's repositories. 17 + 18 + ## Suggested fix 19 + 20 + The package needs `libfswatch-dev` which does not exist in Debian. Add an `available` constraint or provide build instructions for the system dependency: 21 + 22 + ``` 23 + available: os-distribution != "debian" 24 + ``` 25 + 26 + Alternatively, add a depext pointing to the correct package name if it exists in third-party repos.
+22
docs/failures/fswatch-0.1.4.md
··· 1 + # fswatch.11-0.1.4 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + stub.c:11:10: fatal error: libfswatch.h: No such file or directory 9 + 11 | #include <libfswatch.h> 10 + compilation terminated. 11 + [ERROR] The compilation of fswatch.11-0.1.4 failed at "dune build -p fswatch -j 39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as fswatch.11-0.1.1: `libfswatch` is not available in Debian Bookworm. 17 + 18 + ## Suggested fix 19 + 20 + ``` 21 + available: os-distribution != "debian" 22 + ```
+22
docs/failures/fswatch-0.1.6.md
··· 1 + # fswatch.11-0.1.6 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + stub.c:11:10: fatal error: libfswatch.h: No such file or directory 9 + 11 | #include <libfswatch.h> 10 + compilation terminated. 11 + [ERROR] The compilation of fswatch.11-0.1.6 failed at "dune build -p fswatch -j 39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as fswatch.11-0.1.1: `libfswatch` is not available in Debian Bookworm. 17 + 18 + ## Suggested fix 19 + 20 + ``` 21 + available: os-distribution != "debian" 22 + ```
+19
docs/failures/gdbprofiler.md
··· 1 + # gdbprofiler.0.3 2 + 3 + **Error category:** Dependency API incompatibility (menhir, yojson) 4 + 5 + **Error lines:** 6 + ``` 7 + Error: the code back-end requires the type of every nonterminal symbol to be 8 + known. Please specify the type of every symbol via %type declarations, or 9 + enable type inference (look up --infer in the manual). 10 + 11 + File "src/cpuprofile.mli", line 32, characters 21-37: 12 + 32 | val to_yojson : t -> Yojson.Safe.json 13 + ^^^^^^^^^^^^^^^^ 14 + Error: Unbound type constructor Yojson.Safe.json 15 + ``` 16 + 17 + **Root cause:** Two issues: (1) Menhir's code back-end now requires explicit `%type` declarations, which this old jbuilder-era package does not provide. (2) `Yojson.Safe.json` was renamed to `Yojson.Safe.t` in newer yojson versions. 18 + 19 + **Suggested fix:** Add upper bounds: `"menhir" {< "20211215"}` and `"yojson" {< "2.0.0"}` in the opam file. The package uses jbuilder and is too old for modern toolchain versions.
+22
docs/failures/gitlab-jsoo.0.1.1.md
··· 1 + # gitlab-jsoo.0.1.1 2 + 3 + **Build dir:** build-bd4cfe92b7ce 4 + 5 + **Error category:** Missing dependency (cascading failure) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jsoo/dune", line 5, characters 35-50: 11 + 5 | (libraries gitlab js_of_ocaml-lwt cohttp-lwt-jsoo)) 12 + ^^^^^^^^^^^^^^^ 13 + Error: Library "cohttp-lwt-jsoo" not found. 14 + ``` 15 + 16 + ## Root cause 17 + 18 + Cascading failure. `cohttp-lwt-jsoo` failed to build because `js_of_ocaml` was not available, which in turn was caused by `js_of_ocaml-compiler` failing to build against the installed OCaml version. 19 + 20 + ## Suggested fix 21 + 22 + Fix the js_of_ocaml-compiler build first. No opam metadata change needed for gitlab-jsoo itself.
+25
docs/failures/glpk.md
··· 1 + # glpk.0.1.6 2 + 3 + **Error category:** Compiler incompatibility (C99/OCaml 5 headers) 4 + 5 + ## Error 6 + 7 + ``` 8 + /home/opam/.opam/default/lib/ocaml/caml/config.h:43:28: error: unknown type name 'inline' 9 + 43 | #define Caml_inline static inline 10 + /home/opam/.opam/default/lib/ocaml/caml/misc.h:371:25: error: expected ';' before 'void' 11 + 371 | CAMLnoret Caml_inline void caml_abort(void) { 12 + make[2]: *** [OCamlMakefile:1013: glpk_stubs.o] Error 2 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The C stubs are compiled with `-ansi` flag (C89 mode), which does not support the `inline` keyword. OCaml 5.x headers use `static inline` via `Caml_inline`, which requires at least C99. The `-ansi` flag in the Makefile is incompatible with modern OCaml C headers. 18 + 19 + ## Suggested fix 20 + 21 + Patch the build to remove `-ansi` from CFLAGS or replace it with `-std=c99`. Add an upper-bound constraint on the OCaml version if patching is not feasible: 22 + 23 + ``` 24 + depends: [ "ocaml" {< "5.0"} ] 25 + ```
+27
docs/failures/graphql-lwt.0.6.0.md
··· 1 + # graphql-lwt.0.6.0 2 + 3 + **Build dir:** build-f300ec328acc 4 + 5 + **Error category:** Missing dependency (graphql not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "graphql-lwt/src/jbuild", line 12, characters 18-25: 11 + Error: Library "graphql" not found. 12 + Hint: try: jbuilder external-lib-deps --missing -p graphql-lwt @install 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `graphql` library is not installed in the build environment. It should be a dependency of `graphql-lwt` but was either not resolved by the solver or failed to install. 18 + 19 + ## Suggested fix 20 + 21 + Ensure `graphql` is listed in the opam file dependencies: 22 + 23 + ``` 24 + depends: [ "graphql" ] 25 + ``` 26 + 27 + If it is already listed, check the solver output for version conflicts preventing its installation.
+15
docs/failures/hlarp.md
··· 1 + # hlarp.0.0.1 2 + 3 + **Error category:** Dependency API incompatibility (cmdliner) 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/app/hlarp_cli.ml", line 52, characters 15-19: 8 + 52 | Term.(ret (pure (`Help (`Plain, None))) 9 + ^^^^ 10 + Error: Unbound value pure 11 + ``` 12 + 13 + **Root cause:** The package uses `Term.pure` from cmdliner, which was renamed to `Term.const` in cmdliner >= 1.0.0. 14 + 15 + **Suggested fix:** Add an upper bound on cmdliner: `"cmdliner" {< "1.0.0"}` in the opam file.
+15
docs/failures/hugin.md
··· 1 + # hugin.1.0.0~alpha2 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "hugin/lib/dune", line 6, characters 21-27: 8 + 6 | (libraries nx nx.io cairo2 usdl)) 9 + ^^^^^^ 10 + Error: Library "cairo2" not found. 11 + ``` 12 + 13 + **Root cause:** The `cairo2` OCaml library is not installed. The package depends on cairo2 but it was not resolved by the solver. 14 + 15 + **Suggested fix:** Ensure `"cairo2"` is in the `depends` field of the opam file. The `cairo2` opam package requires the `libcairo2-dev` depext.
+29
docs/failures/js_of_ocaml-compiler.5.9.1.md
··· 1 + # js_of_ocaml-compiler.5.9.1 2 + 3 + **Build dir:** build-7fb035a2746d 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "compiler/lib/parse_bytecode.ml", line 254, characters 14-20: 11 + 254 | env.ce_rec 12 + ^^^^^^ 13 + Error: This expression has type Instruct.compilation_env 14 + There is no field ce_rec within type Instruct.compilation_env 15 + ``` 16 + 17 + ## Root cause 18 + 19 + The `ce_rec` field was removed from `Instruct.compilation_env` in a recent OCaml compiler version. js_of_ocaml-compiler 5.9.1 accesses compiler-libs internals that changed in the installed OCaml version. 20 + 21 + ## Suggested fix 22 + 23 + Add an upper-bound OCaml version constraint in the opam file to match the compiler versions this release supports: 24 + 25 + ``` 26 + depends: [ "ocaml" {< "5.3"} ] 27 + ``` 28 + 29 + Or upgrade to a newer js_of_ocaml-compiler release that supports the installed OCaml version.
+26
docs/failures/jupyter.2.6.1.md
··· 1 + # jupyter.2.6.1 2 + 3 + **Build dir:** build-d43c081ba3cb 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jupyter/src/core/json.mli", line 25, characters 27-40: 11 + 25 | val or_none : ('a, string) Result.result -> 'a option 12 + ^^^^^^^^^^^^^ 13 + Error: Unbound type constructor Result.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Result.result` was removed in OCaml >= 5.0. The `result` type is now directly in `Stdlib` as `result`, not `Result.result`. This package uses the old qualified path. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound OCaml version constraint in the opam file: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ```
+26
docs/failures/jupyter.2.7.0.md
··· 1 + # jupyter.2.7.0 2 + 3 + **Build dir:** build-6df3d7f3cbe3 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jupyter/src/core/json.mli", line 25, characters 27-40: 11 + 25 | val or_none : ('a, string) Result.result -> 'a option 12 + ^^^^^^^^^^^^^ 13 + Error: Unbound type constructor Result.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Result.result` was removed in OCaml >= 5.0. The `result` type is now directly in `Stdlib` as `result`, not `Result.result`. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound OCaml version constraint in the opam file: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ```
+26
docs/failures/jupyter.2.7.2.md
··· 1 + # jupyter.2.7.2 2 + 3 + **Build dir:** build-291a0acce6e0 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jupyter/src/core/json.mli", line 25, characters 27-40: 11 + 25 | val or_none : ('a, string) Result.result -> 'a option 12 + ^^^^^^^^^^^^^ 13 + Error: Unbound type constructor Result.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Result.result` was removed in OCaml >= 5.0. The `result` type is now directly in `Stdlib` as `result`, not `Result.result`. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound OCaml version constraint in the opam file: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ```
+26
docs/failures/jupyter.2.7.3.md
··· 1 + # jupyter.2.7.3 2 + 3 + **Build dir:** build-2d41baa27e4e 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jupyter/src/core/json.mli", line 25, characters 27-40: 11 + 25 | val or_none : ('a, string) Result.result -> 'a option 12 + ^^^^^^^^^^^^^ 13 + Error: Unbound type constructor Result.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Result.result` was removed in OCaml >= 5.0. The `result` type is now directly in `Stdlib` as `result`, not `Result.result`. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound OCaml version constraint in the opam file: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ```
+26
docs/failures/jupyter.2.7.7.md
··· 1 + # jupyter.2.7.7 2 + 3 + **Build dir:** build-a93a79c7ba2f 4 + 5 + **Error category:** Compiler incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "jupyter/src/core/json.mli", line 25, characters 27-40: 11 + 25 | val or_none : ('a, string) Result.result -> 'a option 12 + ^^^^^^^^^^^^^ 13 + Error: Unbound type constructor Result.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Result.result` was removed in OCaml >= 5.0. The `result` type is now directly in `Stdlib` as `result`, not `Result.result`. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound OCaml version constraint in the opam file: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ```
+25
docs/failures/kappa-agents.md
··· 1 + # kappa-agents.4.1.0 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "core/agents/dune", line 27, characters 28-49: 9 + 27 | kappa_json_api kappa-library.runtime kappa_agents) 10 + ^^^^^^^^^^^^^^^^^^^^^ 11 + Error: Library "kappa-library.runtime" not found. 12 + 13 + File "core/KaSa_rep/counting_enumerating_species/dune", line 3, characters 43-64: 14 + 3 | (libraries num kappa_kasa_remanent_state kappa-library.generic) 15 + ^^^^^^^^^^^^^^^^^^^^^ 16 + Error: Library "kappa-library.generic" not found. 17 + ``` 18 + 19 + ## Root cause 20 + 21 + The `kappa-library` package (which provides `kappa-library.runtime` and `kappa-library.generic` sub-libraries) is not installed. The `kappa-agents` package depends on it but it was not available in the build layer. 22 + 23 + ## Suggested fix 24 + 25 + Ensure `kappa-library` is listed in the opam `depends` field and builds successfully. This is likely a cascading failure from `kappa-library` failing to build.
+19
docs/failures/karamel.md
··· 1 + # karamel.1.0.0 2 + 3 + **Error category:** Missing system dependency (fstar.exe not found) 4 + 5 + ## Error 6 + 7 + ``` 8 + Didn't find fstar.exe in the path or in FSTAR_HOME (which is: ) 9 + make: *** [Makefile:54: pre] Error 1 10 + [ERROR] The compilation of karamel.1.0.0 failed at "make PREFIX=/home/opam/.opam/default". 11 + ``` 12 + 13 + ## Root cause 14 + 15 + The build succeeds in compiling the OCaml code (`Kremlin.native`), but the Makefile `pre` target requires the F* (fstar) compiler to be available either in `$PATH` or via the `$FSTAR_HOME` environment variable. Neither is set. 16 + 17 + ## Suggested fix 18 + 19 + Add `fstar` as a dependency in the opam file, or add a depext/conf package for it. If fstar is not packaged in opam, the opam file should document this requirement and add an appropriate `available` constraint or post-message.
+26
docs/failures/lablgl.md
··· 1 + # lablgl.1.05 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + wrap_glut.c:17:10: fatal error: GL/glut.h: No such file or directory 9 + 17 | #include <GL/glut.h> 10 + compilation terminated. 11 + [ERROR] The compilation of lablgl.1.05 failed at "make INSTALLDIR=/home/opam/.opam/default/lib/lablgl glut". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The GLUT header file is not installed. The package needs `freeglut3-dev` (or `libglut-dev`) to provide `GL/glut.h`. 17 + 18 + ## Suggested fix 19 + 20 + Add the missing depext: 21 + 22 + ``` 23 + depexts: [ 24 + ["freeglut3-dev"] {os-family = "debian"} 25 + ] 26 + ```
+31
docs/failures/lablgtk.md
··· 1 + # lablgtk.2.18.12 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Package 'xproto', required by 'xrender', not found 9 + Package 'renderproto', required by 'xrender', not found 10 + Package 'kbproto', required by 'x11', not found 11 + Package 'xextproto', required by 'xext', not found 12 + Package 'shared-mime-info', required by 'gdk-pixbuf-2.0', not found 13 + configure: error: GTK+ is required 14 + [ERROR] The compilation of lablgtk.2.18.12 failed at "./configure ...". 15 + ``` 16 + 17 + ## Root cause 18 + 19 + Multiple X11 protocol development packages and `shared-mime-info` are missing. These are needed by GTK+ 2.0's pkg-config dependencies. The depexts for this package are incomplete for Debian Bookworm. 20 + 21 + ## Suggested fix 22 + 23 + Add missing depexts: 24 + 25 + ``` 26 + depexts: [ 27 + ["x11proto-dev" "shared-mime-info" "libgtk2.0-dev"] {os-family = "debian"} 28 + ] 29 + ``` 30 + 31 + The `x11proto-dev` package in Bookworm provides the merged xproto/renderproto/kbproto/xextproto headers.
+20
docs/failures/lablgtk3-sourceview3-3.0.beta4.md
··· 1 + # lablgtk3-sourceview3.3.0.beta4 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/dune", line 146, characters 12-20: 9 + 146 | (libraries lablgtk3)) 10 + ^^^^^^^^ 11 + Error: Library "lablgtk3" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `lablgtk3` library is not installed. This package depends on `lablgtk3` as an OCaml library dependency, but it was not built or installed in the layer. 17 + 18 + ## Suggested fix 19 + 20 + Ensure `lablgtk3` is in the opam `depends` field and builds successfully. The `lablgtk3` package requires GTK3 system libraries via depexts (`libgtk-3-dev`).
+20
docs/failures/lablgtk3-sourceview3-3.1.3.md
··· 1 + # lablgtk3-sourceview3.3.1.3 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src-sourceview3/dune", line 36, characters 12-20: 9 + 36 | (libraries lablgtk3)) 10 + ^^^^^^^^ 11 + Error: Library "lablgtk3" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as 3.0.beta4: the `lablgtk3` library is not installed. Cascading failure from `lablgtk3` not building. 17 + 18 + ## Suggested fix 19 + 20 + Fix the `lablgtk3` package build first.
+20
docs/failures/lablgtk3-sourceview3-3.1.4.md
··· 1 + # lablgtk3-sourceview3.3.1.4 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src-sourceview3/dune", line 36, characters 12-20: 9 + 36 | (libraries lablgtk3)) 10 + ^^^^^^^^ 11 + Error: Library "lablgtk3" not found. 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as other lablgtk3-sourceview3 versions: the `lablgtk3` library is not installed. 17 + 18 + ## Suggested fix 19 + 20 + Fix the `lablgtk3` package build first.
+27
docs/failures/llvm-11.0.0.md
··· 1 + # llvm.11.0.0 2 + 3 + **Error category:** Build script error (missing llvm-config) 4 + 5 + ## Error 6 + 7 + ``` 8 + + '' --link-static --libs 9 + install.sh: line 48: : command not found 10 + + '' --link-shared --libs 11 + install.sh: line 55: : command not found 12 + + echo 'Link mode not recognized' 13 + Link mode not recognized 14 + [ERROR] The compilation of llvm.11.0.0 failed at "bash -ex install.sh /home/opam/.opam/default/lib cmake make build". 15 + ``` 16 + 17 + ## Root cause 18 + 19 + The `install.sh` script is invoked with an empty first argument (the `llvm-config` path). The script tries to call the empty string as a command, which fails. No `llvm-config` for LLVM 11 is available since Debian Bookworm ships LLVM 14. The `conf-llvm` dependency should have provided the path but was resolved to a version without a matching LLVM. 20 + 21 + ## Suggested fix 22 + 23 + This package requires LLVM 11 which is not in Bookworm. Add a dependency on `conf-llvm {= "11"}` and appropriate depexts, or mark as unavailable: 24 + 25 + ``` 26 + available: false # LLVM 11 not available in Debian Bookworm 27 + ```
+26
docs/failures/llvm-15.0.7.md
··· 1 + # llvm.15.0.7+nnp-2 2 + 3 + **Error category:** Build script error 4 + 5 + ## Error 6 + 7 + ``` 8 + + test /home/opam/.opam/default/.opam-switch/build/llvm.15.0.7+nnp-2/. != . 9 + + echo The script must be executed from its current directory. 10 + The script must be executed from its current directory. 11 + [ERROR] The compilation of llvm.15.0.7+nnp-2 failed at "./setup.sh llvm-config-15". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `setup.sh` script checks that it is run from its own directory by comparing `dirname $0` against `.`. When opam invokes the script with a full path (`./setup.sh`), the dirname resolves to a full path instead of `.`, causing the check to fail. This is a bug in the build script's working directory detection. 17 + 18 + ## Suggested fix 19 + 20 + Patch `setup.sh` to use a more robust directory check, or invoke it differently in the opam file: 21 + 22 + ``` 23 + build: [["sh" "-c" "cd %{build}% && bash setup.sh llvm-config-15"]] 24 + ``` 25 + 26 + Or patch the script to `cd` to its own directory instead of checking.
+22
docs/failures/mastodon-archive-viewer.md
··· 1 + # mastodon-archive-viewer.0.3 2 + 3 + **Error category:** Compiler incompatibility (API changes in cmdliner and tyxml) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/main.ml", line 355, characters 2-20: 9 + 355 | Cmdliner.Term.pure main $ 10 + ^^^^^^^^^^^^^^^^^^ 11 + Error: Unbound value Cmdliner.Term.pure 12 + [ERROR] The compilation of mastodon-archive-viewer.0.3 failed at 13 + "dune build -p mastodon-archive-viewer -j 39". 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Cmdliner.Term.pure` was removed in cmdliner 1.1.0 (replaced by `Cmdliner.Term.const`). The installed cmdliner version is too new for this package. There are also many deprecation warnings about `Tyxml.Html.pcdata` (replaced by `txt`), though these are not fatal. 19 + 20 + ## Suggested fix 21 + 22 + Add a version constraint on `cmdliner` in the opam file: `"cmdliner" {< "1.1.0"}`, or update the source code to use `Cmdliner.Term.const` instead of `pure`.
+14
docs/failures/mesh-graphics.md
··· 1 + # mesh-graphics.0.9.4 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "graphics/jbuild", line 10, characters 19-27: 8 + Error: Library "graphics" not found. 9 + Hint: try: jbuilder external-lib-deps --missing -p mesh-graphics @install 10 + ``` 11 + 12 + **Root cause:** The `graphics` library was removed from the OCaml standard distribution in OCaml 4.09 and moved to a separate opam package. This jbuilder-era package does not declare the dependency. 13 + 14 + **Suggested fix:** Add `"graphics"` to the `depends` field in the opam file, or add an upper bound: `"ocaml" {< "4.09"}`.
+27
docs/failures/metapp.0.4.2.md
··· 1 + # metapp.0.4.2 2 + 3 + **Build dir:** build-9f4580ba44a2 4 + 5 + **Error category:** Build script error (shared library loading failure) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "_none_", line 1: 11 + Error: error loading shared library: Dynlink.Error (Dynlink.Cannot_open_dll 12 + "Failure(\"/tmp/build_2dcfd6_dune/metapp71dfa4.cmxs: failed to map segment from shared object\")") 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The PPX preprocessor (`metapp.ppx`) fails to load its own `.cmxs` shared library at build time. This is typically caused by a `noexec` mount on `/tmp` in the build container, or by a build environment that restricts dynamic loading. The package self-preprocesses (it uses `metapp.ppx` to build `metapp` itself), and the dynamically generated `.cmxs` cannot be mapped. 18 + 19 + ## Suggested fix 20 + 21 + Ensure the build environment mounts `/tmp` with `exec` permissions. Alternatively, the opam file could set `TMPDIR` to a writable+exec location via a build-env field: 22 + 23 + ``` 24 + build-env: [ TMPDIR = "%{build}%" ] 25 + ``` 26 + 27 + If this is a container issue, mount tmpfs with exec. No opam metadata change needed if the environment is fixed.
+22
docs/failures/metaquot.0.5.1.md
··· 1 + # metaquot.0.5.1 2 + 3 + **Build dir:** build-60470d71470f 4 + 5 + **Error category:** Missing dependency (metapp not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "metaquot/dune", line 8, characters 27-33: 11 + 8 | (libraries compiler-libs metapp stdcompat)) 12 + ^^^^^^ 13 + Error: Library "metapp" not found. 14 + ``` 15 + 16 + ## Root cause 17 + 18 + The `metapp` library is not installed. This is a cascading failure -- metapp.0.4.2 itself failed to build (see metapp.0.4.2.md), so metaquot cannot find its dependency. 19 + 20 + ## Suggested fix 21 + 22 + Fix the metapp build first (see metapp.0.4.2.md). No opam metadata change needed for metaquot itself.
+28
docs/failures/mpi.md
··· 1 + # mpi.1.06 2 + 3 + **Error category:** Compiler incompatibility (OCaml 5 API change) 4 + 5 + ## Error 6 + 7 + ``` 8 + msgs.c:151:9: error: too few arguments to function 'caml_input_value_from_malloc' 9 + 151 | res = caml_input_value_from_malloc(buffer, 0); 10 + /home/opam/.opam/default/lib/ocaml/caml/intext.h:171:18: note: declared here 11 + 171 | CAMLextern value caml_input_value_from_malloc(char * data, intnat ofs, 12 + msgs.c:383:12: error: too few arguments to function 'caml_input_value_from_malloc' 13 + [ERROR] The compilation of mpi.1.06 failed at "make all ...". 14 + ``` 15 + 16 + ## Root cause 17 + 18 + OCaml 5.x changed the signature of `caml_input_value_from_malloc` to accept an additional parameter. The old 2-argument call in mpi's C stubs is incompatible with the new 3-argument signature. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper bound on the OCaml version: 23 + 24 + ``` 25 + depends: [ "ocaml" {< "5.0"} ] 26 + ``` 27 + 28 + Or patch the C stubs to use the new 3-argument form when building against OCaml >= 5.0.
+16
docs/failures/ocaml-freestanding.md
··· 1 + # ocaml-freestanding.0.6.7 2 + 3 + **Error category:** Missing dependency (Solo5 bindings) 4 + 5 + **Error lines:** 6 + ``` 7 + ./configure.sh 8 + ERROR: No supported Solo5 bindings package found. 9 + ERROR: solo5-bindings-hvt, solo5-bindings-spt, solo5-bindings-virtio, 10 + solo5-bindings-muen, solo5-bindings-genode or solo5-bindings-xen 11 + must be installed. 12 + ``` 13 + 14 + **Root cause:** The package requires at least one Solo5 bindings package to be installed. None of the supported Solo5 backend packages are present. 15 + 16 + **Suggested fix:** Add a dependency on at least one Solo5 bindings package in the opam file, e.g., `"solo5-bindings-hvt" | "solo5-bindings-spt"` as a disjunction in `depends`. This is a Mirage unikernel support package that needs a specific target platform binding.
+16
docs/failures/ocaml-protoc-plugin.md
··· 1 + # ocaml-protoc-plugin.0.9 2 + 3 + **Error category:** Dependency API incompatibility (pbrt) 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/spec/descriptor_pb.ml", line 1619, characters 19-34: 8 + 1619 | Pbrt.Encoder.key (1, Pbrt.Bytes) encoder; 9 + ^^^^^^^^^^^^^^^ 10 + Error: This expression has type 'a * 'b 11 + but an expression was expected of type int 12 + ``` 13 + 14 + **Root cause:** The `Pbrt.Encoder.key` function signature changed in a newer version of the `ocaml-protoc`/`pbrt` library. It now expects an `int` instead of a `(int * payload_kind)` tuple. 15 + 16 + **Suggested fix:** Add an upper bound on `pbrt` or `ocaml-protoc` in the opam file to pin to a compatible version, e.g., `"ocaml-protoc" {< "3.0"}`.
+20
docs/failures/ocaml-r.0.1.0.md
··· 1 + # ocaml-r.0.1.0 2 + 3 + **Error category:** Missing system dependency (R headers) 4 + 5 + **Error lines:** 6 + ``` 7 + reduction_stub.c:39:10: fatal error: R.h: No such file or directory 8 + 39 | #include <R.h> 9 + | ^~~~~ 10 + compilation terminated. 11 + ``` 12 + 13 + **Root cause:** The R language header files are not installed. Multiple C stub files all fail with the same missing `R.h` header. 14 + 15 + **Suggested fix:** Add a depext for the R development headers in the opam file: 16 + ``` 17 + depexts: [ 18 + ["r-base-dev"] {os-distribution = "debian"} 19 + ] 20 + ```
+20
docs/failures/ocaml-r.0.5.0.md
··· 1 + # ocaml-r.0.5.0 2 + 3 + **Error category:** Missing system dependency (R headers) 4 + 5 + **Error lines:** 6 + ``` 7 + s3_stub.c:39:10: fatal error: R.h: No such file or directory 8 + 39 | #include <R.h> 9 + | ^~~~~ 10 + compilation terminated. 11 + ``` 12 + 13 + **Root cause:** Same as ocaml-r.0.1.0 -- the R language development headers (`R.h`) are not installed in the build environment. All C stub files fail. 14 + 15 + **Suggested fix:** Add a depext for R development headers in the opam file: 16 + ``` 17 + depexts: [ 18 + ["r-base-dev"] {os-distribution = "debian"} 19 + ] 20 + ```
+26
docs/failures/ocamlformat.0.9.1.md
··· 1 + # ocamlformat.0.9.1 2 + 3 + **Build dir:** build-de0ba285b8cd 4 + 5 + **Error category:** Dependency API incompatibility (cmdliner) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "src/Conf.ml", line 119, characters 10-19: 11 + 119 | match Term.eval (Term.(ret (const validate $ tuple !args)), info) with 12 + ^^^^^^^^^ 13 + Error: Unbound value Term.eval 14 + ``` 15 + 16 + ## Root cause 17 + 18 + `Term.eval` was removed in cmdliner >= 1.1.0, replaced by `Cmd.eval`. This old version of ocamlformat uses the pre-1.1.0 cmdliner API. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound version constraint on cmdliner in the opam file: 23 + 24 + ``` 25 + depends: [ "cmdliner" {< "1.1.0"} ] 26 + ```
+21
docs/failures/ocsigen-start-2.15.1.md
··· 1 + # ocsigen-start.2.15.1 2 + 3 + **Error category:** Compiler incompatibility (API change in lwt) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/os_comet.eliom", line 100, characters 4-20: 9 + 100 | | Lwt_stream.Error exn -> 10 + ^^^^^^^^^^^^^^^^ 11 + Error: Unbound constructor Lwt_stream.Error 12 + [ERROR] The compilation of ocsigen-start.2.15.1 failed at "make -j39". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The code matches on `Lwt_stream.Error`, a constructor that was removed from `lwt` in version 5.x. The installed version of lwt no longer provides this exception constructor. 18 + 19 + ## Suggested fix 20 + 21 + Add a version constraint on `lwt` in the opam file: `"lwt" {< "5.0"}`, or update to a newer ocsigen-start release that is compatible with lwt 5.x.
+21
docs/failures/ocsigen-start-2.16.1.md
··· 1 + # ocsigen-start.2.16.1 2 + 3 + **Error category:** Compiler incompatibility (API change in lwt) 4 + 5 + ## Error 6 + 7 + ``` 8 + File "src/os_comet.eliom", line 100, characters 4-20: 9 + 100 | | Lwt_stream.Error exn -> 10 + ^^^^^^^^^^^^^^^^ 11 + Error: Unbound constructor Lwt_stream.Error 12 + [ERROR] The compilation of ocsigen-start.2.16.1 failed at "make -j39". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + Same as ocsigen-start.2.15.1: `Lwt_stream.Error` was removed in lwt 5.x. 18 + 19 + ## Suggested fix 20 + 21 + Add `"lwt" {< "5.0"}` to the opam depends, or upgrade to a newer ocsigen-start release.
+20
docs/failures/ocsigen-start-2.18.0.md
··· 1 + # ocsigen-start.2.18.0 2 + 3 + **Error category:** Missing system tool (eliomdep not found) 4 + 5 + ## Error 6 + 7 + ``` 8 + eliomdep -server -ppx ... src/os_core_db.ml > _deps/src/os_core_db.ml.server 9 + /bin/sh: 1: eliomdep: not found 10 + make: *** [Makefile:197: _deps/src/os_core_db.ml.server] Error 127 11 + [ERROR] The compilation of ocsigen-start.2.18.0 failed at "make -j39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `eliomdep` tool (provided by the `eliom` package) is not in `$PATH`. The `eliom` package likely failed to build (see `eliom.8.4.8` failure), so its tools are not available. 17 + 18 + ## Suggested fix 19 + 20 + Fix the `eliom` package build first. This is a cascading failure. Ensure `eliom` is listed in the opam depends and builds successfully.
+20
docs/failures/ocsigen-start-2.21.1.md
··· 1 + # ocsigen-start.2.21.1 2 + 3 + **Error category:** Missing system tool (eliomdep not found) 4 + 5 + ## Error 6 + 7 + ``` 8 + eliomdep -server -ppx ... src/os_core_db.ml > _deps/src/os_core_db.ml.server 9 + /bin/sh: 1: eliomdep: not found 10 + make: *** [Makefile:197: _deps/src/os_core_db.ml.server] Error 127 11 + [ERROR] The compilation of ocsigen-start.2.21.1 failed at "make -j39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as ocsigen-start.2.18.0: `eliomdep` is not available because `eliom` failed to build. 17 + 18 + ## Suggested fix 19 + 20 + Fix the `eliom` package build first. This is a cascading failure.
+18
docs/failures/odepack.md
··· 1 + # odepack.0.7 2 + 3 + **Error category:** Compiler incompatibility (Fortran) 4 + 5 + **Error lines:** 6 + ``` 7 + opkdmain.f:3458:49: 8 + Error: Type mismatch between actual argument at (1) and actual argument 9 + at (2) (REAL(8)/INTEGER(4)). 10 + 11 + opkdmain.f:16336:9: 12 + Error: Type mismatch between actual argument at (1) and actual argument 13 + at (2) (REAL(8)/INTEGER(4)). 14 + ``` 15 + 16 + **Root cause:** The bundled Fortran source code has type mismatches between `REAL(8)` and `INTEGER(4)` arguments at call sites. Modern gfortran (>= 10) treats these argument type mismatches as errors by default (previously only warnings). 17 + 18 + **Suggested fix:** Add `-fallow-argument-mismatch` to the Fortran compiler flags, or add a version constraint on the package. In the opam file, this could be done via a patch or by setting `FFLAGS` in the build environment.
+15
docs/failures/orrandomForest.md
··· 1 + # orrandomForest.3.0.0 2 + 3 + **Error category:** Install script failure (R package installation) 4 + 5 + **Error lines:** 6 + ``` 7 + [orrandomForest: R CMD] 8 + + /usr/bin/R "CMD" "BATCH" "install_randomForest.r" 9 + [ERROR] The installation of orrandomForest failed at "R CMD BATCH install_randomForest.r". 10 + install failed... 11 + ``` 12 + 13 + **Root cause:** The install step runs `R CMD BATCH install_randomForest.r` to install the R `randomForest` package, but this fails. This is likely because the R package installation requires network access (to download from CRAN) which is not available in the sandboxed build environment, or R library write permissions are insufficient. 14 + 15 + **Suggested fix:** The opam package should pre-install the required R packages via depexts if available as system packages, e.g., `"r-cran-randomforest"` on Debian. Alternatively, the package needs to handle the case where the R package is already installed.
+23
docs/failures/otaglibc.md
··· 1 + # otaglibc.0.1.0 2 + 3 + **Error category:** Missing system dependency (pkg-config package) 4 + 5 + **Error lines:** 6 + ``` 7 + run: /usr/bin/pkgconf --personality x86_64-pc-linux-gnu --print-errors 'taglib_c >= 2.0.0' 8 + -> process exited with code 1 9 + Package taglib_c was not found in the pkg-config search path. 10 + Perhaps you should add the directory containing `taglib_c.pc' 11 + to the PKG_CONFIG_PATH environment variable 12 + Package 'taglib_c', required by 'virtual:world', not found 13 + ``` 14 + 15 + **Root cause:** The `taglib_c` pkg-config package (version >= 2.0.0) is not installed. This is the C binding to the TagLib audio metadata library. 16 + 17 + **Suggested fix:** Add a depext for the TagLib development package in the opam file: 18 + ``` 19 + depexts: [ 20 + ["libtagc0-dev"] {os-distribution = "debian"} 21 + ] 22 + ``` 23 + Note: Debian Bookworm ships TagLib 1.x, so the `>= 2.0.0` version requirement may not be satisfiable on this distribution. The package may need a version constraint or a newer distro.
+15
docs/failures/owi.md
··· 1 + # owi.0.2 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/dune", line 82, characters 2-4: 8 + 82 | hc 9 + ^^ 10 + Error: Library "hc" not found. 11 + ``` 12 + 13 + **Root cause:** The `hc` OCaml library (hash-consing library) is not installed. It is required by owi but was not resolved by the solver. 14 + 15 + **Suggested fix:** Ensure `"hc"` is listed in the `depends` field of the opam file. If it is already listed, the solver may have failed to install it.
+26
docs/failures/ppx_cstubs.0.6.1.1.md
··· 1 + # ppx_cstubs.0.6.1.1 2 + 3 + **Build dir:** build-7acf4667dde1 4 + 5 + **Error category:** Dependency API incompatibility (containers) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "src/internal/std.mli", line 123, characters 34-49: 11 + 123 | type ('a, 'b) result = ('a, 'b) CCResult.result = 12 + ^^^^^^^^^^^^^^^ 13 + Error: Unbound type constructor CCResult.result 14 + ``` 15 + 16 + ## Root cause 17 + 18 + The `CCResult.result` type was removed from the `containers` library. In modern versions of containers (>= 3.0), `CCResult` no longer re-exports a `result` type alias since `result` is in `Stdlib` since OCaml 4.03. 19 + 20 + ## Suggested fix 21 + 22 + Add an upper-bound version constraint on containers in the opam file: 23 + 24 + ``` 25 + depends: [ "containers" {< "3.0"} ] 26 + ```
+28
docs/failures/ppx_show.0.2.1.md
··· 1 + # ppx_show.0.2.1 2 + 3 + **Build dir:** build-d87740b870ac 4 + 5 + **Error category:** Missing dependency (stdcompat not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "src/dune", line 7, characters 20-29: 11 + 7 | (libraries ppxlib stdcompat)) 12 + ^^^^^^^^^ 13 + Error: Library "stdcompat" not found. 14 + ``` 15 + 16 + ## Root cause 17 + 18 + The `stdcompat` library is not installed in the build environment. It should be listed as a dependency in the opam file but may be missing or the solver failed to install it. 19 + 20 + ## Suggested fix 21 + 22 + Ensure `stdcompat` is listed in the opam file dependencies: 23 + 24 + ``` 25 + depends: [ "stdcompat" ] 26 + ``` 27 + 28 + If it is already listed, the solver may have failed to install it -- check the solver output for conflicts.
+28
docs/failures/ppx_test.1.8.0.md
··· 1 + # ppx_test.1.8.0 2 + 3 + **Build dir:** build-bea7d8f5d024 4 + 5 + **Error category:** Missing dependency (ppxx not installed) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "ppx/dune", line 6, characters 22-26: 11 + 6 | (libraries re ppxlib ppxx ppx_test.runtime)) 12 + ^^^^ 13 + Error: Library "ppxx" not found. 14 + ``` 15 + 16 + ## Root cause 17 + 18 + The `ppxx` library is not installed in the build environment. It should be listed as a dependency in the opam file but may be missing or the solver failed to install it. 19 + 20 + ## Suggested fix 21 + 22 + Ensure `ppxx` is listed in the opam file dependencies: 23 + 24 + ``` 25 + depends: [ "ppxx" ] 26 + ``` 27 + 28 + If it is already listed, the solver may have failed to install it -- check the solver output for conflicts.
+16
docs/failures/protocol-9p-tool.md
··· 1 + # protocol-9p-tool.0.11.2 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/jbuild", line 5, characters 26-42: 8 + 5 | (libraries (protocol-9p protocol-9p-unix logs logs.fmt rresult win-error 9 + ^^^^^^^^^^^^^^^^ 10 + Error: Library "protocol-9p-unix" not found. 11 + Hint: try: dune external-lib-deps --missing -p protocol-9p-tool -j 39 @install 12 + ``` 13 + 14 + **Root cause:** The `protocol-9p-unix` library is not installed. This is a co-installable package from the same project that provides Unix-specific 9P protocol support. 15 + 16 + **Suggested fix:** Add `"protocol-9p-unix"` to the `depends` field in the opam file.
+15
docs/failures/proverif.md
··· 1 + # proverif.2.00 2 + 3 + **Error category:** Compiler incompatibility (OCaml >= 4.03) 4 + 5 + **Error lines:** 6 + ``` 7 + File "main.ml", line 641, characters 15-31: 8 + 641 | let s_up = String.uppercase s0 in 9 + ^^^^^^^^^^^^^^^^ 10 + Error: Unbound value String.uppercase 11 + ``` 12 + 13 + **Root cause:** `String.uppercase` was removed in OCaml 4.03+. It was replaced by `String.uppercase_ascii`. The build appeared to succeed but the binary was not produced, causing the install step to fail with `cp: cannot stat 'proverif': No such file or directory`. 14 + 15 + **Suggested fix:** Add an upper bound on OCaml: `"ocaml" {< "5.0"}` or more accurately `{< "4.03"}` depending on when `String.uppercase` was fully removed. The package needs upstream patching to use `String.uppercase_ascii`.
+16
docs/failures/quill.md
··· 1 + # quill.1.0.0~alpha0 2 + 3 + **Error category:** Missing OCaml library dependencies (multiple) 4 + 5 + **Error lines:** 6 + ``` 7 + Error: Library "hugin" not found. 8 + Error: Library "hugin.usdl" not found. 9 + Error: Library "cairo2" not found. 10 + Error: Program wasm_of_ocaml not found in the tree or in PATH 11 + Hint: opam install wasm_of_ocaml-compiler 12 + ``` 13 + 14 + **Root cause:** Multiple missing dependencies: the `hugin` library (which itself fails to build due to missing `cairo2`), `cairo2`, and the `wasm_of_ocaml` compiler tool. 15 + 16 + **Suggested fix:** Ensure the opam file includes `"hugin"`, `"cairo2"`, and `"wasm_of_ocaml-compiler"` in the `depends` field. The `hugin` dependency has its own build failure (missing cairo2), so fixing that is a prerequisite.
+21
docs/failures/raygui-1.3.0.md
··· 1 + # raygui.1.3.0 2 + 3 + **Error category:** Missing opam dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Error: Library "raylib_fixed_types" not found. 9 + -> required by library "raygui_functions" in _build/default/src/c/functions 10 + Error: Library "raylib" not found. 11 + -> required by library "raygui" in _build/default/src/raygui 12 + [ERROR] The compilation of raygui.1.3.0 failed at "dune build -p raygui -j 39 @install". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The `raygui` package depends on the `raylib` OCaml library at build time, but `raylib` is not installed (it also fails to build -- see raylib failures). The dune build cannot find `raylib_fixed_types` and `raylib` libraries. 18 + 19 + ## Suggested fix 20 + 21 + Ensure `raylib` is listed as a dependency in the opam file and that a compatible version of `raylib` is installable. Since raylib itself fails to build (missing X11 depexts), fixing raylib's depexts will cascade to fix this package.
+21
docs/failures/raygui-1.3.1.md
··· 1 + # raygui.1.3.1 2 + 3 + **Error category:** Missing opam dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + Error: Library "raylib_fixed_types" not found. 9 + -> required by library "raygui_functions" in _build/default/src/c/functions 10 + Error: Library "raylib" not found. 11 + -> required by library "raygui" in _build/default/src/raygui 12 + [ERROR] The compilation of raygui.1.3.1 failed at "dune build -p raygui -j 39 @install". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + Same as raygui.1.3.0: the `raylib` library dependency is not installed because raylib itself fails to build due to missing X11 depexts. 18 + 19 + ## Suggested fix 20 + 21 + Fix the raylib package's depexts (add `libxrandr-dev` etc.), which will allow raygui to build successfully.
+26
docs/failures/raylib-1.0.0.md
··· 1 + # raylib.1.0.0 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + external/glfw/src/x11_platform.h:39:10: fatal error: X11/extensions/Xrandr.h: No such file or directory 9 + 39 | #include <X11/extensions/Xrandr.h> 10 + compilation terminated. 11 + [ERROR] The compilation of raylib.1.0.0 failed at "dune build -p raylib -j 39 @install". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The vendored GLFW requires X11 Xrandr development headers, which are not installed. The package is missing a depext for `libxrandr-dev`. 17 + 18 + ## Suggested fix 19 + 20 + Add the missing depext: 21 + 22 + ``` 23 + depexts: [ 24 + ["libxrandr-dev" "libxcursor-dev" "libxi-dev" "libxinerama-dev"] {os-family = "debian"} 25 + ] 26 + ```
+26
docs/failures/raylib-1.1.0.md
··· 1 + # raylib.1.1.0 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + external/glfw/src/x11_platform.h:39:10: fatal error: X11/extensions/Xrandr.h: No such file or directory 9 + 39 | #include <X11/extensions/Xrandr.h> 10 + compilation terminated. 11 + [ERROR] The compilation of raylib.1.1.0 failed at "dune build -p raylib -j 39 @install". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + Same as raylib.1.0.0: missing X11 Xrandr development headers for the vendored GLFW. 17 + 18 + ## Suggested fix 19 + 20 + Add the missing depext: 21 + 22 + ``` 23 + depexts: [ 24 + ["libxrandr-dev" "libxcursor-dev" "libxi-dev" "libxinerama-dev"] {os-family = "debian"} 25 + ] 26 + ```
+27
docs/failures/raylib-1.6.0.md
··· 1 + # raylib.1.6.0 2 + 3 + **Error category:** Missing system dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + external/glfw/src/x11_platform.h:39:10: fatal error: X11/extensions/Xrandr.h: No such file or directory 9 + 39 | #include <X11/extensions/Xrandr.h> 10 + compilation terminated. 11 + make: *** [Makefile:734: rglfw.o] Error 1 12 + [ERROR] The compilation of raylib.1.6.0 failed at "dune build -p raylib -j 39 @install". 13 + ``` 14 + 15 + ## Root cause 16 + 17 + Same as raylib.1.0.0/1.1.0: missing X11 Xrandr development headers for the vendored GLFW. 18 + 19 + ## Suggested fix 20 + 21 + Add the missing depext: 22 + 23 + ``` 24 + depexts: [ 25 + ["libxrandr-dev" "libxcursor-dev" "libxi-dev" "libxinerama-dev"] {os-family = "debian"} 26 + ] 27 + ```
+32
docs/failures/refl.0.2.0.md
··· 1 + # refl.0.2.0 2 + 3 + **Build dir:** build-e8517dd43b30 4 + 5 + **Error category:** Missing dependencies (cascading failure) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "runtime/dune", line 8, characters 20-28: 11 + 8 | (libraries metapp traverse)) 12 + ^^^^^^^^ 13 + Error: Library "traverse" not found. 14 + 15 + File "ppx/dune", line 10, characters 27-33: 16 + 10 | (libraries compiler-libs metapp stdcompat fix)) 17 + ^^^^^^ 18 + Error: Library "metapp" not found. 19 + 20 + File "ppx/dune", line 5, characters 19-31: 21 + 5 | (preprocess (pps metaquot.ppx)) 22 + ^^^^^^^^^^^^ 23 + Error: Library "metaquot.ppx" not found. 24 + ``` 25 + 26 + ## Root cause 27 + 28 + Cascading failure. Both `metapp` and `traverse` failed to build (metapp due to shared library loading, traverse due to missing metapp), so refl cannot find any of its dependencies. 29 + 30 + ## Suggested fix 31 + 32 + Fix the metapp build first (see metapp.0.4.2.md). The rest of the chain (traverse, metaquot, refl) will resolve.
+14
docs/failures/so.md
··· 1 + # so.0.0.1 2 + 3 + **Error category:** Source download failure 4 + 5 + **Error lines:** 6 + ``` 7 + [ERROR] Failed to get sources of so.0.0.1: curl failed 8 + download failed... https://fs.zapashcanon.fr/archive/so/so-0.0.1.tbz 9 + (curl failed: exited with code 60) 10 + ``` 11 + 12 + **Root cause:** curl exit code 60 indicates an SSL certificate verification failure. The source archive host (`fs.zapashcanon.fr`) has an untrusted or expired TLS certificate. 13 + 14 + **Suggested fix:** The upstream source URL needs to be updated in the opam repository to point to a working mirror, or the host's certificate needs to be renewed. This is an upstream/opam-repository metadata issue.
+27
docs/failures/starpath.0.1.2.md
··· 1 + # starpath.0.1.2 2 + 3 + **Build dir:** build-76204e55a373 4 + 5 + **Error category:** Source download failure 6 + 7 + ## Error 8 + 9 + ``` 10 + [ERROR] Failed to get sources of starpath.0.1.2: HTTP error code 404 11 + download failed... https://github.com/mtoohey31/starpath/archive/refs/tags/0.1.2.tar.gz 12 + (code 404 while downloading https://github.com/mtoohey31/starpath/archive/refs/tags/0.1.2.tar.gz) 13 + ``` 14 + 15 + ## Root cause 16 + 17 + The source tarball URL returns HTTP 404. The upstream repository or tag has been deleted/renamed on GitHub. 18 + 19 + ## Suggested fix 20 + 21 + Mark the package as unavailable in the opam repository, or update the source URL if the repository has moved: 22 + 23 + ``` 24 + available: false 25 + ``` 26 + 27 + Alternatively, if the source exists at a different URL, update the `url` section in the opam file.
+15
docs/failures/statocaml_community.md
··· 1 + # statocaml_community.0.1.0 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "community/dune", line 6, characters 100-115: 8 + 6 | (libraries fmt logs lwt ocf ptime statocaml statocaml_changelog statocaml_github statocaml_profile statocaml_plots str xtmpl) 9 + ^^^^^^^^^^^^^^^ 10 + Error: Library "statocaml_plots" not found. 11 + ``` 12 + 13 + **Root cause:** The `statocaml_plots` library is not installed. It is likely a co-installable package from the same project. 14 + 15 + **Suggested fix:** Add `"statocaml_plots"` to the `depends` field in the opam file.
+22
docs/failures/stk.md
··· 1 + # stk.0.1.0 2 + 3 + **Error category:** Dependency API incompatibility (yojson, tsdl) 4 + 5 + **Error lines:** 6 + ``` 7 + File "lib/props.ml", line 204, characters 65-69: 8 + 204 | let v = w.Ocf.Wrapper.from_json ?def:default json in 9 + ^^^^ 10 + Error: The value json has type 11 + [> `Assoc of ... | `Tuple of 'a list | `Variant of 'c * 'a option ] as 'a 12 + but an expression was expected of type Yojson.Safe.t 13 + The second variant type does not allow tag(s) `Tuple, `Variant 14 + 15 + File "lib/misc.ml", lines 167-217: 16 + Warning 8 [partial-match]: this pattern-matching is not exhaustive. 17 + Here is an example of a case that is not matched: `Locale_changed 18 + ``` 19 + 20 + **Root cause:** Two issues: (1) `Yojson.Safe.t` no longer includes `Tuple` and `Variant` constructors in yojson >= 2.0. (2) The `tsdl` library added new event types (e.g., `Locale_changed`) that are not handled in the pattern match. 21 + 22 + **Suggested fix:** Add upper bounds: `"yojson" {< "2.0.0"}` and `"tsdl" {< "1.0.0"}` (or whichever version added the new events) in the opam file.
+15
docs/failures/stk_rdf.md
··· 1 + # stk_rdf.0.2.0 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "rdf/dune", line 6, characters 12-15: 8 + 6 | (libraries stk rdf) 9 + ^^^ 10 + Error: Library "stk" not found. 11 + ``` 12 + 13 + **Root cause:** The `stk` library is not installed. This is because `stk.0.1.0` itself fails to build (see stk.md). `stk_rdf` depends on `stk` which is broken. 14 + 15 + **Suggested fix:** Fix the `stk` package first (yojson/tsdl compatibility issues). Once `stk` builds, `stk_rdf` should also build.
+13
docs/failures/topiary.md
··· 1 + # topiary.0.2.1 2 + 3 + **Error category:** Toolchain version incompatibility (Rust) 4 + 5 + **Error lines:** 6 + ``` 7 + error: package `clap_builder v4.3.0` cannot be built because it requires 8 + rustc 1.64.0 or newer, while the currently active rustc version is 1.63.0 9 + ``` 10 + 11 + **Root cause:** The Rust toolchain on the system (rustc 1.63.0, from Debian Bookworm) is too old. The `clap_builder` Rust crate dependency requires rustc >= 1.64.0. 12 + 13 + **Suggested fix:** Add a depext or version constraint that ensures a sufficiently new Rust compiler. On Debian, this may require using `rustup` rather than the system rustc. In the opam file, add a constraint like `"conf-rust-2021"` or document the minimum Rust version requirement.
+27
docs/failures/traverse.0.2.0.md
··· 1 + # traverse.0.2.0 2 + 3 + **Build dir:** build-7f1809589b80 4 + 5 + **Error category:** Missing dependency (cascading failure) 6 + 7 + ## Error 8 + 9 + ``` 10 + File "src/dune", line 8, characters 23-29: 11 + 8 | (libraries stdcompat metapp)) 12 + ^^^^^^ 13 + Error: Library "metapp" not found. 14 + 15 + File "traverse_meta/dune", line 9, characters 19-29: 16 + 9 | (preprocess (pps metapp.ppx)) 17 + ^^^^^^^^^^ 18 + Error: Library "metapp.ppx" not found. 19 + ``` 20 + 21 + ## Root cause 22 + 23 + Cascading failure. The `metapp` library failed to build (see metapp.0.4.2.md), so traverse cannot find its dependency. 24 + 25 + ## Suggested fix 26 + 27 + Fix the metapp build first (see metapp.0.4.2.md). No opam metadata change needed for traverse itself.
+15
docs/failures/unison.md
··· 1 + # unison.2.51.5 2 + 3 + **Error category:** Missing OCaml library dependency 4 + 5 + **Error lines:** 6 + ``` 7 + File "src/dune", line 29, characters 31-39: 8 + 29 | (libraries threads unison_lib lablgtk2)) 9 + ^^^^^^^^ 10 + Error: Library "lablgtk2" not found. 11 + ``` 12 + 13 + **Root cause:** The `lablgtk2` library (OCaml bindings for GTK2) is not installed. Unison tries to build a GTK2 GUI frontend but the dependency is missing. 14 + 15 + **Suggested fix:** Add `"lablgtk"` to the `depends` field in the opam file, along with the depext `"libgtk2.0-dev"`. Alternatively, if the GTK frontend is optional, the build system should be modified to skip it when lablgtk2 is not available.
+29
docs/failures/uri.1.9.7.md
··· 1 + # uri.1.9.7 2 + 3 + **Build dir:** build-c56839c0ac95 4 + 5 + **Error category:** Build script error / dependency incompatibility 6 + 7 + ## Error 8 + 9 + ``` 10 + File "config/jbuild", line 4, characters 15-20: 11 + Error: Library "bytes" not found. 12 + Hint: try: jbuilder external-lib-deps --missing -p uri @install 13 + ``` 14 + 15 + The build continues past this error but ultimately fails with warnings-as-errors on deprecated APIs. 16 + 17 + ## Root cause 18 + 19 + The `bytes` compatibility library is no longer available as a standalone findlib package in modern OCaml (>= 4.07), since `bytes` is part of the standard library. The old jbuilder-based build system references it explicitly. Additionally, the code uses deprecated `Re.get` and `sexp_option` APIs. 20 + 21 + ## Suggested fix 22 + 23 + Add an upper-bound OCaml version constraint in the opam file: 24 + 25 + ``` 26 + depends: [ "ocaml" {< "4.07"} ] 27 + ``` 28 + 29 + Or upgrade to a newer version of uri that does not depend on the `bytes` package.
+22
docs/failures/vhd-format.md
··· 1 + # vhd-format.0.12.0 2 + 3 + **Error category:** Dependency API incompatibility (cstruct) 4 + 5 + **Error lines:** 6 + ``` 7 + File "vhd_format/element.ml", line 30, characters 7-18: 8 + 30 | if Cstruct.len x = sector_size 9 + ^^^^^^^^^^^ 10 + Error: Unbound value Cstruct.len 11 + Hint: Did you mean lenv? 12 + 13 + File "vhd_format/f.ml", line 26, characters 19-30: 14 + 26 | for i = 0 to Cstruct.len a - 1 do 15 + ^^^^^^^^^^^ 16 + Error: Unbound value Cstruct.len 17 + Hint: Did you mean lenv? 18 + ``` 19 + 20 + **Root cause:** `Cstruct.len` was removed in cstruct >= 6.2.0. It was replaced by `Cstruct.length`. 21 + 22 + **Suggested fix:** Add an upper bound on cstruct: `"cstruct" {< "6.2.0"}` in the opam file. Alternatively, patch the source to use `Cstruct.length`.
+20
docs/failures/why3-ide.md
··· 1 + # why3-ide.1.6.0 2 + 3 + **Error category:** Missing OCaml dependency 4 + 5 + ## Error 6 + 7 + ``` 8 + checking for lablgtk3 using ocamlfind... no 9 + configure: error: cannot build IDE without lablgtk3. 10 + [ERROR] The compilation of why3-ide.1.6.0 failed at 11 + "./configure --prefix /home/opam/.opam/default ... --enable-ide". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The `lablgtk3` package is not installed, and `why3-ide` requires it for the GTK3-based IDE. The configure script correctly detects its absence and aborts. 17 + 18 + ## Suggested fix 19 + 20 + Ensure `lablgtk3` is in the opam `depends` field and builds successfully. Fix the `lablgtk3` build first -- this is a cascading failure from `lablgtk3` not being available.
+24
docs/failures/z3-4.7.1.md
··· 1 + # z3.4.7.1 2 + 3 + **Error category:** Missing system dependency (EOL software) 4 + 5 + ## Error 6 + 7 + ``` 8 + opam-build: internal error, uncaught exception: 9 + "python2.7": command not found. 10 + ``` 11 + 12 + ## Root cause 13 + 14 + The build system requires Python 2.7 to run Z3's configure/build scripts. Python 2.7 is not available in Debian Bookworm. 15 + 16 + ## Suggested fix 17 + 18 + This version is too old to build on modern distributions. Add an `available` constraint: 19 + 20 + ``` 21 + available: false # Requires Python 2.7 which is EOL 22 + ``` 23 + 24 + Users should use a newer z3 version that supports Python 3.
+24
docs/failures/z3-4.8.14.md
··· 1 + # z3.4.8.14 2 + 3 + **Error category:** Build script error (OCaml 5 incompatibility) 4 + 5 + ## Error 6 + 7 + ``` 8 + ocamlmklib -o api/ml/z3ml -I api/ml -L. api/ml/z3native_stubs.o api/ml/z3enums.cmo api/ml/z3native.cmo api/ml/z3.cmo -lz3 -lstdc++ -ccopt -L$(ocamlfind printconf path)/stublibs -dllpath $(ocamlfind printconf path)/stublibs 9 + Don't know what to do with /home/opam/.opam/default/lib/stublibs 10 + Usage: ocamlmklib [options] <.cmo|.cma|.cmx|.ml|.mli|.o|.a|.obj|.lib|...> 11 + [ERROR] The compilation of z3.4.8.14 failed at "make -C build -j 39". 12 + ``` 13 + 14 + ## Root cause 15 + 16 + The Z3 build system passes `$(ocamlfind printconf path)/stublibs` literally (unsubstituted) to `ocamlmklib` as `-dllpath`. The shell substitution `$(...)` is not expanded because the Makefile uses it as a literal string. In OCaml 5.x, `ocamlmklib` is stricter about unrecognized arguments and rejects the literal path. 17 + 18 + ## Suggested fix 19 + 20 + Add an upper bound on the OCaml version or patch the Z3 Makefile to properly evaluate the shell substitution: 21 + 22 + ``` 23 + depends: [ "ocaml" {< "5.0"} ] 24 + ```
+22
docs/failures/z3-4.8.9.md
··· 1 + # z3.4.8.9-1 2 + 3 + **Error category:** Missing system dependency (EOL software) 4 + 5 + ## Error 6 + 7 + ``` 8 + opam-build: internal error, uncaught exception: 9 + "python2.7": command not found. 10 + ``` 11 + 12 + ## Root cause 13 + 14 + Same as z3.4.7.1: the build system requires Python 2.7, which is not available in Debian Bookworm. 15 + 16 + ## Suggested fix 17 + 18 + ``` 19 + available: false # Requires Python 2.7 which is EOL 20 + ``` 21 + 22 + Users should use z3 >= 4.8.14 which uses Python 3.