(for PR #29582)

2026-03-25 23:09.43: New job: test chamelon-unix.0.2.1 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 chamelon-unix.0.2.1; \
    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" != 'chamelon-unix.0.2.1' && 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 chamelon-unix.0.2.1) || true
RUN opam reinstall --with-test --verbose chamelon-unix.0.2.1; \
    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" != 'chamelon-unix.0.2.1' && 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.43: Using cache hint "ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6-ocaml-compiler.5.4.0~beta1-chamelon-unix.0.2.1-fa5fb3a6a806e832e4c7791145889a6bbe8b64ef"
2026-03-25 23:09.43: 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 chamelon-unix.0.2.1;\
             \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\" != 'chamelon-unix.0.2.1' && 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 chamelon-unix.0.2.1) || true"))
 (run (shell  "opam reinstall --with-test --verbose chamelon-unix.0.2.1;\
             \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\" != 'chamelon-unix.0.2.1' && 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.43: Waiting for resource in pool OCluster
2026-03-26 00:03.47: Waiting for worker…
2026-03-26 00:06.47: Got resource from pool OCluster
Building on clete.caelum.ci.dev
All commits already cached
Updating files:  69% (12865/18536)
Updating files:  70% (12976/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)
2026-03-26 00:06.54 ---> 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-26 00:06.54 ---> 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-26 00:06.54 ---> 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-26 00:06.54 ---> 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-26 00:06.54 ---> using "04a48515eea40c32b96da0c71328b4bba0edb66eed83d4f78554b39097cf1f25" from cache

/home/opam: (copy (src .) (dst opam-repository/))
2026-03-26 00:06.55 ---> using "07a68ecb21bed61e4f94fa4dcb50d9c7e84f81448f8ae7e9e9983c91027df4a2" from cache

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-26 00:06.55 ---> 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 (9074 kB/s)
- Reading package lists...
2026-03-26 00:06.55 ---> 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-26 00:06.55 ---> 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-26 00:06.55 ---> using "3817a208ed5f7baeb43f88e56244319516f39faddd782fe35a9ef1c9797c14d8" from cache

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall chamelon-unix.0.2.1;\
                        \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\" != 'chamelon-unix.0.2.1' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
chamelon-unix.0.2.1 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 46 packages
  - install angstrom            0.16.1  [required by uri]
  - install astring             0.8.5   [required by bos]
  - install base-bytes          base    [required by ocplib-endian]
  - install bigstringaf         0.10.0  [required by angstrom]
  - install bos                 0.2.1   [required by chamelon-unix]
  - install chamelon            0.2.1   [required by chamelon-unix]
  - install chamelon-unix       0.2.1
  - install checkseum           0.5.2   [required by chamelon]
  - install cmdliner            2.1.0   [required by chamelon-unix]
  - install conf-linux-libc-dev 0       [required by mirage-block-unix]
  - install cppo                1.8.0   [required by lwt]
  - install csexp               1.5.2   [required by dune-configurator]
  - install cstruct             6.2.0   [required by chamelon, mirage-block-unix]
  - install cstruct-lwt         6.2.0   [required by mirage-block-unix]
  - install digestif            1.3.0   [required by chamelon]
  - install dune                3.22.0  [required by chamelon-unix]
  - install dune-configurator   3.22.0  [required by checkseum]
  - install eqaf                0.10    [required by digestif]
  - install fmt                 0.11.0  [required by chamelon-unix]
  - install fpath               0.7.3   [required by bos]
  - install logs                0.10.0  [required by chamelon-unix]
  - install lwt                 6.1.1   [required by chamelon-unix]
  - install mirage-block        3.0.2   [required by chamelon-unix]
  - install mirage-block-unix   2.14.2  [required by chamelon-unix]
  - install mirage-kv           6.1.1   [required by chamelon-unix]
  - install mirage-logs         3.0.0   [required by chamelon-unix]
  - install mirage-ptime        5.2.0   [required by chamelon]
  - install num                 1.6     [required by sexplib]
  - install ocaml-compiler-libs v0.17.0 [required by ppxlib]
  - install ocaml-syntax-shims  1.0.0   [required by angstrom]
  - install ocamlbuild          0.16.1  [required by bos]
  - install ocamlfind           1.9.8   [required by bos]
  - install ocplib-endian       1.2     [required by lwt]
  - install optint              0.3.0   [required by chamelon]
  - install parsexp             v0.17.0 [required by sexplib]
  - install ppx_cstruct         6.2.0   [required by chamelon]
  - install ppx_derivers        1.2.1   [required by ppxlib]
  - install ppxlib              0.37.0  [required by ppx_cstruct]
  - install ptime               1.2.0   [required by chamelon]
  - install rresult             0.7.0   [required by bos, mirage-block-unix]
  - install sexplib             v0.17.0 [required by ppx_cstruct]
  - install sexplib0            v0.17.0 [required by ppxlib, sexplib]
  - install stdlib-shims        0.3.0   [required by ppxlib]
  - install stringext           1.6.0   [required by uri]
  - install topkg               1.1.1   [required by bos]
  - install uri                 4.4.0   [required by mirage-block-unix]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved angstrom.0.16.1  (cached)
-> retrieved astring.0.8.5  (cached)
-> retrieved bigstringaf.0.10.0  (cached)
-> retrieved bos.0.2.1  (cached)
-> retrieved chamelon.0.2.1, chamelon-unix.0.2.1  (https://opam.ocaml.org/cache)
-> retrieved checkseum.0.5.2  (cached)
-> retrieved cmdliner.2.1.0  (cached)
-> retrieved cppo.1.8.0  (cached)
-> retrieved csexp.1.5.2  (cached)
-> retrieved cstruct.6.2.0, cstruct-lwt.6.2.0, ppx_cstruct.6.2.0  (cached)
-> installed conf-linux-libc-dev.0
-> retrieved digestif.1.3.0  (cached)
-> retrieved dune.3.22.0, dune-configurator.3.22.0  (cached)
-> retrieved eqaf.0.10  (cached)
-> retrieved fmt.0.11.0  (cached)
-> retrieved fpath.0.7.3  (cached)
-> retrieved logs.0.10.0  (cached)
-> retrieved lwt.6.1.1  (cached)
-> retrieved mirage-block.3.0.2  (cached)
-> retrieved mirage-block-unix.2.14.2  (cached)
-> retrieved mirage-kv.6.1.1  (cached)
-> retrieved mirage-logs.3.0.0  (cached)
-> retrieved mirage-ptime.5.2.0  (cached)
-> installed cmdliner.2.1.0
-> retrieved num.1.6  (cached)
-> retrieved ocaml-compiler-libs.v0.17.0  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> retrieved ocplib-endian.1.2  (cached)
-> retrieved optint.0.3.0  (cached)
-> retrieved parsexp.v0.17.0  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ppxlib.0.37.0  (cached)
-> retrieved ptime.1.2.0  (cached)
-> retrieved rresult.0.7.0  (cached)
-> retrieved sexplib.v0.17.0  (cached)
-> retrieved sexplib0.v0.17.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved stringext.1.6.0  (cached)
-> retrieved topkg.1.1.1  (cached)
-> retrieved uri.4.4.0  (cached)
-> installed num.1.6
-> installed ocamlfind.1.9.8
-> installed base-bytes.base
-> installed ocamlbuild.0.16.1
-> installed topkg.1.1.1
-> installed rresult.0.7.0
-> installed fmt.0.11.0
-> installed ptime.1.2.0
-> installed astring.0.8.5
-> installed fpath.0.7.3
-> installed dune.3.22.0
-> installed csexp.1.5.2
-> installed cppo.1.8.0
-> installed cstruct.6.2.0
-> installed eqaf.0.10
-> installed mirage-ptime.5.2.0
-> installed ocaml-compiler-libs.v0.17.0
-> installed ocaml-syntax-shims.1.0.0
-> installed optint.0.3.0
-> installed ppx_derivers.1.2.1
-> installed sexplib0.v0.17.0
-> installed stdlib-shims.0.3.0
-> installed stringext.1.6.0
-> installed ocplib-endian.1.2
-> installed digestif.1.3.0
-> installed dune-configurator.3.22.0
-> installed bigstringaf.0.10.0
-> installed parsexp.v0.17.0
-> installed checkseum.0.5.2
-> installed angstrom.0.16.1
-> installed sexplib.v0.17.0
-> installed uri.4.4.0
-> installed lwt.6.1.1
-> installed cstruct-lwt.6.2.0
-> installed mirage-block.3.0.2
-> installed mirage-kv.6.1.1
-> installed logs.0.10.0
-> installed mirage-logs.3.0.0
-> installed mirage-block-unix.2.14.2
-> installed bos.0.2.1
-> installed ppxlib.0.37.0
-> installed ppx_cstruct.6.2.0
-> installed chamelon.0.2.1
-> installed chamelon-unix.0.2.1
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-26 00:10.15 ---> saved as "400f9a48d2dc6d59b7331cdb58a1ab1c78bb9f0f7b576fe67c84101e8c580bdb"

/home/opam: (run (network host)
                 (shell "(opam reinstall --with-test chamelon-unix.0.2.1) || true"))
The following actions will be performed:
=== recompile 1 package
  - recompile chamelon-unix            0.2.1
=== install 8 packages
  - install   alcotest                 1.9.1  [required by chamelon-unix]
  - install   alcotest-lwt             1.9.1  [required by chamelon-unix]
  - install   duration                 0.2.1  [required by mirage-crypto-rng]
  - install   mirage-block-combinators 3.0.2  [required by chamelon-unix]
  - install   mirage-crypto            2.1.0  [required by mirage-crypto-rng]
  - install   mirage-crypto-rng        2.1.0  [required by chamelon-unix]
  - install   re                       1.14.0 [required by alcotest]
  - install   uutf                     1.0.4  [required by alcotest]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved alcotest.1.9.1, alcotest-lwt.1.9.1  (https://opam.ocaml.org/cache)
-> retrieved chamelon-unix.0.2.1  (https://opam.ocaml.org/cache)
-> retrieved duration.0.2.1  (https://opam.ocaml.org/cache)
-> retrieved mirage-block-combinators.3.0.2  (https://opam.ocaml.org/cache)
-> installed duration.0.2.1
-> installed mirage-block-combinators.3.0.2
-> retrieved mirage-crypto.2.1.0, mirage-crypto-rng.2.1.0  (https://opam.ocaml.org/cache)
-> retrieved re.1.14.0  (https://opam.ocaml.org/cache)
-> retrieved uutf.1.0.4  (https://opam.ocaml.org/cache)
-> installed re.1.14.0
-> installed uutf.1.0.4
-> removed   chamelon-unix.0.2.1
-> installed mirage-crypto.2.1.0
-> installed alcotest.1.9.1
-> installed mirage-crypto-rng.2.1.0
-> installed alcotest-lwt.1.9.1
-> installed chamelon-unix.0.2.1
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-26 00:11.14 ---> saved as "950b00f788f4db026420353d6173d4149173210f9c8f8a7c5cbf788f50df5ccc"

/home/opam: (run (shell  "opam reinstall --with-test --verbose chamelon-unix.0.2.1;\
                        \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\" != 'chamelon-unix.0.2.1' && 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 chamelon-unix 0.2.1

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/4: [chamelon-unix.0.2.1: extract]
-> retrieved chamelon-unix.0.2.1  (cached)
Processing  2/4: [chamelon-unix: dune build]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "build" "-p" "chamelon-unix" "-j" "71" (CWD=/home/opam/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1)
Processing  2/4: [chamelon-unix: dune runtest]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "runtest" "-p" "chamelon-unix" "-j" "71" (CWD=/home/opam/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1)
- (cd _build/default/src && /usr/bin/dd if=/dev/urandom of=colossal bs=128K count=1)
- 1+0 records in
- 1+0 records out
- 131072 bytes (131 kB, 128 KiB) copied, 0.00107525 s, 122 MB/s
- (cd _build/default/src && /usr/bin/dd if=/dev/zero of=test.img bs=256K count=1)
- 1+0 records in
- 1+0 records out
- 262144 bytes (262 kB, 256 KiB) copied, 0.000472277 s, 555 MB/s
- (cd _build/default/src && ./chamelon.exe format test.img 4096)
- Formatting test.img as a littlefs filesystem with block size 4096
- (cd _build/default/src && ./chamelon.exe format test.img)
- Formatting test.img as a littlefs filesystem with block size 4096
- (cd _build/default/src && ./chamelon.exe write --verbosity=debug test.img 4096 colossal.bak -) < _build/default/src/colossal
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] found dir for /colossal.bak on block pair 0, 1
- chamelon.exe: [DEBUG] id for "colossal.bak" not found in 2 entries from 0, 1
- chamelon.exe: [DEBUG] writing new file colossal.bak, size 131072 to blocks 0,
-                       1
- chamelon.exe: [DEBUG] wanted 33 blocks, but the lookahead allocator only has 16
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] 2 blocks used: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 18 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 32
- chamelon.exe: [DEBUG] wanted 17 blocks, but the lookahead allocator only has 16
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] 2 blocks used: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 34 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 48
- chamelon.exe: [DEBUG] writing 3 entries for ctz for file colossal.bak of size 131072
- chamelon.exe: [DEBUG] successfully wrote to colossal.bak
- (cd _build/default/src && ./chamelon.exe write --verbosity=debug test.img 4096 autoexec.bat CLS)
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] found dir for /autoexec.bat on block pair 0, 1
- chamelon.exe: [DEBUG] id for "autoexec.bat" not found in 6 entries from 0, 1
- chamelon.exe: [DEBUG] writing new file autoexec.bat, size 3 to blocks 0, 1
- chamelon.exe: [DEBUG] writing 2 entries for inline file autoexec.bat
- chamelon.exe: [DEBUG] successfully wrote to autoexec.bat
- (cd _build/default/src && ./chamelon.exe read --verbosity=debug test.img 4096 config.sys)
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] name "config.sys" is associated with id 3 on blockpair 0,
-                       1
- chamelon.exe: [DEBUG] found 3 entries for id 3 in 0, 1
- chamelon.exe: [DEBUG] here are the tags for the entries for id 3: id 3 (3),
-                                                                   length 12 (c),
-                                                                   valid true,
-                                                                   type is LFS_TYPE_USERATTR 3 with chunk 74
-                       id 3 (3), length 10 (a), valid true,
-                       type is LFS_TYPE_NAME 0 with chunk 1
-                       id 3 (3), length 0 (0), valid true,
-                       type is LFS_TYPE_STRUCT 2 with chunk 1
- chamelon.exe: [DEBUG] after compaction, 3 entries for id 3 in 0, 1
- chamelon.exe: [DEBUG] found 3 entries with name config.sys
- chamelon.exe: [DEBUG] found an inline entry with tag id 3 (3), length 0 (0),
-                                                      valid true,
-                                                      type is LFS_TYPE_STRUCT 2 with chunk 1
- (cd _build/default/src && ./chamelon.exe ls test.img 4096 config.sys)
- /config.sys : file
- (cd _build/default/src && /usr/bin/echo 'key config.sys not found') 2> _build/default/src/read-deleted.expected
- key config.sys not found
- (cd _build/default/src && ./chamelon.exe read test.img 4096 config.sys) > _build/default/src/read-deleted.output
- key config.sys not found
- (cd _build/default/src && ./chamelon.exe write --verbosity=debug test.img 4096 diary.txt 'Dear diary, today I ate cheese. It was great.')
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] found dir for /diary.txt on block pair 0, 1
- chamelon.exe: [DEBUG] id for "diary.txt" not found in 14 entries from 0, 1
- chamelon.exe: [DEBUG] writing new file diary.txt, size 45 to blocks 0, 1
- chamelon.exe: [DEBUG] writing 2 entries for inline file diary.txt
- chamelon.exe: [DEBUG] successfully wrote to diary.txt
- (cd _build/default/src && ./chamelon.exe ls test.img 4096 diary.txt)
- /diary.txt : file
- (cd _build/default/src && ./chamelon.exe write test.img --verbosity=debug 4096 diary.txt 'Dear diary, today I ate cheese. It was a nice sharp cheddar. Delicious.')
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] found dir for /diary.txt on block pair 0, 1
- chamelon.exe: [DEBUG] name "diary.txt" is associated with id 4 on blockpair 0,
-                       1
- chamelon.exe: [DEBUG] found 3 entries for id 4 in 0, 1
- chamelon.exe: [DEBUG] here are the tags for the entries for id 4: id 4 (4),
-                                                                   length 12 (c),
-                                                                   valid true,
-                                                                   type is LFS_TYPE_USERATTR 3 with chunk 74
-                       id 4 (4), length 9 (9), valid true,
-                       type is LFS_TYPE_NAME 0 with chunk 1
-                       id 4 (4), length 45 (2d), valid true,
-                       type is LFS_TYPE_STRUCT 2 with chunk 1
- chamelon.exe: [DEBUG] after compaction, 3 entries for id 4 in 0, 1
- chamelon.exe: [DEBUG] deleting existing entry diary.txt at id 4 on block 0, 1
- chamelon.exe: [DEBUG] writing diary.txt at id 4 inline on blockpair 0, 1
- chamelon.exe: [DEBUG] writing 2 entries for inline file diary.txt
- chamelon.exe: [DEBUG] successfully wrote to diary.txt
- (cd _build/default/src && ./chamelon.exe ls test.img 4096 diary.txt)
- /diary.txt : file
- (cd _build/default/src && ./chamelon.exe read --verbosity=debug test.img 4096 diary.txt) > _build/default/src/rewrite.output
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 2 used blocks on block-based key-value store: 0 1
- chamelon.exe: [DEBUG] trying to find free blocks. 2 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 16 blocks
- chamelon.exe: [DEBUG] name "diary.txt" is associated with id 5 on blockpair 0,
-                       1
- chamelon.exe: [DEBUG] found 3 entries for id 5 in 0, 1
- chamelon.exe: [DEBUG] here are the tags for the entries for id 5: id 5 (5),
-                                                                   length 12 (c),
-                                                                   valid true,
-                                                                   type is LFS_TYPE_USERATTR 3 with chunk 74
-                       id 5 (5), length 9 (9), valid true,
-                       type is LFS_TYPE_NAME 0 with chunk 1
-                       id 5 (5), length 71 (47), valid true,
-                       type is LFS_TYPE_STRUCT 2 with chunk 1
- chamelon.exe: [DEBUG] after compaction, 3 entries for id 5 in 0, 1
- chamelon.exe: [DEBUG] found 3 entries with name diary.txt
- chamelon.exe: [DEBUG] found an inline entry with tag id 5 (5),
-                                                      length 71 (47),
-                                                      valid true,
-                                                      type is LFS_TYPE_STRUCT 2 with chunk 1
- (cd _build/default/src && ./chamelon.exe rm --verbosity=debug test.img 4096 secrets)
- chamelon.exe: [DEBUG] got info from a device with sector size 4096 (0x1000) and 64 (0x40) sectors available
- chamelon.exe: [DEBUG] initiating filesystem with block size 4096 (0x1000)
- chamelon.exe: [DEBUG] mounting fs with file size max 2147483647, name length max 32
- chamelon.exe: [DEBUG] finding blocks linked from 0, 1
- chamelon.exe: [DEBUG] found 1 linked blocks
- chamelon.exe: [DEBUG] finding blocks linked from 17, 16
- chamelon.exe: [DEBUG] found 0 linked blocks
- chamelon.exe: [DEBUG] found 4 used blocks on block-based key-value store: 0 1
-                       17 16
- chamelon.exe: [DEBUG] trying to find free blocks. 4 were reported in-use out of 64
- chamelon.exe: [DEBUG] will try to initialize 16 starting at 16
- chamelon.exe: [DEBUG] populated lookahead allocator with 14 blocks
- chamelon.exe: [DEBUG] found /secrets in a directory starting at 0,
-                       1, will delete
- chamelon.exe: [DEBUG] name "secrets" is associated with id 6 on blockpair 0,
-                       1
- chamelon.exe: [DEBUG] found 2 entries for id 6 in 0, 1
- chamelon.exe: [DEBUG] here are the tags for the entries for id 6: id 6 (6),
-                                                                   length 7 (7),
-                                                                   valid true,
-                                                                   type is LFS_TYPE_NAME 0 with chunk 2
-                       id 6 (6), length 8 (8), valid true,
-                       type is LFS_TYPE_STRUCT 2 with chunk 0
- chamelon.exe: [DEBUG] after compaction, 2 entries for id 6 in 0, 1
- chamelon.exe: [DEBUG] id 6 found for name secrets on block 0, 1
- chamelon.exe: [DEBUG] adding deletion for id 6 on block pair 0, 1
- chamelon.exe: [DEBUG] successfully deleted secrets
- (cd _build/default/src && ./chamelon.exe ls test.img 4096 /secrets)
- key /secrets not found
- (cd _build/default/src && ./chamelon.exe ls test.img 4096 /)
- /diary.txt : file
- (cd _build/default/lib_test && ./test_chamelon.exe)
- Testing `littlefs'.
- This run has ID `0IXQ5N2V'.
- 
-   [OK]          tags               0   read: valid bit.
-   [OK]          tags               1   read: all fields are 1.
-   [OK]          tags               2   read: almost all bits are 1.
-   [OK]          tags               3   write: all bits are 1.
-   [OK]          tags               4   roundtrip print/parse for a data-beari...
-   [OK]          block              0   write a superblock commit to a block.
-   [OK]          block              1   writing a block with different revisio...
-   [OK]          block              2   compacting a block with no deletes has...
-   [OK]          block              3   compacting a block with deletes gives ...
-   [OK]          block              4   splitting a block gets the hardtail ri...
-   [OK]          block              5   roundtrip hardtail conservation.
-   [OK]          entry              0   entry roundtrip.
-   [OK]          file               0   tricky last block index values.
-   [OK]          file               1   sizes of entries.
-   [OK]          roundtrip          0   you got a parser and printer, you know...
- 
- Full test results in `~/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1/_build/default/lib_test/_build/_tests/littlefs'.
- Test Successful in 0.003s. 15 tests run.
- (cd _build/default/mirage_test && /usr/bin/dd if=/dev/zero of=emptyfile bs=4K count=10)
- 10+0 records in
- 10+0 records out
- 40960 bytes (41 kB, 40 KiB) copied, 0.000108131 s, 379 MB/s
- (cd _build/default/mirage_test && /usr/bin/dd if=/dev/zero of=64mbfile bs=1M count=64)
- 64+0 records in
- 64+0 records out
- 67108864 bytes (67 MB, 64 MiB) copied, 0.0576298 s, 1.2 GB/s
- (cd _build/default/mirage_test && ./test_mirage.exe)
- Testing `mirage-kv'.
- This run has ID `FSRKZYNT'.
- 
-   [OK]          format               0   format.
-   [OK]          set                  0   get/set roundtrip.
-   [OK]          set                  1   get/set roundtrip w/non-ascii data.
-   [OK]          set                  2   get/set roundtrip w/non-ascii key.
-   [OK]          set                  3   get/set roundtrip w/empty key.
-   [OK]          set                  4   try to set too big a key.
-   [OK]          set                  5   mkdir -p.
-   [OK]          set                  6   disk full.
-   [OK]          set                  7   set_partial.
-   [OK]          set                  8   allocate.
-   [OK]          get                  0   get nonexistent value.
-   [OK]          get                  1   get a dictionary.
-   [OK]          get                  2   get a big value.
-   [OK]          get                  3   get valid partial data.
-   [OK]          get                  4   get partial data w/bad offset.
-   [OK]          get                  5   get partial data w/bad length.
-   [OK]          get                  6   get partial data w/bad offset+length.
-   [OK]          get                  7   get partial data in a file within a ...
-   [OK]          get                  8   get_partial pretty far into a big file.
-   [OK]          get                  9   get /littlefs on new fs.
-   [OK]          size                 0   size of something missing.
-   [OK]          size                 1   size of a small file.
-   [OK]          size                 2   size of an empty fs.
-   [OK]          size                 3   size of a directory.
-   [OK]          size                 4   size of some nested stuff.
-   [OK]          digest               0   digest of empty files w/different ke...
-   [OK]          digest               1   slash digest.
-   [OK]          digest               2   file overwrite digest.
-   [OK]          digest               3   dict digest.
-   [OK]          split                0   we can write files until we run out ...
-   [OK]          rename               0   rename works.
-   [OK]          rm                   0   removals are recursive.
-   [OK]          rm                   1   can't remove /.
-   [OK]          regressions          0   deletion after a block split for big...
-   [OK]          regressions          1   writes to a freshly-split block.
-   [OK]          regressions          2   we can write two 2MB files, reconnec...
- 
- Full test results in `~/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1/_build/default/mirage_test/_build/_tests/mirage-kv'.
- Test Successful in 27.134s. 36 tests run.
- (cd _build/default/mirage_test && /usr/bin/dd if=/dev/zero of=emptyfile bs=1M count=10)
- 10+0 records in
- 10+0 records out
- 10485760 bytes (10 MB, 10 MiB) copied, 0.0100615 s, 1.0 GB/s
- (cd _build/default/mirage_test && ./test_dirs.exe)
- Testing `directories'.
- This run has ID `HM04RDW4'.
- 
-   [OK]          from_toml          0   root.
-   [OK]          from_toml          1   many directory creation.
-   [OK]          from_toml          2   many directory removal.
-   [OK]          from_toml          3   file creation.
-   [OK]          from_toml          4   file removal.
- 
- Full test results in `~/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1/_build/default/mirage_test/_build/_tests/directories'.
- Test Successful in 2.673s. 5 tests run.
- (cd _build/default/mirage_test && ./test_cycles.exe)
- Testing `cycles'.
- This run has ID `53BUU1HQ'.
- 
-   [OK]          simple          0   simple.
- 
- Full test results in `~/.opam/5.4/.opam-switch/build/chamelon-unix.0.2.1/_build/default/mirage_test/_build/_tests/cycles'.
- Test Successful in 0.003s. 1 test run.
- (cd _build/default/mirage_test && ./mem_test_read.exe)
- ASSERT head subset
- ASSERT tail subset
- ASSERT block-straddling read
-> compiled  chamelon-unix.0.2.1
-> removed   chamelon-unix.0.2.1
-> installed chamelon-unix.0.2.1
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-26 00:11.58 ---> saved as "419f506a69f485efe1c3d98f7aa2b7cf33cc69853e3868816908868a7634f7a3"
Job succeeded
2026-03-26 00:12.26: Job succeeded