Build:
  1. 0
2026-03-04 22:25.29: New job: test obuild.0.2.2, using opam dev
                              from https://github.com/ocaml/opam-repository.git#refs/pull/29448/head (1c68d3db00caace12135a7a71c80a4405afc4013)
                              on debian-13-ocaml-5.4-afl/amd64

To reproduce locally:

cd $(mktemp -d)
git clone --recursive "https://github.com/ocaml/opam-repository.git" && cd "opam-repository" && git fetch origin "refs/pull/29448/head" && git reset --hard 1c68d3db
git fetch origin master
git merge --no-edit f3ca8d6739c241b5e16cab2307b0bf8a5db266e9
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-5.4-afl@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708
USER 1000:1000
WORKDIR /home/opam
RUN sudo ln -f /usr/bin/opam-dev /usr/bin/opam
RUN opam init --reinit -ni
RUN opam option solver=builtin-0install && opam config report
ENV OPAMDOWNLOADJOBS="1"
ENV OPAMERRLOGLEN="0"
ENV OPAMPRECISETRACKING="1"
ENV CI="true"
ENV OPAM_REPO_CI="true"
RUN rm -rf opam-repository/
COPY --chown=1000:1000 . opam-repository/
RUN opam repository set-url --strict default opam-repository/
RUN opam update --depexts || true
RUN opam pin add -k version -yn obuild.0.2.2 0.2.2
RUN opam reinstall obuild.0.2.2; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'obuild.0.2.2' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
RUN (opam reinstall --with-test obuild.0.2.2) || true
RUN opam reinstall --with-test --verbose obuild.0.2.2; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'obuild.0.2.2' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1

END-OF-DOCKERFILE
docker build -f ../Dockerfile .

