(for PR #29582)

2026-03-25 23:09.38: New job: test obuild.0.2.2 with ocaml-compiler.5.4.0~beta1, using opam dev
                              from https://github.com/ocaml/opam-repository.git#refs/pull/29582/head (fa5fb3a6a806e832e4c7791145889a6bbe8b64ef)
                              on debian-13-ocaml-5.4/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/29582/head" && git reset --hard fa5fb3a6
git fetch origin master
git merge --no-edit 40ee9f8d41e293fa1327d03c279f5e61e22157f8
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
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 ocaml-compiler.5.4.0~beta1 5.4.0~beta1
RUN opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1; \
    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" != 'ocaml-compiler.5.4.0~beta1' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
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-25 23:09.38: Using cache hint "ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6-ocaml-compiler.5.4.0~beta1-obuild.0.2.2-fa5fb3a6a806e832e4c7791145889a6bbe8b64ef"
2026-03-25 23:09.38: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
 (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 ocaml-compiler.5.4.0~beta1 5.4.0~beta1"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1;\
             \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\" != 'ocaml-compiler.5.4.0~beta1' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (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-25 23:09.38: Waiting for resource in pool OCluster
2026-03-25 23:09.54: Waiting for worker…
2026-03-25 23:12.58: Got resource from pool OCluster
Building on phoebe.caelum.ci.dev
All commits already cached
Updating files:  70% (12977/18536)
Updating files:  71% (13161/18536)
Updating files:  72% (13346/18536)
Updating files:  73% (13532/18536)
Updating files:  74% (13717/18536)
Updating files:  75% (13902/18536)
Updating files:  76% (14088/18536)
Updating files:  77% (14273/18536)
Updating files:  78% (14459/18536)
Updating files:  79% (14644/18536)
Updating files:  80% (14829/18536)
Updating files:  81% (15015/18536)
Updating files:  82% (15200/18536)
Updating files:  83% (15385/18536)
Updating files:  84% (15571/18536)
Updating files:  85% (15756/18536)
Updating files:  86% (15941/18536)
Updating files:  87% (16127/18536)
Updating files:  88% (16312/18536)
Updating files:  89% (16498/18536)
Updating files:  90% (16683/18536)
Updating files:  91% (16868/18536)
Updating files:  92% (17054/18536)
Updating files:  93% (17239/18536)
Updating files:  94% (17424/18536)
Updating files:  95% (17610/18536)
Updating files:  96% (17795/18536)
Updating files:  97% (17980/18536)
Updating files:  98% (18166/18536)
Updating files:  99% (18351/18536)
Updating files: 100% (18536/18536)
Updating files: 100% (18536/18536), done.
HEAD is now at 40ee9f8d41 Merge pull request #29587 from astrada/gdfuse08
Merge made by the 'ort' strategy.
 packages/ocaml-compiler/ocaml-compiler.5.3.0/opam      |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.3/opam        |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.0/opam      |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~alpha1/opam    |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~beta1/opam     |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~beta2/opam     |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.0~rc1/opam  |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.1/opam      |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4/opam        |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.5.0~alpha1/opam    |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.5/opam        |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.6/opam        |  5 ++++-
 packages/ocaml-option-llvm/ocaml-option-llvm.1/opam    | 18 ++++++++++++++++++
 .../ocaml-options-vanilla/ocaml-options-vanilla.1/opam |  1 +
 packages/ocaml-variants/ocaml-variants.5.2.0+msvc/opam |  2 ++
 15 files changed, 69 insertions(+), 12 deletions(-)
 create mode 100644 packages/ocaml-option-llvm/ocaml-option-llvm.1/opam

(from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
Unable to find image 'ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6' locally
docker.io/ocaml/opam@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6: Pulling from ocaml/opam
866771c43bf5: Already exists
1e49bea09367: Already exists
e793768537e6: Already exists
ed323d3d481a: Already exists
7df34a5cd5f1: Already exists
fd712d3eb935: Already exists
4b9fb8c99118: Already exists
9d9a01948b94: Already exists
0f1514f90b32: Already exists
e1ec5a753447: Already exists
03cc323e2f71: Already exists
c09c08ea9749: Already exists
b36b619f8e6b: Already exists
195344ca5274: Already exists
228ee78582a6: Already exists
504bde1c25b3: Already exists
9d8b1356c89f: Already exists
9d8b1356c89f: Already exists
568fb6dda155: Already exists
c499c9198aea: Already exists
048e5e358118: Already exists
871ca48eb45d: Already exists
4f4fb700ef54: Already exists
a5a2568b9df9: Already exists
068cf3106ac8: Already exists
559f54ec9b29: Already exists
798ffd96fde5: Already exists
e9a891bf80d7: Already exists
d720cfe12674: Already exists
c81c932f4a91: Already exists
79f24fa3bb11: Already exists
8c1debcd8c20: Already exists
1bb2cfea7250: Already exists
2b3d3ca75e4c: Already exists
557cacaf263c: Already exists
d10483022eef: Already exists
7b62a90d8223: Already exists
28ce8ea66e72: Already exists
d975909ea717: Already exists
5c215c69c247: Already exists
e7c082452a54: Already exists
f6cbd774d654: Already exists
b40777a84cca: Already exists
7bb5edb9c889: Already exists
020670bcefab: Already exists
46df05d0db83: Already exists
45bde7b38933: Already exists
b4d63fa01ada: Already exists
Digest: sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
Status: Downloaded newer image for ocaml/opam@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
2026-03-25 23:13.03 ---> using "41eea30e3f639c18d8cf57c309ec76919ec7b2398036f7e41744cbce59a133d3" from cache

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

/: (workdir /home/opam)

/home/opam: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2026-03-25 23:13.03 ---> using "4ad7f430d684c40cedc651267e0edf890c044fe4e624255de377c471b4526bac" from cache

/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
Format upgrade done.

<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-03-25 23:13.03 ---> using "71fa58e52457bf6a7eac317c6a6ef1e2bdf53e533a1e4fd04b90c9349347e038" from cache

/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                 71
# repositories         1 (version-controlled)
# pinned               1 (version)
# current-switch       5.4
# invariant            ["ocaml-base-compiler" {= "5.4.0"}]
# compiler-packages    ocaml-base-compiler.5.4.0, ocaml-compiler.5.4.0, ocaml-options-vanilla.1
# 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
2026-03-25 23:13.03 ---> using "ed86081cb38ca125a920162bfe6a4bb7b1c27c6973c917551687c83cf44dbfdf" from cache

/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-25 23:13.03 ---> using "04a48515eea40c32b96da0c71328b4bba0edb66eed83d4f78554b39097cf1f25" from cache

/home/opam: (copy (src .) (dst opam-repository/))
2026-03-25 23:13.04 ---> using "07a68ecb21bed61e4f94fa4dcb50d9c7e84f81448f8ae7e9e9983c91027df4a2" from cache

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-25 23:13.04 ---> using "b26a47ea5c8289d9e604d194e0a5dfeb524275bd8a7c64613ecd9c7e1857f13a" from cache

/home/opam: (run (network host)
                 (shell "opam update --depexts || true"))
+ /usr/bin/sudo "apt-get" "update"
- Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]
- 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 trixie/main amd64 Packages [9671 kB]
- Get:5 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [114 kB]
- Fetched 10.0 MB in 1s (7175 kB/s)
- Reading package lists...
- 
2026-03-25 23:13.04 ---> using "0b343335ec438165d35b471bbf0eb838e16886a027b79662715b77b328e1271c" from cache

/home/opam: (run (shell "opam pin add -k version -yn ocaml-compiler.5.4.0~beta1 5.4.0~beta1"))
ocaml-compiler is now pinned to version 5.4.0~beta1
2026-03-25 23:13.04 ---> using "e1c05b46f28d7574e116a5b10ba98f694969006f7796f6a98c361e246ff746c8" from cache

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1;\
                        \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\" != 'ocaml-compiler.5.4.0~beta1' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
ocaml-compiler.5.4.0~beta1 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== remove 1 package
  - remove    ocaml-base-compiler 5.4.0 (pinned)                [conflicts with ocaml-compiler]
=== downgrade 1 package
  - downgrade ocaml-compiler      5.4.0 to 5.4.0~beta1 (pinned)
=== recompile 6 packages
  - recompile base-domains        base                          [uses ocaml]
  - recompile base-effects        base                          [uses ocaml]
  - recompile base-nnp            base                          [uses base-domains]
  - recompile ocaml               5.4.0                         [uses ocaml-base-compiler]
  - recompile ocaml-config        3                             [uses ocaml-base-compiler]
  - recompile opam-depext         1.2.3                         [uses ocaml]
=== install 1 package
  - install   ocaml-variants      5.4.0~beta1+options           [required by ocaml]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-compiler.5.4.0~beta1  (cached)
-> retrieved ocaml-config.3  (cached)
-> retrieved opam-depext.1.2.3  (cached)
-> removed   base-effects.base
-> removed   base-nnp.base
-> removed   base-domains.base
-> removed   opam-depext.1.2.3
-> removed   ocaml.5.4.0
-> removed   ocaml-config.3
-> removed   ocaml-base-compiler.5.4.0
-> removed   ocaml-compiler.5.4.0
-> installed ocaml-compiler.5.4.0~beta1
-> installed ocaml-variants.5.4.0~beta1+options
-> installed ocaml-config.3
-> installed ocaml.5.4.0
-> installed base-domains.base
-> installed base-effects.base
-> installed base-nnp.base
-> installed opam-depext.1.2.3
[NOTE] Switch invariant was updated to ["ocaml-variants" {= "5.4.0~beta1+options"}]
       Use `opam switch set-invariant' to change it.
Done.

<><> opam-depext.1.2.3 installed successfully <><><><><><><><><><><><><><><><><>
=> opam-depext is unnecessary when used with opam >= 2.1. Please use opam install directly instead
# To update the current shell environment, run: eval $(opam env)
2026-03-25 23:13.04 ---> using "3817a208ed5f7baeb43f88e56244319516f39faddd782fe35a9ef1c9797c14d8" from cache

/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
  - 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-25 23:13.50 ---> saved as "1ba0b0ee0b2757a947cfc300e36c61700233513f0dbc05805469f7ebb45227ad"

/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

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved obuild.0.2.2  (https://opam.ocaml.org/cache)
-> removed   obuild.0.2.2
-> installed obuild.0.2.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 23:14.23 ---> saved as "47940a33665e0887d1c142855c49b968cd33890b4c3b1ac4a332519807cdbdb5"

/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

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/4: [obuild.0.2.2: extract]
-> retrieved obuild.0.2.2  (cached)
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~beta1
- 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 72 CPU cores, setting default parallelism to 72
- [  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                      
- [ 39 of 103] Compiling 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.
- 
- [ 40 of 103] Intfing Helper                        
- [ 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 Generators                    
- [ 49 of 103] Compiling Scheduler                     
- 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)
- 
- [ 50 of 103] Compiling FindlibConf                   
- [ 51 of 103] Compiling Prog                          
- [ 52 of 103] Intfing Hier                          
- [ 53 of 103] Intfing Meta                          
- [ 54 of 103] Compiling Hier                          
- [ 55 of 103] Compiling Meta                          
- [ 56 of 103] Intfing Dependencies                  
- [ 57 of 103] Compiling Dependencies                  
- 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.
- 
- [ 58 of 103] Intfing Metacache                     
- [ 59 of 103] Intfing Target                        
- [ 60 of 103] Compiling Metacache                     
- [ 61 of 103] Compiling Target                        
- 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)
- 
- 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.
- 
- [ 62 of 103] Intfing Dist                          
- [ 63 of 103] Intfing Project                       
- [ 64 of 103] Compiling Dist                          
- [ 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                     
- [ 72 of 103] Compiling Prepare_types                 
- File "lib/core/project_read.ml", line 1:
- Warning 70 [missing-mli]: Cannot find interface file.
- 
- [ 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 Help                          
- [ 93 of 103] Compiling Install                       
- [ 94 of 103] Compiling Doc                           
- 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)
- 
- [ 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-25 23:14.51 ---> saved as "59d7f3f8dfd5b14256f02c5ddfb56bdbbcb2ad15b7e5abd9e26bb2de7c8782ca"
Job succeeded
2026-03-25 23:15.05: Job succeeded