2026-03-04 22:25.29: Using cache hint "ocaml/opam:debian-13-ocaml-5.4-afl@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708-obuild.0.2.2-1c68d3db00caace12135a7a71c80a4405afc4013"
2026-03-04 22:25.29: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-5.4-afl@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708)
 (user (uid 1000) (gid 1000))
 (workdir /home/opam)
 (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
 (run (network host)
      (shell "opam init --reinit --config .opamrc-sandbox -ni"))
 (run (shell "opam option solver=builtin-0install && opam config report"))
 (env OPAMDOWNLOADJOBS 1)
 (env OPAMERRLOGLEN 0)
 (env OPAMPRECISETRACKING 1)
 (env CI true)
 (env OPAM_REPO_CI true)
 (run (shell "rm -rf opam-repository/"))
 (copy (src .) (dst opam-repository/))
 (run (shell "opam repository set-url --strict default opam-repository/"))
 (run (network host)
      (shell "opam update --depexts || true"))
 (run (shell "opam pin add -k version -yn obuild.0.2.2 0.2.2"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall obuild.0.2.2;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'obuild.0.2.2' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (run (network host)
      (shell "(opam reinstall --with-test obuild.0.2.2) || true"))
 (run (shell  "opam reinstall --with-test --verbose obuild.0.2.2;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'obuild.0.2.2' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
)

2026-03-04 22:25.29: Waiting for resource in pool OCluster
2026-03-04 22:25.30: Waiting for worker…
2026-03-04 22:25.32: Got resource from pool OCluster
Building on doris.caelum.ci.dev
All commits already cached
HEAD is now at f3ca8d6739 Merge pull request #29503 from plermusiaux/release-saltoIL-0.2.1
Merge made by the 'ort' strategy.
 packages/obuild/obuild.0.2.2/opam | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 packages/obuild/obuild.0.2.2/opam

(from ocaml/opam:debian-13-ocaml-5.4-afl@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708)
Unable to find image 'ocaml/opam:debian-13-ocaml-5.4-afl@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708' locally
docker.io/ocaml/opam@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708: Pulling from ocaml/opam
547e6e7b7a55: Pulling fs layer
547e6e7b7a55: Waiting
547e6e7b7a55: Verifying Checksum
547e6e7b7a55: Download complete
547e6e7b7a55: Pull complete
Digest: sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708
Status: Downloaded newer image for ocaml/opam@sha256:42ed2c9d8efc3335db5a4732e5e6ad457f08a04f3b449cc11311494a026c9708
2026-03-04 22:28.59 ---> saved as "4e120fc4949f8c10641fce7fe50efbda1ed497d98d5ec8b2b001f915f1a9ba45"

/: (user (uid 1000) (gid 1000))

/: (workdir /home/opam)

/home/opam: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2026-03-04 22:29.00 ---> saved as "a6fe16266ae3f445676809976d6a245c28382a7341fa7d377d331f4c6b721243"

/home/opam: (run (network host)
                 (shell "opam init --reinit --config .opamrc-sandbox -ni"))
Configuring from /home/opam/.opamrc-sandbox, then /home/opam/.opamrc, and finally from built-in defaults.
Checking for available remotes: rsync and local, git.
  - you won't be able to use mercurial repositories unless you install the hg command on your system.
  - you won't be able to use darcs repositories unless you install the darcs command on your system.

This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted.
You may want to back it up before going further.

Continue? [Y/n] y
[NOTE] The 'jobs' option was reset, its value was 71 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
           opam option jobs=71 --global
Format upgrade done.

<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-03-04 22:29.22 ---> saved as "237e8d893d76939cb0128e809f46fd512ceab58cf7fb9244ac3beedced94bdda"

/home/opam: (run (shell "opam option solver=builtin-0install && opam config report"))
Set to 'builtin-0install' the field solver in global configuration
# opam config report
# opam-version         2.5.0
# self-upgrade         no
# system               arch=x86_64 os=linux os-distribution=debian os-version=13
# solver               builtin-0install
# install-criteria     -changed,-count[avoid-version,solution]
# upgrade-criteria     -count[avoid-version,solution]
# jobs                 255
# repositories         1 (version-controlled)
# pinned               1 (version)
# current-switch       5.4
# invariant            ["ocaml-variants" {= "5.4.0+options"}]
# compiler-packages    ocaml-compiler.5.4.0, ocaml-option-afl.1, ocaml-options-only-afl.1, ocaml-variants.5.4.0+options
# ocaml:native         true
# ocaml:native-tools   true
# ocaml:native-dynlink true
# ocaml:stubsdir       /home/opam/.opam/5.4/lib/ocaml/stublibs:/home/opam/.opam/5.4/lib/ocaml
# ocaml:preinstalled   false
# ocaml:compiler       5.4.0+options+afl
2026-03-04 22:29.22 ---> saved as "47c7c2b50b2de729855c7d0b60f4175e777b584fef44652d3def31313ef51cb4"

/home/opam: (env OPAMDOWNLOADJOBS 1)

/home/opam: (env OPAMERRLOGLEN 0)

/home/opam: (env OPAMPRECISETRACKING 1)

/home/opam: (env CI true)

/home/opam: (env OPAM_REPO_CI true)

/home/opam: (run (shell "rm -rf opam-repository/"))
2026-03-04 22:29.32 ---> saved as "6c0bd9aefd61358565c1980c3012893f87145f2cd39e1e0beb20ce2f558052f6"

/home/opam: (copy (src .) (dst opam-repository/))
2026-03-04 22:29.39 ---> saved as "0060c86d20a0546529ca6c10ffe2336507ae849af6ed03bc8f2e89404b6232f5"

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-04 22:29.57 ---> saved as "1ee5b8619dc8fba9010d74e973a0961eba6de2884c42ff9cee29a0acf96cc70f"

/home/opam: (run (network host)
                 (shell "opam update --depexts || true"))
+ /usr/bin/sudo "apt-get" "update"
- Hit:1 http://deb.debian.org/debian trixie InRelease
- Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
- Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
- Get:4 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [108 kB]
- Fetched 199 kB in 0s (1777 kB/s)
- Reading package lists...
2026-03-04 22:29.58 ---> saved as "3ade3f461bd82329eb6a61850e835386324a2a8544f80de9db537ea872e92ac7"

/home/opam: (run (shell "opam pin add -k version -yn obuild.0.2.2 0.2.2"))
obuild is now pinned to version 0.2.2
2026-03-04 22:29.59 ---> saved as "c280d755a275d55f2162774fbdd00cd539d72ad64b1021c54a12ea1d985b0585"

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall obuild.0.2.2;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'obuild.0.2.2' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
obuild.0.2.2 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 2 packages
  - install obuild    0.2.2 (pinned)
  - install ocamlfind 1.9.8          [required by obuild]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved obuild.0.2.2  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> installed ocamlfind.1.9.8
-> installed obuild.0.2.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-04 22:30.16 ---> saved as "2e36df38f12024f7067d61b2363ca5d5f88a7c9e061a02bb07f72f5ae1851388"

/home/opam: (run (network host)
                 (shell "(opam reinstall --with-test obuild.0.2.2) || true"))
The following actions will be performed:
=== recompile 1 package
  - recompile obuild 0.2.2 (pinned)

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> removed   obuild.0.2.2
-> installed obuild.0.2.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-04 22:30.27 ---> saved as "d3a901ea1b9f2f418d8525264d6cafd73aef89ec69fb748b5db028c1825ff1e0"

/home/opam: (run (shell  "opam reinstall --with-test --verbose obuild.0.2.2;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'obuild.0.2.2' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
The following actions will be performed:
=== recompile 1 package
  - recompile obuild 0.2.2 (pinned)

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  2/4: [obuild: ./bootstrap]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "./bootstrap" (CWD=/home/opam/.opam/5.4/.opam-switch/build/obuild.0.2.2)
- 5.4.0
- COMPILING base/compat
- COMPILING base/location
- COMPILING base/fugue
- COMPILING base/string_utils
- COMPILING base/filepath
- COMPILING base/filesystem
- COMPILING base/cli
- File "cli.ml", line 135, characters 40-51:
- 135 | let command_with_subcommands name ~doc ?description ~commands =
-                                               ^^^^^^^^^^^
- Warning 16 [unerasable-optional-argument]: this optional argument cannot be erased.
- COMPILING core/types
- COMPILING core/gconf
- COMPILING core/filetype
- COMPILING core/dag
- COMPILING core/libname
- COMPILING core/pp
- COMPILING core/expr
- File "expr.ml", lines 147-149, characters 6-34:
- 147 | ......match String_utils.split ':' v ~limit:2 with
- 148 |       | [ _ ] -> ("", v)
- 149 |       | [ p1; rest ] -> (p1, rest)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::rest::_::_
- 
- File "expr.ml", lines 152-154, characters 6-34:
- 152 | ......match String_utils.split '-' rest ~limit:2 with
- 153 |       | [ _ ] -> (p1, rest, "")
- 154 |       | [ p2; p3 ] -> (p1, p2, p3)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::p3::_::_
- COMPILING core/utils
- File "utils.ml", line 97, characters 17-69:
- 97 |           ignore (List.find (fun n -> Filesystem.exists (n p)) names);
-                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 5 [ignored-partial-application]: this function application is partial,
-   maybe some arguments are missing.
- COMPILING core/modname
- COMPILING core/taskdep
- COMPILING core/helper
- COMPILING core/dagutils
- COMPILING core/process
- COMPILING core/findlibConf
- COMPILING core/scheduler
- COMPILING core/prog
- COMPILING core/dependencies
- COMPILING core/generators
- COMPILING core/hier
- COMPILING core/meta
- COMPILING core/metacache
- COMPILING core/obuild_lexer
- COMPILING core/obuild_ast
- COMPILING core/obuild_parser
- File "obuild_parser.ml", line 97, characters 6-15:
- 97 |   let try_split sep =
-            ^^^^^^^^^
- Warning 26 [unused-var]: unused variable try_split.
- COMPILING core/target
- COMPILING core/dist
- COMPILING core/project
- COMPILING core/obuild_validate
- COMPILING core/project_read
- COMPILING core/analyze
- COMPILING core/configure
- COMPILING core/prepare_types
- COMPILING core/ppx_resolver
- COMPILING core/prepare
- COMPILING core/buildprogs
- COMPILING core/build_cstubs
- File "build_cstubs.ml", line 80, characters 4-43:
- 80 |     Filesystem.mkdir_safe autogen_dir 0o755;
-          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- 
- File "build_cstubs.ml", line 252, characters 4-43:
- 252 |     Filesystem.mkdir_safe autogen_dir 0o755;
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- COMPILING core/build
- File "build.ml", lines 374-376, characters 4-87:
- 374 | ....match List.filter (fun x -> x <> []) l with
- 375 |     | [] -> ("", [])
- 376 |     | ((r, x) :: xs) :: ys -> (r, (x :: List.map snd xs) :: List.map (List.map snd) ys)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []::_
- COMPILING core/exception
- COMPILING command/sdist
- COMPILING command/doc
- COMPILING command/init
- COMPILING command/help
- COMPILING command/install
- COPYING modules to root for bootstrap
- COMPILING path_generated
- COMPILING main
- LINKING obuild.bootstrap
- Configuring obuild-0.2.2...
- Detected 2 CPU cores, setting default parallelism to 2
- [  1 of 103] Compiling Location                      
- [  2 of 103] Compiling Compat                        
- File "lib/base/location.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- File "lib/base/compat.ml", line 8, characters 13-15:
- 8 |   let ok x = Ok x
-                  ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 9, characters 16-21:
- 9 |   let error e = Error e
-                     ^^^^^
- Warning 41 [ambiguous-name]: Error belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 11, characters 23-25:
- 11 |   let is_ok = function Ok _ -> true | Error _ -> false
-                             ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 12, characters 26-28:
- 12 |   let is_error = function Ok _ -> false | Error _ -> true
-                                ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 15, characters 6-8:
- 15 |     | Ok x -> Ok (f x)
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 15, characters 14-16:
- 15 |     | Ok x -> Ok (f x)
-                    ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 19, characters 6-8:
- 19 |     | Ok x -> Ok x
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 19, characters 14-16:
- 19 |     | Ok x -> Ok x
-                    ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 23, characters 6-8:
- 23 |     | Ok x -> f x
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 24, characters 17-22:
- 24 |     | Error e -> Error e
-                       ^^^^^
- Warning 41 [ambiguous-name]: Error belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 27, characters 6-8:
- 27 |     | Ok x -> x
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 31, characters 6-8:
- 31 |     | Ok x -> x
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 35, characters 6-8:
- 35 |     | Ok _ -> invalid_arg "Result.get_error"
-            ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/compat.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [  3 of 103] Intfing Fugue                         
- [  4 of 103] Compiling Fugue                         
- [  5 of 103] Intfing String_utils                  
- [  6 of 103] Compiling String_utils                  
- [  7 of 103] Intfing Cli                           
- [  8 of 103] Intfing Filepath                      
- [  9 of 103] Compiling Filepath                      
- [ 10 of 103] Compiling Cli                           
- [ 11 of 103] Intfing Filesystem                    
- [ 12 of 103] Compiling Filesystem                    
- File "lib/base/cli.ml", lines 68-70, characters 4-16:
- 68 | ....match Hashtbl.find ctx.values name with
- 69 |     | VBool b -> b
- 70 |     | _ -> false
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", lines 75-77, characters 4-15:
- 75 | ....match Hashtbl.find ctx.values name with
- 76 |     | VString s -> Some s
- 77 |     | _ -> None
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", lines 87-89, characters 4-15:
- 87 | ....match Hashtbl.find ctx.values name with
- 88 |     | VInt i -> Some i
- 89 |     | _ -> None
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", lines 99-101, characters 4-15:
-  99 | ....match Hashtbl.find ctx.values name with
- 100 |     | VBool b -> Some b
- 101 |     | _ -> None
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", lines 111-114, characters 4-13:
- 111 | ....match Hashtbl.find ctx.values name with
- 112 |     | VStrings l -> l
- 113 |     | VString s -> [ s ]
- 114 |     | _ -> []
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", line 135, characters 40-51:
- 135 | let command_with_subcommands name ~doc ?description ~commands =
-                                               ^^^^^^^^^^^
- Warning 16 [unerasable-optional-argument]: this optional argument cannot be erased.
- 
- File "lib/base/cli.ml", lines 619-621, characters 18-27:
- 619 | ..................match Hashtbl.find values spec.arg_name with
- 620 |                   | VStrings l -> l
- 621 |                   | _ -> []
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type arg_value.
- 
- File "lib/base/cli.ml", line 3, characters 0-11:
- 3 | open Compat
-     ^^^^^^^^^^^
- Warning 45 [open-shadow-label-constructor]: this open statement shadows the
-   constructor Ok (which is later used)
- 
- File "lib/base/cli.ml", line 757, characters 4-6:
- 757 |     Ok ()
-           ^^
- Warning 41 [ambiguous-name]: Ok belongs to several types:
-     Compat.result Stdlib.result.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/base/cli.ml", line 3, characters 0-11:
- 3 | open Compat
-     ^^^^^^^^^^^
- Warning 45 [open-shadow-label-constructor]: this open statement shadows the
-   constructor Error (which is later used)
- 
- File "lib/base/cli.ml", line 22, characters 2-26:
- 22 |   arg_env : string option;
-        ^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 69 [unused-field]: record field arg_env is never read.
-   (However, this field is used to build or mutate values.)
- 
- File "lib/base/filesystem.ml", lines 19-22, characters 14-52:
- 19 | ..............match (Unix.lstat fent).Unix.st_kind with
- 20 |               | Unix.S_DIR -> rmdir_recursive Unix.rmdir fent
- 21 |               | Unix.S_REG -> Unix.unlink fent
- 22 |               | _ -> raise (UnexpectedFileType fent)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Unix.file_kind.
- 
- [ 13 of 103] Linking library dist/build/lib-obuild_base/obuild_base.cmxa
- [ 13 of 103] Linking library dist/build/lib-obuild_base/obuild_base.cmxs
- [ 13 of 103] Linking library dist/build/lib-obuild_base/obuild_base.cma
- [ 14 of 103] Checking dist/build/lib-obuild_base
- [ 15 of 103] Intfing Expr                          
- [ 16 of 103] Intfing Dag                           
- [ 17 of 103] Intfing Modname                       
- [ 18 of 103] Intfing Pp                            
- [ 19 of 103] Intfing Gconf                         
- [ 20 of 103] Compiling Obuild_ast                    
- [ 21 of 103] Compiling Obuild_lexer                  
- File "lib/core/obuild_ast.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [ 22 of 103] Intfing Filetype                      
- [ 23 of 103] Intfing Types                         
- [ 24 of 103] Compiling Expr                          
- File "lib/core/obuild_lexer.ml", line 19, characters 0-54:
- 19 | (** A token with its location and indentation level *)
-      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 50 [unexpected-docstring]: ambiguous documentation comment
- 
- File "lib/core/obuild_lexer.ml", lines 142-147, characters 28-39:
- 142 | ............................function
- 143 |           | ({ tok = BLOCK (name, args); indent; _ }) :: more when indent > kv_indent ->
- 144 |               let cont = String.concat " " (name :: args) in
- 145 |               let v' = if v = "" then cont else v ^ " " ^ cont in
- 146 |               collect v' more
- 147 |           | remaining -> (v, remaining)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type token.
- 
- File "lib/core/obuild_lexer.ml", lines 138-151, characters 17-33:
- 138 | .................function
- 139 |     | [] -> []
- 140 |     | ({ tok = KEY_VALUE (k, v); indent = kv_indent; _ } as kv_tok) :: rest ->
- 141 |         (* Greedily collect BLOCK tokens at strictly higher indentation *)
- 142 |         let rec collect v = function
- ...
- 148 |         in
- 149 |         let full_v, remaining = collect v rest in
- 150 |         { kv_tok with tok = KEY_VALUE (k, full_v) } :: loop remaining
- 151 |     | t :: rest -> t :: loop rest
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type token.
- 
- File "lib/core/obuild_lexer.ml", line 189, characters 40-43:
- 189 |   Printf.sprintf "%d:%d indent=%d %s" t.loc.line t.loc.col t.indent (token_to_string t.tok)
-                                               ^^^
- Warning 41 [ambiguous-name]: loc belongs to several types:
-     located_token Location.located.
-   The first one was selected. Please disambiguate if this is wrong.
- 
- File "lib/core/obuild_lexer.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [ 25 of 103] Compiling Dag                           
- File "lib/core/expr.ml", lines 147-149, characters 6-34:
- 147 | ......match String_utils.split ':' v ~limit:2 with
- 148 |       | [ _ ] -> ("", v)
- 149 |       | [ p1; rest ] -> (p1, rest)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::rest::_::_
- 
- File "lib/core/expr.ml", lines 152-154, characters 6-34:
- 152 | ......match String_utils.split '-' rest ~limit:2 with
- 153 |       | [ _ ] -> (p1, rest, "")
- 154 |       | [ p2; p3 ] -> (p1, p2, p3)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::p3::_::_
- 
- File "lib/core/expr.ml", lines 251-256, characters 10-44:
- 251 | ..........match r with
- 252 |           | Token.RPAREN :: r -> (Paren e, r)
- 253 |           | Token.OR :: _ | Token.AND :: _ ->
- 254 |               let e, r = parse_bin_expr e r in
- 255 |               loop e r
- 256 |           | _ -> raise UnbalancedParenthesis
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Token.t.
- 
- File "lib/core/expr.ml", lines 243-265, characters 4-69:
- 243 | ....match l with
- 244 |     | [] -> raise MalformedExpression
- 245 |     | Token.NOT :: r ->
- 246 |         let e, r = parse_sub_expr r in
- 247 |         (Not e, r)
- ...
- 262 |     | Token.LT :: Token.VER v :: r -> (Lt v, r)
- 263 |     | Token.LE :: Token.VER v :: r -> (Le v, r)
- 264 |     | Token.NE :: Token.VER v :: r -> (Ne v, r)
- 265 |     | z -> raise (UnknownExpression (showList "," Token.to_string z))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Token.t.
- 
- File "lib/core/expr.ml", lines 267-274, characters 4-36:
- 267 | ....match l with
- 268 |     | Token.OR :: r ->
- 269 |         let e, r = parse_sub_expr r in
- 270 |         (Or (expr, e), r)
- 271 |     | Token.AND :: r ->
- 272 |         let e, r = parse_sub_expr r in
- 273 |         (And (expr, e), r)
- 274 |     | _ -> raise MalformedExpression
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Token.t.
- 
- File "lib/core/expr.ml", lines 309-312, characters 2-63:
- 309 | ..match Token.lexer s with
- 310 |   | [] -> raise ExpressionEmpty
- 311 |   | Token.ID name :: constraints -> (name, parse_constraints name constraints)
- 312 |   | x :: _ -> raise (InvalidDependencyName (Token.to_string x))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Token.t.
- 
- [ 26 of 103] Compiling Modname                       
- [ 27 of 103] Compiling Pp                            
- File "lib/core/modname.ml", line 2, characters 0-10:
- 2 | open Fugue
-     ^^^^^^^^^^
- Warning 33 [unused-open]: unused open Fugue.
- 
- [ 28 of 103] Compiling Gconf                         
- [ 29 of 103] Compiling Filetype                      
- File "lib/core/gconf.ml", lines 111-114, characters 18-18:
- 111 | ..................match opt with
- 112 |       | Executable_native | Library_native | Library_bytecode -> true
- 113 |       | Library_plugin -> Sys.os_type = "Unix"
- 114 |       | _ -> false
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type target_option.
- 
- File "lib/core/gconf.ml", lines 121-126, characters 2-11:
- 121 | ..match (opt, value) with
- 122 |   | Executable_profiling, true -> set_target_option_typed Library_profiling true
- 123 |   | Executable_debugging, true -> set_target_option_typed Library_debugging true
- 124 |   | Library_plugin, true -> set_target_option_typed Library_native true
- 125 |   | Library_native, false -> set_target_option_typed Library_plugin false
- 126 |   | _ -> ()
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type target_option.
- 
- File "lib/core/gconf.ml", line 1, characters 0-10:
- 1 | open Fugue
-     ^^^^^^^^^^
- Warning 33 [unused-open]: unused open Fugue.
- 
- [ 30 of 103] Compiling Types                         
- [ 31 of 103] Compiling Obuild_parser                 
- [ 32 of 103] Intfing Taskdep                       
- [ 33 of 103] Intfing Libname                       
- [ 34 of 103] Intfing Utils                         
- [ 35 of 103] Compiling Taskdep                       
- [ 36 of 103] Compiling Libname                       
- [ 37 of 103] Compiling Utils                         
- File "lib/core/obuild_parser.ml", line 200, characters 0-48:
- 200 | (** Parse generator match type from key-value *)
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 50 [unexpected-docstring]: unattached documentation comment (ignored)
- 
- File "lib/core/obuild_parser.ml", lines 206-218, characters 19-29:
- 206 | ...................(
- 207 |         match t.tok with
- 208 |         | KEY_VALUE (key, value) ->
- 209 |             let gen' =
- 210 |               match Compat.string_lowercase key with
- ...
- 215 |               | _ -> gen
- 216 |             in
- 217 |             loop gen' rest
- 218 |         | _ -> loop gen rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 227-238, characters 19-29:
- 227 | ...................(
- 228 |         match t.tok with
- 229 |         | KEY_VALUE (key, value) ->
- 230 |             let gen' =
- 231 |               match Compat.string_lowercase key with
- ...
- 235 |               | _ -> gen
- 236 |             in
- 237 |             loop gen' rest
- 238 |         | _ -> loop gen rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 246-287, characters 19-32:
- 246 | ...................(
- 247 |         match t.tok with
- 248 |         | KEY_VALUE (key, value) ->
- 249 |             let cstubs' =
- 250 |               match Compat.string_lowercase key with
- ...
- 284 |               | _ -> cstubs
- 285 |             in
- 286 |             loop cstubs' rest
- 287 |         | _ -> loop cstubs rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 296-308, characters 19-29:
- 296 | ...................(
- 297 |         match t.tok with
- 298 |         | KEY_VALUE (key, value) ->
- 299 |             let per' =
- 300 |               match Compat.string_lowercase key with
- ...
- 305 |               | _ -> per
- 306 |             in
- 307 |             loop per' rest
- 308 |         | _ -> loop per rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 331-372, characters 17-43:
- 331 | .................(
- 332 |       match t.tok with
- 333 |       | KEY_VALUE (key, value) ->
- 334 |           let lib' =
- 335 |             match Compat.string_lowercase key with
- ...
- 369 |             | _ -> lib
- 370 |           in
- 371 |           parse_library_tokens lib' remaining
- 372 |       | _ -> parse_library_tokens lib rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 391-422, characters 19-29:
- 391 | ...................(
- 392 |         match t.tok with
- 393 |         | KEY_VALUE (key, value) ->
- 394 |             let exe' =
- 395 |               match Compat.string_lowercase key with
- ...
- 419 |               | _ -> exe
- 420 |             in
- 421 |             loop exe' remaining
- 422 |         | _ -> loop exe rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 439-472, characters 19-30:
- 439 | ...................(
- 440 |         match t.tok with
- 441 |         | KEY_VALUE (key, value) ->
- 442 |             let test' =
- 443 |               match Compat.string_lowercase key with
- ...
- 469 |               | _ -> test
- 470 |             in
- 471 |             loop test' remaining
- 472 |         | _ -> loop test rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 483-519, characters 19-33:
- 483 | ...................(
- 484 |         match t.tok with
- 485 |         | KEY_VALUE (key, value) ->
- 486 |             let example' =
- 487 |               match Compat.string_lowercase key with
- ...
- 516 |               | _ -> example
- 517 |             in
- 518 |             loop example' remaining
- 519 |         | _ -> loop example rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 528-560, characters 19-31:
- 528 | ...................(
- 529 |         match t.tok with
- 530 |         | KEY_VALUE (key, value) ->
- 531 |             let bench' =
- 532 |               match Compat.string_lowercase key with
- ...
- 557 |               | _ -> bench
- 558 |             in
- 559 |             loop bench' remaining
- 560 |         | _ -> loop bench rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 569-579, characters 19-30:
- 569 | ...................(
- 570 |         match t.tok with
- 571 |         | KEY_VALUE (key, value) ->
- 572 |             let flag' =
- 573 |               match Compat.string_lowercase key with
- ...
- 576 |               | _ -> flag
- 577 |             in
- 578 |             loop flag' rest
- 579 |         | _ -> loop flag rest)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", lines 618-677, characters 4-13:
- 618 | ....match t.tok with
- 619 |     | KEY_VALUE (key, value) -> (
- 620 |         let p = !proj in
- 621 |         proj :=
- 622 |           match Compat.string_lowercase key with
- ...
- 674 |               let gen = parse_generator_block block_name block_tokens in
- 675 |               { p with project_generators = p.project_generators @ [ gen ] }
- 676 |           | _ -> p)
- 677 |     | _ -> ()
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Obuild_lexer.token.
- 
- File "lib/core/obuild_parser.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- File "lib/core/obuild_parser.ml", line 97, characters 6-15:
- 97 |   let try_split sep =
-            ^^^^^^^^^
- Warning 26 [unused-var]: unused variable try_split.
- 
- [ 38 of 103] Intfing Dagutils                      
- File "lib/core/utils.ml", line 97, characters 17-69:
- 97 |           ignore (List.find (fun n -> Filesystem.exists (n p)) names);
-                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 5 [ignored-partial-application]: this function application is partial,
-   maybe some arguments are missing.
- 
- File "lib/core/utils.ml", lines 124-126, characters 6-17:
- 124 | ......match status with
- 125 |       | Unix.WEXITED 0 -> Some (int_of_string (String_utils.strip_spaces line))
- 126 |       | _ -> None
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Unix.process_status.
- 
- [ 39 of 103] Intfing Helper                        
- [ 40 of 103] Compiling Dagutils                      
- [ 41 of 103] Compiling Helper                        
- [ 42 of 103] Intfing Process                       
- [ 43 of 103] Compiling Process                       
- File "lib/core/process.ml", line 1, characters 0-11:
- 1 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/process.ml", lines 96-98, characters 2-57:
- 96 | ..match pstat with
- 97 |   | Unix.WEXITED 0 -> Success (Buffer.contents p.out.buf, Buffer.contents p.err.buf, Unix.gettimeofday () -. p.time)
- 98 |   | _              -> Failure (Buffer.contents p.err.buf)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Unix.process_status.
- 
- [ 44 of 103] Intfing Generators                    
- [ 45 of 103] Intfing Scheduler                     
- [ 46 of 103] Intfing FindlibConf                   
- [ 47 of 103] Intfing Prog                          
- [ 48 of 103] Compiling Scheduler                     
- [ 49 of 103] Compiling Generators                    
- [ 50 of 103] Compiling FindlibConf                   
- File "lib/core/generators.ml", lines 152-156, characters 2-11:
- 152 | ..match ext with
- 153 |   | Filetype.FileOther s ->
- 154 |       let s_with_dot = "." ^ s in
- 155 |       List.filter (fun gen -> gen.suffix = s || gen.suffix = s_with_dot) (get_all ())
- 156 |   | _ -> []
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/core/generators.ml", line 2, characters 0-11:
- 2 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- [ 51 of 103] Compiling Prog                          
- [ 52 of 103] Intfing Hier                          
- [ 53 of 103] Intfing Meta                          
- [ 54 of 103] Intfing Dependencies                  
- [ 55 of 103] Compiling Hier                          
- [ 56 of 103] Compiling Meta                          
- [ 57 of 103] Compiling Dependencies                  
- [ 58 of 103] Intfing Target                        
- [ 59 of 103] Compiling Target                        
- File "lib/core/meta.ml", lines 143-145, characters 8-37:
- 143 | ........match p with
- 144 |         | Predicate.Neg n -> not (List.mem n constraints)
- 145 |         | _ -> List.mem p constraints.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Predicate.t.
- 
- File "lib/core/meta.ml", lines 158-160, characters 10-40:
- 158 | ..........match p with
- 159 |           | Predicate.Neg n -> not (Hashtbl.mem preds_set n)
- 160 |           | _ -> Hashtbl.mem preds_set p.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Predicate.t.
- 
- File "lib/core/meta.ml", lines 380-387, characters 28-20:
- 380 | ............................function
- 381 |     | COMMA :: ID s :: xs ->
- 382 |         let l, r = parse_predicate xs in
- 383 |         (Predicate.of_string s :: l, r)
- 384 |     | COMMA :: MINUS :: ID s :: xs ->
- 385 |         let l, r = parse_predicate xs in
- 386 |         (Predicate.Neg (Predicate.of_string s) :: l, r)
- 387 |     | xs -> ([], xs)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 393-395, characters 8-93:
- 393 | ........match xs2 with
- 394 |         | RPAREN :: xs3 -> (Predicate.of_string s :: preds, xs3)
- 395 |         | _ -> raise (MetaParseError (name, "expecting ')' after " ^ field ^ "'s predicate")).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 398-400, characters 8-93:
- 398 | ........match xs2 with
- 399 |         | RPAREN :: xs3 -> (Predicate.Neg (Predicate.of_string s) :: preds, xs3)
- 400 |         | _ -> raise (MetaParseError (name, "expecting ')' after " ^ field ^ "'s predicate")).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 389-401, characters 40-20:
- 389 | ........................................function
- 390 |     | LPAREN :: RPAREN :: xs -> ([], xs)
- 391 |     | LPAREN :: ID s :: xs -> (
- 392 |         let preds, xs2 = parse_predicate xs in
- 393 |         match xs2 with
- ...
- 398 |         match xs2 with
- 399 |         | RPAREN :: xs3 -> (Predicate.Neg (Predicate.of_string s) :: preds, xs3)
- 400 |         | _ -> raise (MetaParseError (name, "expecting ')' after " ^ field ^ "'s predicate")))
- 401 |     | xs -> ([], xs)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 416-432, characters 8-28:
- 416 | ........match xs2 with
- 417 |         | PLUSEQ :: S reqs :: xs3 | EQ :: S reqs :: xs3 ->
- 418 |             let deps =
- 419 |               List.map (fun r -> Libname.of_string r)
- 420 |               $ (List.filter (fun x -> x <> "")
- ...
- 429 |               (MetaParseError
- 430 |                  ( pkg_name,
- 431 |                    "parsing requires failed: expected '=' or '+=' followed by quoted dependency \
- 432 |                     list" )).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 440-447, characters 8-94:
- 440 | ........match xs2 with
- 441 |         | EQ :: S v :: xs3 ->
- 442 |             let nacc = { acc with Pkg.warning = acc.Pkg.warning @ [ (preds, v) ] } in
- 443 |             parse pkg_name nacc expecting_rparen xs3
- 444 |         | _ ->
- 445 |             raise
- 446 |               (MetaParseError
- 447 |                  (pkg_name, "parsing warning failed: expected '=' followed by quoted string")).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 450-462, characters 8-102:
- 450 | ........match xs2 with
- 451 |         | PLUSEQ :: S v :: xs3 ->
- 452 |             let nacc =
- 453 |               { acc with Pkg.append_archives = acc.Pkg.append_archives @ [ (preds, v) ] }
- 454 |             in
- ...
- 459 |         | _ ->
- 460 |             raise
- 461 |               (MetaParseError
- 462 |                  (pkg_name, "parsing archive failed: expected '=' or '+=' followed by quoted string"))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 467-480, characters 8-98:
- 467 | ........match xs2 with
- 468 |         | PLUSEQ :: S v :: xs3 ->
- 469 |             let nacc =
- 470 |               { acc with Pkg.append_archives = acc.Pkg.append_archives @ [ (preds, v) ] }
- 471 |             in
- ...
- 477 |             raise
- 478 |               (MetaParseError
- 479 |                  ( pkg_name,
- 480 |                    "parsing plugin failed: expected '=' or '+=' followed by quoted plugin path" )).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 485-491, characters 8-101:
- 485 | ........match xs2 with
- 486 |         | EQ :: S v :: xs3 ->
- 487 |             parse pkg_name { acc with Pkg.ppx = Some (preds, v) } expecting_rparen xs3
- 488 |         | _ ->
- 489 |             raise
- 490 |               (MetaParseError
- 491 |                  (pkg_name, "parsing ppx failed: expected '=' followed by quoted preprocessor path"))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 495-503, characters 8-102:
- 495 | ........match xs2 with
- 496 |         | PLUSEQ :: S v :: xs3 | EQ :: S v :: xs3 ->
- 497 |             parse pkg_name
- 498 |               { acc with Pkg.ppxopt = acc.Pkg.ppxopt @ [ (preds, v) ] }
- 499 |               expecting_rparen xs3
- 500 |         | _ ->
- 501 |             raise
- 502 |               (MetaParseError
- 503 |                  (pkg_name, "parsing ppxopt failed: expected '=' or '+=' followed by quoted options"))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 510-516, characters 26-93:
- 510 | ..........................function
- 511 |           | RPAREN :: zs -> zs
- 512 |           | _ :: zs -> consume zs
- 513 |           | [] ->
- 514 |               raise
- 515 |                 (MetaParseError
- 516 |                    (pkg_name, "unexpected EOF in error field (missing closing parenthesis)"))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 518-523, characters 8-98:
- 518 | ........match consume xs with
- 519 |         | EQ :: S _ :: xs2 -> parse pkg_name acc expecting_rparen xs2
- 520 |         | _ ->
- 521 |             raise
- 522 |               (MetaParseError
- 523 |                  (pkg_name, "parsing error field failed, expected '=' after closing parenthesis")).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 526-536, characters 8-99:
- 526 | ........match xs2 with
- 527 |         | EQ :: S s :: xs3 ->
- 528 |             parse pkg_name
- 529 |               {
- 530 |                 acc with
- ...
- 533 |               expecting_rparen xs3
- 534 |         | _ ->
- 535 |             raise
- 536 |               (MetaParseError (pkg_name, "parsing linkopts failed, expected '=' after predicates")).
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- File "lib/core/meta.ml", lines 403-546, characters 48-61:
- 403 | ................................................function
- 404 |     | [] ->
- 405 |         if expecting_rparen then
- 406 |           raise (MetaParseError (pkg_name, "unclosed package block (missing closing parenthesis)"))
- 407 |         else
- ...
- 543 |           (MetaParseError
- 544 |              ( pkg_name,
- 545 |                "unknown token '" ^ to_string x ^ "' in meta file\n"
- 546 |                ^ String.concat " " (List.map to_string xs) ))
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type t.
- 
- [ 60 of 103] Intfing Metacache                     
- File "lib/core/target.ml", line 218, characters 37-51:
- 218 |       (Gconf.get_target_option_typed Library_native, Gconf.get_target_option_typed Library_bytecode)
-                                            ^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Library_native was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 218, characters 37-51:
- 218 |       (Gconf.get_target_option_typed Library_native, Gconf.get_target_option_typed Library_bytecode)
-                                            ^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Library_native relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 218, characters 83-99:
- 218 |       (Gconf.get_target_option_typed Library_native, Gconf.get_target_option_typed Library_bytecode)
-                                                                                          ^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Library_bytecode was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 218, characters 83-99:
- 218 |       (Gconf.get_target_option_typed Library_native, Gconf.get_target_option_typed Library_bytecode)
-                                                                                          ^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Library_bytecode relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 220, characters 37-54:
- 220 |       (Gconf.get_target_option_typed Executable_native, Gconf.get_target_option_typed Executable_bytecode)
-                                            ^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Executable_native was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 220, characters 37-54:
- 220 |       (Gconf.get_target_option_typed Executable_native, Gconf.get_target_option_typed Executable_bytecode)
-                                            ^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Executable_native relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 220, characters 86-105:
- 220 |       (Gconf.get_target_option_typed Executable_native, Gconf.get_target_option_typed Executable_bytecode)
-                                                                                             ^^^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Executable_bytecode was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 220, characters 86-105:
- 220 |       (Gconf.get_target_option_typed Executable_native, Gconf.get_target_option_typed Executable_bytecode)
-                                                                                             ^^^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Executable_bytecode relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 226, characters 35-52:
- 226 |     (Gconf.get_target_option_typed Library_debugging, Gconf.get_target_option_typed Library_profiling)
-                                          ^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Library_debugging was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 226, characters 35-52:
- 226 |     (Gconf.get_target_option_typed Library_debugging, Gconf.get_target_option_typed Library_profiling)
-                                          ^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Library_debugging relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 226, characters 84-101:
- 226 |     (Gconf.get_target_option_typed Library_debugging, Gconf.get_target_option_typed Library_profiling)
-                                                                                           ^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Library_profiling was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 226, characters 84-101:
- 226 |     (Gconf.get_target_option_typed Library_debugging, Gconf.get_target_option_typed Library_profiling)
-                                                                                           ^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Library_profiling relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 228, characters 35-55:
- 228 |     (Gconf.get_target_option_typed Executable_debugging, Gconf.get_target_option_typed Executable_profiling)
-                                          ^^^^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Executable_debugging was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 228, characters 35-55:
- 228 |     (Gconf.get_target_option_typed Executable_debugging, Gconf.get_target_option_typed Executable_profiling)
-                                          ^^^^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Executable_debugging relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- File "lib/core/target.ml", line 228, characters 87-107:
- 228 |     (Gconf.get_target_option_typed Executable_debugging, Gconf.get_target_option_typed Executable_profiling)
-                                                                                              ^^^^^^^^^^^^^^^^^^^^
- Warning 40 [name-out-of-scope]: Executable_profiling was selected from type Gconf.target_option.
-   It is not visible in the current scope, and will not be selected
-   if the type becomes unknown.
- 
- File "lib/core/target.ml", line 228, characters 87-107:
- 228 |     (Gconf.get_target_option_typed Executable_debugging, Gconf.get_target_option_typed Executable_profiling)
-                                                                                              ^^^^^^^^^^^^^^^^^^^^
- Warning 42 [disambiguated-name]: this use of Executable_profiling relies on
-   type-directed disambiguation,
-   it will not compile with OCaml 4.00 or earlier.
- 
- [ 61 of 103] Intfing Dist                          
- [ 62 of 103] Intfing Project                       
- [ 63 of 103] Compiling Metacache                     
- [ 64 of 103] Compiling Dist                          
- File "lib/core/metacache.ml", line 2, characters 0-11:
- 2 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- [ 65 of 103] Compiling Project                       
- File "lib/core/project.ml", lines 107-109, characters 6-22:
- 107 | ......match target.target_buildable with
- 108 |       | BoolConst true -> BoolConst (Gconf.get_target_option_typed Gconf.Build_tests)
- 109 |       | other -> other
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.runtime_bool.
- 
- File "lib/core/project.ml", lines 136-138, characters 6-22:
- 136 | ......match target.target_buildable with
- 137 |       | BoolConst true -> BoolConst (Gconf.get_target_option_typed Gconf.Build_benchs)
- 138 |       | other -> other
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.runtime_bool.
- 
- File "lib/core/project.ml", lines 164-166, characters 6-22:
- 164 | ......match target.target_buildable with
- 165 |       | BoolConst true -> BoolConst (Gconf.get_target_option_typed Gconf.Build_examples)
- 166 |       | other -> other
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.runtime_bool.
- 
- [ 66 of 103] Compiling Obuild_validate               
- [ 67 of 103] Intfing Analyze                       
- [ 68 of 103] Compiling Analyze                       
- File "lib/core/obuild_validate.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- File "lib/core/obuild_validate.ml", line 7, characters 0-17:
- 7 | open Obuild_lexer
-     ^^^^^^^^^^^^^^^^^
- Warning 33 [unused-open]: unused open Obuild_lexer.
- 
- [ 69 of 103] Compiling Project_read                  
- File "lib/core/analyze.ml", lines 69-71, characters 6-17:
- 69 | ......match name with
- 70 |       | Name.Lib lname -> Some lname
- 71 |       | _ -> None.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/analyze.ml", line 4, characters 0-11:
- 4 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/analyze.ml", lines 225-234, characters 14-27:
- 225 | ..............match preds with
- 226 |               | [ Meta.Predicate.Toploop ] -> ()
- 227 |               | _ ->
- 228 |                   List.iter
- 229 |                     (fun reqDep ->
- 230 |                       log Debug "  library %s depends on %s\n" (Libname.to_string dep)
- 231 |                         (Libname.to_string reqDep);
- 232 |                       Dag.add_edge (Dependency dep) (Dependency reqDep) depsDag;
- 233 |                       loop reqDep)
- 234 |                     reqDeps.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Meta.Predicate.t.
- 
- File "lib/core/analyze.ml", lines 252-256, characters 8-28:
- 252 | ........match target.target_name with
- 253 |         | Name.Lib l ->
- 254 |             Dag.add_node (Dependency l) depsDag;
- 255 |             Dag.add_edge (Dependency l)
- 256 |         | _ -> fun _ _ -> ()
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- [ 70 of 103] Intfing Prepare_types                 
- File "lib/core/prepare_types.mli", line 7, characters 0-10:
- 7 | open Types
-     ^^^^^^^^^^
- Warning 33 [unused-open]: unused open Types.
- 
- [ 71 of 103] Intfing Configure                     
- File "lib/core/project_read.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [ 72 of 103] Compiling Prepare_types                 
- [ 73 of 103] Compiling Configure                     
- File "lib/core/prepare_types.ml", line 8, characters 0-11:
- 8 | open Target
-     ^^^^^^^^^^^
- Warning 33 [unused-open]: unused open Target.
- 
- [ 74 of 103] Intfing Ppx_resolver                  
- [ 75 of 103] Compiling Ppx_resolver                  
- File "lib/core/configure.ml", line 4, characters 0-11:
- 4 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/configure.ml", line 46, characters 4-15:
- 46 | let sanityCheck ?(needs_c_toolchain=false) () =
-          ^^^^^^^^^^^
- Warning 32 [unused-value-declaration]: unused value sanityCheck.
- 
- File "lib/core/ppx_resolver.ml", lines 80-82, characters 8-32:
- 80 | ........match node with
- 81 |         | Dependency dep -> Some dep
- 82 |         | _              -> None
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Analyze.dependency_tag.
- 
- File "lib/core/ppx_resolver.ml", line 25, characters 0-11:
- 25 | open Helper
-      ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- [ 76 of 103] Intfing Prepare                       
- [ 77 of 103] Compiling Prepare                       
- File "lib/core/prepare.ml", line 53, characters 0-11:
- 53 | open Helper
-      ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/prepare.ml", lines 305-319, characters 10-21:
- 305 | ..........match
- 306 |             Filetype.of_filepath fp
- 307 |           with
- 308 |           | Filetype.FileML -> Some (Modname.of_filename f)
- 309 |           | Filetype.FileMLI ->
- ...
- 316 |                 Some (Modname.of_filename f)
- 317 |               else
- 318 |                 None
- 319 |           | _ -> None.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/core/prepare.ml", lines 344-346, characters 8-20:
- 344 | ........match Hashtbl.find conf.project_dep_data dep with
- 345 |         | Internal -> true
- 346 |         | _ -> false.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Analyze.dep_type.
- 
- File "lib/core/prepare.ml", lines 484-488, characters 8-17:
- 484 | ........match r with
- 485 |         | CompileModule _ | CompileDirectory _ | CompileC _ ->
- 486 |             Dag.add_edge (LinkTarget target) r stepsDag;
- 487 |             Dag.add_edge (CheckTarget target) (LinkTarget target) stepsDag
- 488 |         | _ -> ().
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Prepare_types.compile_step.
- 
- File "lib/core/prepare.ml", lines 541-543, characters 8-64:
- 541 | ........match target.target_name with
- 542 |         | Target.Name.Lib l -> l
- 543 |         | _ -> failwith "cstubs can only be used with libraries"
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/prepare.ml", lines 719-721, characters 8-25:
- 719 | ........match target.target_name with
- 720 |         | Target.Name.Lib libname -> autogenDir </> fn (Libname.to_string libname)
- 721 |         | _ -> autogenDir
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/prepare.ml", lines 990-992, characters 10-19:
- 990 | ..........match (target.target_cstubs, target.target_name) with
- 991 |           | Some _, Target.Name.Lib libname -> [ autogenDir </> fn (Libname.to_string libname) ]
- 992 |           | _ -> []
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/prepare.ml", line 57, characters 0-18:
- 57 | open Prepare_types
-      ^^^^^^^^^^^^^^^^^^
- Warning 33 [unused-open]: unused open Prepare_types.
- 
- [ 78 of 103] Intfing Buildprogs                    
- [ 79 of 103] Compiling Buildprogs                    
- File "lib/core/buildprogs.ml", lines 82-87, characters 14-75:
- 82 | ..............function
- 83 |     | Filetype.FileML -> ext
- 84 |     | Filetype.FileMLI -> Filetype.FileCMI
- 85 |     | _ ->
- 86 |         (* It should not happen *)
- 87 |         if buildMode = ByteCode then Filetype.FileCMO else Filetype.FileCMX
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/core/buildprogs.ml", line 241, characters 4-41:
- 241 | let generate_cstubs_type_discovery_source cstubs libname autogen_dir =
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 32 [unused-value-declaration]: unused value generate_cstubs_type_discovery_source.
- 
- File "lib/core/buildprogs.ml", line 273, characters 4-41:
- 273 | let generate_cstubs_function_stubs_source cstubs libname autogen_dir =
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 32 [unused-value-declaration]: unused value generate_cstubs_function_stubs_source.
- 
- File "lib/core/buildprogs.ml", line 317, characters 4-24:
- 317 | let run_cstubs_generator project includes ml_file output_file =
-           ^^^^^^^^^^^^^^^^^^^^
- Warning 32 [unused-value-declaration]: unused value run_cstubs_generator.
- 
- [ 80 of 103] Compiling Build_cstubs                  
- File "lib/core/build_cstubs.ml", line 4, characters 0-11:
- 4 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/build_cstubs.ml", line 80, characters 4-43:
- 80 |     Filesystem.mkdir_safe autogen_dir 0o755;
-          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- 
- File "lib/core/build_cstubs.ml", line 252, characters 4-43:
- 252 |     Filesystem.mkdir_safe autogen_dir 0o755;
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- 
- File "lib/core/build_cstubs.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- File "lib/core/build_cstubs.ml", line 1, characters 0-10:
- 1 | open Fugue
-     ^^^^^^^^^^
- Warning 33 [unused-open]: unused open Fugue.
- 
- File "lib/core/build_cstubs.ml", line 5, characters 0-11:
- 5 | open Printf
-     ^^^^^^^^^^^
- Warning 33 [unused-open]: unused open Stdlib.Printf.
- 
- File "lib/core/build_cstubs.ml", line 6, characters 0-12:
- 6 | open Analyze
-     ^^^^^^^^^^^^
- Warning 33 [unused-open]: unused open Analyze.
- 
- [ 81 of 103] Intfing Build                         
- [ 82 of 103] Compiling Build                         
- File "lib/core/build.ml", lines 77-102, characters 4-50:
-  77 | ....match (Filetype.of_filename bdest, srcTy) with
-  78 |     | (Filetype.FileCMX | Filetype.FileCMO), (Filetype.FileCMX | Filetype.FileCMO) ->
-  79 |         let bml = Filetype.replace_extension bdest Filetype.FileML in
-  80 |         let bmli = Filetype.replace_extension bdest Filetype.FileMLI in
-  81 |         if bml = bsrc then
- ...
-  99 |           "H file " ^ fn_to_string bsrc ^ " changed"
- 100 |         else
- 101 |           "file changed " ^ fp_to_string changedSrc
- 102 |     | _, _ -> fp_to_string changedSrc ^ " changed"
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/core/build.ml", lines 113-115, characters 6-17:
- 113 | ......match (t, o) with
- 114 |       | ByteCode, WithProf -> false
- 115 |       | _ -> true.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Types.ocaml_compiled_type.
- 
- File "lib/core/build.ml", lines 113-115, characters 6-17:
- 113 | ......match (t, o) with
- 114 |       | ByteCode, WithProf -> false
- 115 |       | _ -> true.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Types.ocaml_compilation_option.
- 
- File "lib/core/build.ml", line 4, characters 0-11:
- 4 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "lib/core/build.ml", lines 331-338, characters 22-26:
- 331 | ......................(
- 332 |               match e with
- 333 |               | Hier.FileEntry (_, f) ->
- 334 |                   if Filetype.of_filepath f = Filetype.FileMLI then
- 335 |                     Some m
- 336 |                   else
- 337 |                     None
- 338 |               | _ -> None)
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Hier.file_entry.
- 
- File "lib/core/build.ml", lines 374-376, characters 4-87:
- 374 | ....match List.filter (fun x -> x <> []) l with
- 375 |     | [] -> ("", [])
- 376 |     | ((r, x) :: xs) :: ys -> (r, (x :: List.map snd xs) :: List.map (List.map snd) ys)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []::_
- 
- File "lib/core/build.ml", line 612, characters 10-26:
- 612 |   let rec dep_is_satisfied current_pkg =
-                 ^^^^^^^^^^^^^^^^
- Warning 39 [unused-rec-flag]: unused rec flag.
- 
- File "lib/core/build.ml", lines 651-653, characters 17-29:
- 651 | .................match compileOpt with
- 652 |                  | WithProf -> Meta.Predicate.Gprof :: preds
- 653 |                  | _ -> preds
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Types.ocaml_compilation_option.
- 
- File "lib/core/build.ml", lines 668-678, characters 2-58:
- 668 | ..match target.target_name with
- 669 |   | Name.Lib libname ->
- 670 |       if plugin then
- 671 |         cstate.compilation_builddir_ml Normal </> Libname.to_cmxs compileOpt libname
- 672 |       else
- ...
- 675 |       let outputName =
- 676 |         Utils.to_exe_name compileOpt compiledType (Target.get_target_dest_name target)
- 677 |       in
- 678 |       cstate.compilation_builddir_ml Normal </> outputName
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/build.ml", lines 864-870, characters 6-15:
- 864 | ......match (target.target_cstubs, target.target_name) with
- 865 |       | Some cstubs, Name.Lib libname ->
- 866 |           let autogen_dir = get_cstubs_autogen_dir libname in
- 867 |           let c_lib_name = cstubs.cstubs_external_library_name in
- 868 |           let c_stubs_file = fn (c_lib_name ^ "_stubs.c") in
- 869 |           [ autogen_dir </> o_from_cfile c_stubs_file ]
- 870 |       | _ -> []
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/core/build.ml", lines 960-963, characters 28-44:
- 960 | ............................(
- 961 |         match task with
- 962 |         | CompileC _ -> raise (CCompilationFailed er)
- 963 |         | _ -> raise (CompilationFailed er))..
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Prepare.compile_step.
- 
- File "lib/core/build.ml", line 390, characters 29-36:
- 390 | let check_compilation_needed is_intf dep_descs dir_spec use_thread annot_mode pack_opt use_pp oflags
-                                    ^^^^^^^
- Warning 27 [unused-var-strict]: unused variable is_intf.
- 
- File "lib/core/build.ml", line 582, characters 4-10:
- 582 | let link_c cstate clib_name =
-           ^^^^^^
- Warning 32 [unused-value-declaration]: unused value link_c.
- 
- [ 83 of 103] Intfing Exception                     
- [ 84 of 103] Compiling Exception                     
- [ 85 of 103] Linking library dist/build/lib-obuild_core/obuild_core.cmxa
- [ 85 of 103] Linking library dist/build/lib-obuild_core/obuild_core.cmxs
- [ 85 of 103] Linking library dist/build/lib-obuild_core/obuild_core.cma
- [ 86 of 103] Checking dist/build/lib-obuild_core
- [ 87 of 103] Intfing Help                          
- [ 88 of 103] Intfing Install                       
- [ 89 of 103] Intfing Doc                           
- [ 90 of 103] Intfing Init                          
- [ 91 of 103] Intfing Sdist                         
- [ 92 of 103] Compiling Install                       
- [ 93 of 103] Compiling Help                          
- File "lib/install.ml", lines 22-31, characters 8-20:
- 22 | ........match Filetype.of_filepath (build_dir </> f) with
- 23 |         | Filetype.FileCMX
- 24 |         | Filetype.FileCMI
- 25 |         | Filetype.FileA
- 26 |         | Filetype.FileCMXS
- 27 |         | Filetype.FileCMXA
- 28 |         | Filetype.FileCMA
- 29 |         | Filetype.FileCMT
- 30 |         | Filetype.FileCMTI -> true
- 31 |         | _ -> false.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/install.ml", lines 35-37, characters 6-18:
- 35 | ......match Filetype.of_filepath (build_dir </> f) with
- 36 |       | Filetype.FileEXE -> true
- 37 |       | _ -> false.
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/install.ml", lines 55-57, characters 10-19:
- 55 | ..........match target.target_name with
- 56 |           | Name.Lib _ -> print_target_files target list_lib_files
- 57 |           | _ -> ().
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/install.ml", lines 63-65, characters 10-19:
- 63 | ..........match target.target_name with
- 64 |           | Name.Exe _ -> print_target_files target list_exe_files
- 65 |           | _ -> ().
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Target.Name.t.
- 
- File "lib/install.ml", line 7, characters 0-11:
- 7 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- [ 94 of 103] Compiling Doc                           
- [ 95 of 103] Compiling Init                          
- File "lib/doc.ml", line 5, characters 4-15:
- 5 | let runOcamldoc pp =
-         ^^^^^^^^^^^
- Warning 32 [unused-value-declaration]: unused value runOcamldoc.
- 
- [ 96 of 103] Compiling Sdist                         
- File "lib/sdist.ml", lines 28-30, characters 12-21:
- 28 | ............match Filetype.of_filepath fpath with
- 29 |             | Filetype.FileML | Filetype.FileMLI -> Filesystem.copy_to_dir fpath dest
- 30 |             | _ -> ().
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/sdist.ml", lines 38-40, characters 8-17:
- 38 | ........match Filetype.of_filepath fpath with
- 39 |         | Filetype.FileC | Filetype.FileH -> Filesystem.copy_to_dir fpath dest
- 40 |         | _ -> ().
- Warning 4 [fragile-match]: this pattern-matching is fragile.
-   It will remain exhaustive when constructors are added to type Filetype.t.
- 
- File "lib/sdist.ml", line 3, characters 0-11:
- 3 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- [ 97 of 103] Linking library dist/build/lib-obuild/obuild.cmxa
- [ 97 of 103] Linking library dist/build/lib-obuild/obuild.cmxs
- [ 97 of 103] Linking library dist/build/lib-obuild/obuild.cma
- [ 98 of 103] Checking dist/build/lib-obuild
- [ 99 of 103] Compiling Path_generated                
- File "dist/build/autogen/path_generated.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [100 of 103] Intfing Main                          
- [101 of 103] Compiling Main                          
- File "src/main.ml", line 5, characters 0-11:
- 5 | open Helper
-     ^^^^^^^^^^^
- Warning 44 [open-shadow-identifier]: this open statement shadows the
-   value identifier log (which is later used)
- 
- File "src/main.ml", line 103, characters 5-88:
- 103 |   |> Cli.option_strings "flag" ~doc:"Enable or disable a project flag (can be repeated)"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?placeholder
- 
- File "src/main.ml", line 104, characters 5-76:
- 104 |   |> Cli.option_bool "library-bytecode" ~doc:"Compile libraries as bytecode"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 105, characters 5-72:
- 105 |   |> Cli.option_bool "library-native" ~doc:"Compile libraries as native"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 106, characters 5-79:
- 106 |   |> Cli.option_bool "library-plugin" ~doc:"Compile libraries as native plugin"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 107, characters 5-81:
- 107 |   |> Cli.option_bool "executable-bytecode" ~doc:"Compile executables as bytecode"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 108, characters 5-77:
- 108 |   |> Cli.option_bool "executable-native" ~doc:"Compile executables as native"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 109, characters 5-72:
- 109 |   |> Cli.option_bool "library-profiling" ~doc:"Enable library profiling"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 110, characters 5-72:
- 110 |   |> Cli.option_bool "library-debugging" ~doc:"Enable library debugging"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 111, characters 5-78:
- 111 |   |> Cli.option_bool "executable-profiling" ~doc:"Enable executable profiling"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 112, characters 5-78:
- 112 |   |> Cli.option_bool "executable-debugging" ~doc:"Enable executable debugging"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 113, characters 5-59:
- 113 |   |> Cli.option_bool "build-examples" ~doc:"Build examples"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 114, characters 5-59:
- 114 |   |> Cli.option_bool "build-benchs" ~doc:"Build benchmarks"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 115, characters 5-53:
- 115 |   |> Cli.option_bool "build-tests" ~doc:"Build tests"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default, ?placeholder
- 
- File "src/main.ml", line 116, characters 5-70:
- 116 |   |> Cli.flag "executable-as-obj" ~doc:"Output executable as obj file"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 117, characters 5-50:
- 117 |   |> Cli.flag "annot" ~doc:"Generate .annot files"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 118, characters 5-62:
- 118 |   |> Cli.flag "g" ~short:'g' ~doc:"Compilation with debugging"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional argument ?env
- 
- File "src/main.ml", line 119, characters 5-52:
- 119 |   |> Cli.flag "pg" ~doc:"Compilation with profiling"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", lines 157-158, characters 5-48:
- 157 | .....Cli.option_int "jobs" ~short:'j' ~placeholder:"N" ~default:gconf.parallel_jobs
- 158 |        ~doc:"Maximum number of jobs in parallel"
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional argument ?env
- 
- File "src/main.ml", line 159, characters 5-67:
- 159 |   |> Cli.flag "dot" ~doc:"Dump dependencies dot files during build"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 160, characters 5-77:
- 160 |   |> Cli.flag "noocamlmklib" ~doc:"Do not use ocamlmklib when linking C code"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 190, characters 26-84:
- 190 |   cmd |> Cli.help_flag |> Cli.flag "snapshot" ~doc:"Build a snapshot of the project"
-                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 221, characters 5-96:
- 221 |   |> Cli.option_string "destdir" ~placeholder:"DIR" ~doc:"Override destination where to install"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env, ?default
- 
- File "src/main.ml", line 222, characters 5-66:
- 222 |   |> Cli.flag "opam" ~doc:"Only create the .install file for opam"
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 282, characters 26-68:
- 282 |   cmd |> Cli.help_flag |> Cli.flag "output" ~doc:"Show test outputs"
-                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 48 [eliminated-optional-arguments]: implicit elimination
-   of optional arguments ?short, ?env
- 
- File "src/main.ml", line 7, characters 0-8:
- 7 | open Cli
-     ^^^^^^^^
- Warning 33 [unused-open]: unused open Cli.
- 
- File "src/main.ml", line 400, characters 16-19:
- 400 |       ~run:(fun ctx ->
-                       ^^^
- Warning 27 [unused-var-strict]: unused variable ctx.
- 
- File "src/main.ml", line 456, characters 16-19:
- 456 |       ~run:(fun ctx ->
-                       ^^^
- Warning 27 [unused-var-strict]: unused variable ctx.
- 
- [102 of 103] Linking executable dist/build/obuild/obuild
- [103 of 103] Checking dist/build/obuild
-> compiled  obuild.0.2.2
-> removed   obuild.0.2.2
-> installed obuild.0.2.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-04 22:30.38 ---> saved as "0c1bbac3da8ed5bf3a4c0f04580534840dd86c4eb2399e9226e25f741d99404b"
Job succeeded
2026-03-04 22:30.46: Job succeeded