Organisationsahrefsatd24360c ()fedora-43-5.4_opam-2.5

fedora-43-5.4_opam-2.5

Logs

Show full logs
2026-03-09 08:27.06: New job: test ahrefs/atd https://github.com/ahrefs/atd.git#refs/heads/martin/modules (24360cc47620b33597c25459bbee04b1991bb7de) (linux-x86_64:fedora-43-5.4_opam-2.5)
Base: ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771
Opam project build

To reproduce locally:

git clone --recursive "https://github.com/ahrefs/atd.git" -b "martin/modules" && cd "atd" && git reset --hard 24360cc4
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771
# fedora-43-5.4_opam-2.5
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
WORKDIR /src
RUN sudo dnf install -y findutils
RUN sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam
RUN opam init --reinit -ni
RUN uname -rs && opam exec -- ocaml -version && opam --version
WORKDIR /src
RUN sudo chown opam /src
RUN cd ~/opam-repository && (git cat-file -e db025b90cf6b81a0e665f98ea04833f94fc9cede || git fetch origin master) && git reset -q --hard db025b90cf6b81a0e665f98ea04833f94fc9cede && git log --no-decorate -n1 --oneline && opam update -u
COPY --chown=1000:1000 atdts.opam atds.opam atdpy.opam atdml.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam ./
RUN opam pin add -yn atdts.dev './' && \
    opam pin add -yn atds.dev './' && \
    opam pin add -yn atdpy.dev './' && \
    opam pin add -yn atdml.dev './' && \
    opam pin add -yn atdj.dev './' && \
    opam pin add -yn atdgen.dev './' && \
    opam pin add -yn atdgen-runtime.dev './' && \
    opam pin add -yn atdgen-codec-runtime.dev './' && \
    opam pin add -yn atdd.dev './' && \
    opam pin add -yn atdcpp.dev './' && \
    opam pin add -yn atd.dev './'
RUN echo '(lang dune 3.0)' > './dune-project'
ENV DEPS="alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 cppo.1.8.0 dune.3.21.1 easy-format.1.3.4 fmt.0.11.0 fpath.0.7.3 menhir.20260209 menhirCST.20260209 menhirGLR.20260209 menhirLib.20260209 menhirSdk.20260209 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 ppx_deriving.6.1.1 ppxlib.0.37.0 re.1.14.0 sexplib0.v0.17.0 stdlib-shims.0.3.0 testo.0.4.0 testo-diff.0.4.0 testo-util.0.4.0 topkg.1.1.1 uutf.1.0.4 yojson.3.0.0"
ENV CI="true"
ENV OCAMLCI="true"
RUN opam update --depexts && opam install --cli=2.5 --depext-only -y atdts.dev atds.dev atdpy.dev atdml.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS
RUN opam install $DEPS
COPY --chown=1000:1000 . /src
RUN opam exec -- dune build @install @check @runtest && rm -rf _build

END-OF-DOCKERFILE
docker build .
END-REPRO-BLOCK

2026-03-09 08:27.06: Using cache hint "ahrefs/atd-ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771-fedora-43-5.4_opam-2.5-50c6e615f413ea8a9a9e0569f162696d"
2026-03-09 08:27.06: Using OBuilder spec:
((from ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771)
 (comment fedora-43-5.4_opam-2.5)
 (user (uid 1000) (gid 1000))
 (env CLICOLOR_FORCE 1)
 (env OPAMCOLOR always)
 (workdir /src)
 (run (network host)
      (shell "sudo dnf install -y findutils"))
 (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam"))
 (run (shell "opam init --reinit -ni"))
 (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
 (workdir /src)
 (run (shell "sudo chown opam /src"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "cd ~/opam-repository && (git cat-file -e db025b90cf6b81a0e665f98ea04833f94fc9cede || git fetch origin master) && git reset -q --hard db025b90cf6b81a0e665f98ea04833f94fc9cede && git log --no-decorate -n1 --oneline && opam update -u"))
 (copy (src atdts.opam atds.opam atdpy.opam atdml.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam)
       (dst ./))
 (run (network host)
      (shell  "opam pin add -yn atdts.dev './' && \
             \nopam pin add -yn atds.dev './' && \
             \nopam pin add -yn atdpy.dev './' && \
             \nopam pin add -yn atdml.dev './' && \
             \nopam pin add -yn atdj.dev './' && \
             \nopam pin add -yn atdgen.dev './' && \
             \nopam pin add -yn atdgen-runtime.dev './' && \
             \nopam pin add -yn atdgen-codec-runtime.dev './' && \
             \nopam pin add -yn atdd.dev './' && \
             \nopam pin add -yn atdcpp.dev './' && \
             \nopam pin add -yn atd.dev './'"))
 (run (shell "echo '(lang dune 3.0)' > './dune-project'"))
 (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 cppo.1.8.0 dune.3.21.1 easy-format.1.3.4 fmt.0.11.0 fpath.0.7.3 menhir.20260209 menhirCST.20260209 menhirGLR.20260209 menhirLib.20260209 menhirSdk.20260209 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 ppx_deriving.6.1.1 ppxlib.0.37.0 re.1.14.0 sexplib0.v0.17.0 stdlib-shims.0.3.0 testo.0.4.0 testo-diff.0.4.0 testo-util.0.4.0 topkg.1.1.1 uutf.1.0.4 yojson.3.0.0")
 (env CI true)
 (env OCAMLCI true)
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "opam update --depexts && opam install --cli=2.5 --depext-only -y atdts.dev atds.dev atdpy.dev atdml.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "opam install $DEPS"))
 (copy (src .) (dst /src))
 (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
)

2026-03-09 08:27.06: Waiting for resource in pool OCluster
2026-03-09 08:27.06: Waiting for worker…
2026-03-09 08:27.06: Got resource from pool OCluster
Building on toxis.caelum.ci.dev
All commits already cached
HEAD is now at 24360cc Add a note into atdd's source code

(from ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771)
Unable to find image 'ocaml/opam:fedora-43-ocaml-5.4@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771' locally
docker.io/ocaml/opam@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771: Pulling from ocaml/opam
5bc90b3315da: Pulling fs layer
132ed1c875b9: Pulling fs layer
709f19a93d7b: Pulling fs layer
600672ca084e: Pulling fs layer
e14c24140cbe: Pulling fs layer
2db09da454e1: Pulling fs layer
132ed1c875b9: Waiting
0e05a03dbf5c: Pulling fs layer
5bc90b3315da: Waiting
d9bf0b27ee73: Pulling fs layer
d22999d561d9: Pulling fs layer
709f19a93d7b: Waiting
600672ca084e: Waiting
9748e0447729: Pulling fs layer
b221b944dee6: Pulling fs layer
e14c24140cbe: Waiting
9103b02722d1: Pulling fs layer
2db09da454e1: Waiting
d22999d561d9: Waiting
0e05a03dbf5c: Waiting
9748e0447729: Waiting
d9bf0b27ee73: Waiting
b221b944dee6: Waiting
4ad003f04196: Pulling fs layer
530b789336ee: Pulling fs layer
7dc6ed995942: Pulling fs layer
530b789336ee: Waiting
26e0665eb0ef: Pulling fs layer
ec3e95305314: Pulling fs layer
e3efd041cf4c: Pulling fs layer
93818fe36d44: Pulling fs layer
ddeea98533ac: Pulling fs layer
26e0665eb0ef: Waiting
d782acfda9e2: Pulling fs layer
ec3e95305314: Waiting
4f4fb700ef54: Pulling fs layer
93818fe36d44: Waiting
4ac33b5f01d6: Pulling fs layer
d782acfda9e2: Waiting
4f4fb700ef54: Waiting
d4dbe3c6c8b2: Pulling fs layer
4ac33b5f01d6: Waiting
81507c45bdf3: Pulling fs layer
2a6e58484e29: Pulling fs layer
dc9846762449: Pulling fs layer
c73cd3a4d77c: Pulling fs layer
dc9846762449: Waiting
4655acdcba9f: Pulling fs layer
ea076df8754b: Pulling fs layer
4655acdcba9f: Waiting
c73cd3a4d77c: Waiting
2ea208952bef: Pulling fs layer
2ea825907a64: Pulling fs layer
61247173b8a6: Pulling fs layer
09632a095133: Pulling fs layer
2ea208952bef: Waiting
ac2374af5ce6: Pulling fs layer
c60028bae782: Pulling fs layer
2ea825907a64: Waiting
61247173b8a6: Waiting
0f1285a8c656: Pulling fs layer
ac2374af5ce6: Waiting
b23d2088dbe2: Pulling fs layer
c60028bae782: Waiting
0b0be00d160c: Pulling fs layer
0f1285a8c656: Waiting
dfd2d2f20c5c: Pulling fs layer
b23d2088dbe2: Waiting
0b0be00d160c: Waiting
5bd94acff4a0: Pulling fs layer
89c353ff7bfc: Pulling fs layer
dfd2d2f20c5c: Waiting
b32a22f578d2: Pulling fs layer
5bd94acff4a0: Waiting
3aee8f4f52c7: Pulling fs layer
f15cf313d69b: Pulling fs layer
89c353ff7bfc: Waiting
3aee8f4f52c7: Waiting
f15cf313d69b: Waiting
5bc90b3315da: Verifying Checksum
5bc90b3315da: Download complete
132ed1c875b9: Download complete
709f19a93d7b: Verifying Checksum
709f19a93d7b: Download complete
5bc90b3315da: Pull complete
132ed1c875b9: Pull complete
709f19a93d7b: Pull complete
600672ca084e: Verifying Checksum
600672ca084e: Download complete
e14c24140cbe: Verifying Checksum
e14c24140cbe: Download complete
2db09da454e1: Verifying Checksum
2db09da454e1: Download complete
0e05a03dbf5c: Verifying Checksum
0e05a03dbf5c: Download complete
d9bf0b27ee73: Verifying Checksum
d9bf0b27ee73: Download complete
d22999d561d9: Verifying Checksum
d22999d561d9: Download complete
9748e0447729: Verifying Checksum
9748e0447729: Download complete
b221b944dee6: Download complete
9103b02722d1: Verifying Checksum
9103b02722d1: Download complete
4ad003f04196: Verifying Checksum
4ad003f04196: Download complete
530b789336ee: Verifying Checksum
530b789336ee: Download complete
7dc6ed995942: Download complete
26e0665eb0ef: Verifying Checksum
26e0665eb0ef: Download complete
ec3e95305314: Verifying Checksum
ec3e95305314: Download complete
e3efd041cf4c: Download complete
93818fe36d44: Verifying Checksum
93818fe36d44: Download complete
ddeea98533ac: Verifying Checksum
ddeea98533ac: Download complete
d782acfda9e2: Download complete
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
4ac33b5f01d6: Download complete
d4dbe3c6c8b2: Verifying Checksum
d4dbe3c6c8b2: Download complete
81507c45bdf3: Verifying Checksum
81507c45bdf3: Download complete
2a6e58484e29: Verifying Checksum
2a6e58484e29: Download complete
dc9846762449: Verifying Checksum
dc9846762449: Download complete
c73cd3a4d77c: Download complete
4655acdcba9f: Verifying Checksum
4655acdcba9f: Download complete
ea076df8754b: Verifying Checksum
ea076df8754b: Download complete
2ea208952bef: Verifying Checksum
2ea208952bef: Download complete
2ea825907a64: Verifying Checksum
2ea825907a64: Download complete
61247173b8a6: Verifying Checksum
61247173b8a6: Download complete
09632a095133: Download complete
c60028bae782: Verifying Checksum
c60028bae782: Download complete
b23d2088dbe2: Download complete
0b0be00d160c: Verifying Checksum
0b0be00d160c: Download complete
dfd2d2f20c5c: Download complete
5bd94acff4a0: Verifying Checksum
5bd94acff4a0: Download complete
600672ca084e: Pull complete
e14c24140cbe: Pull complete
2db09da454e1: Pull complete
0e05a03dbf5c: Pull complete
d9bf0b27ee73: Pull complete
d22999d561d9: Pull complete
0f1285a8c656: Verifying Checksum
0f1285a8c656: Download complete
9748e0447729: Pull complete
b221b944dee6: Pull complete
ac2374af5ce6: Verifying Checksum
ac2374af5ce6: Download complete
b32a22f578d2: Download complete
3aee8f4f52c7: Download complete
f15cf313d69b: Verifying Checksum
f15cf313d69b: Download complete
9103b02722d1: Pull complete
4ad003f04196: Pull complete
530b789336ee: Pull complete
7dc6ed995942: Pull complete
26e0665eb0ef: Pull complete
ec3e95305314: Pull complete
e3efd041cf4c: Pull complete
93818fe36d44: Pull complete
ddeea98533ac: Pull complete
d782acfda9e2: Pull complete
4f4fb700ef54: Pull complete
4ac33b5f01d6: Pull complete
d4dbe3c6c8b2: Pull complete
81507c45bdf3: Pull complete
2a6e58484e29: Pull complete
dc9846762449: Pull complete
c73cd3a4d77c: Pull complete
4655acdcba9f: Pull complete
ea076df8754b: Pull complete
2ea208952bef: Pull complete
2ea825907a64: Pull complete
61247173b8a6: Pull complete
09632a095133: Pull complete
89c353ff7bfc: Verifying Checksum
89c353ff7bfc: Download complete
ac2374af5ce6: Pull complete
c60028bae782: Pull complete
0f1285a8c656: Pull complete
b23d2088dbe2: Pull complete
0b0be00d160c: Pull complete
dfd2d2f20c5c: Pull complete
5bd94acff4a0: Pull complete
89c353ff7bfc: Pull complete
b32a22f578d2: Pull complete
3aee8f4f52c7: Pull complete
f15cf313d69b: Pull complete
Digest: sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771
Status: Downloaded newer image for ocaml/opam@sha256:df7c029ded0b86834a6829ff0e12218f8fe7781c76841ff8ae3bb22d8a17f771
2026-03-09 08:27.07 ---> using "c2d794b6e911bbcb34a16b47b087571cc83c25d82d5221802c28ebb772c7b7ac" from cache

/: (comment fedora-43-5.4_opam-2.5)

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

/: (env CLICOLOR_FORCE 1)

/: (env OPAMCOLOR always)

/: (workdir /src)

/src: (run (network host)
           (shell "sudo dnf install -y findutils"))
Updating and loading repositories:
 Fedora 43 - x86_64                     100% |  42.7 KiB/s |  23.3 KiB |  00m01s
 Fedora 43 openh264 (From Cisco) - x86_ 100% |   3.3 KiB/s | 986.0   B |  00m00s
 Fedora 43 - x86_64 - Updates           100% |  96.3 KiB/s |  16.7 KiB |  00m00s
Repositories loaded.
Package "findutils-1:4.10.0-6.fc43.x86_64" is already installed.

Nothing to do.
2026-03-09 08:27.07 ---> using "a480bb0c0de320ab28e07b01f155fc81210ddb022301ec8e9c4ea680722505cf" from cache

/src: (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam"))
2026-03-09 08:27.07 ---> using "9de9c529d7cff5b5c8927ab10ee9faad90c94a13b1f49d3e2ed043b82784d3eb" from cache

/src: (run (shell "opam init --reinit -ni"))
Configuring from /home/opam/.opamrc and then 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-09 08:27.07 ---> using "893076ba5a4a8e0bf7dd033b89ae160f8e554d420bdd70125ac1eda2ff489e82" from cache

/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 5.15.0-134-generic
The OCaml toplevel, version 5.4.0
2.5.0
2026-03-09 08:27.07 ---> using "1c8a7a01b85f7ed7331403adbd645aa4d871d323bb3e41731facb087ffeba45d" from cache

/src: (workdir /src)

/src: (run (shell "sudo chown opam /src"))
2026-03-09 08:27.07 ---> using "8bde7f5e5986e500b04438e6611db57a8ed019b4acff57bb6b0b52b7a938e2db" from cache

/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
           (network host)
           (shell "cd ~/opam-repository && (git cat-file -e db025b90cf6b81a0e665f98ea04833f94fc9cede || git fetch origin master) && git reset -q --hard db025b90cf6b81a0e665f98ea04833f94fc9cede && git log --no-decorate -n1 --oneline && opam update -u"))
From https://github.com/ocaml/opam-repository
 * branch                  master     -> FETCH_HEAD
   3109384a92..55776d6a15  master     -> origin/master
db025b90cf Merge pull request #29509 from mjambon/release-testo-0.4.0

<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] synchronised from git+file:///home/opam/opam-repository

Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly at these versions (e.g. "opam upgrade ocaml.5.5.0"), which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# To update the current shell environment, run: eval $(opam env)
2026-03-09 08:27.07 ---> using "82f86db7de59b2617ee47c4fc4d393baf16bbe7a7aa6fc1d368c4c593bd4e347" from cache

/src: (copy (src atdts.opam atds.opam atdpy.opam atdml.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam)
            (dst ./))
2026-03-09 08:27.07 ---> using "f83eca3ce8ce61fc35b07ed36fceb9d91c7dd9990056ff715246530cb5f62126" from cache

/src: (run (network host)
           (shell  "opam pin add -yn atdts.dev './' && \
                  \nopam pin add -yn atds.dev './' && \
                  \nopam pin add -yn atdpy.dev './' && \
                  \nopam pin add -yn atdml.dev './' && \
                  \nopam pin add -yn atdj.dev './' && \
                  \nopam pin add -yn atdgen.dev './' && \
                  \nopam pin add -yn atdgen-runtime.dev './' && \
                  \nopam pin add -yn atdgen-codec-runtime.dev './' && \
                  \nopam pin add -yn atdd.dev './' && \
                  \nopam pin add -yn atdcpp.dev './' && \
                  \nopam pin add -yn atd.dev './'"))
[atdts.dev] synchronised (file:///src)
atdts is now pinned to file:///src (version dev)
[atds.dev] synchronised (file:///src)
atds is now pinned to file:///src (version dev)
[atdpy.dev] synchronised (file:///src)
atdpy is now pinned to file:///src (version dev)
[NOTE] Package atdml does not exist in opam repositories registered in the current switch.
[atdml.dev] synchronised (file:///src)
atdml is now pinned to file:///src (version dev)
[atdj.dev] synchronised (file:///src)
atdj is now pinned to file:///src (version dev)
[atdgen.dev] synchronised (file:///src)
atdgen is now pinned to file:///src (version dev)
[atdgen-runtime.dev] synchronised (file:///src)
atdgen-runtime is now pinned to file:///src (version dev)
[atdgen-codec-runtime.dev] synchronised (file:///src)
atdgen-codec-runtime is now pinned to file:///src (version dev)
[atdd.dev] synchronised (file:///src)
atdd is now pinned to file:///src (version dev)
[atdcpp.dev] synchronised (file:///src)
atdcpp is now pinned to file:///src (version dev)
[atd.dev] synchronised (file:///src)
atd is now pinned to file:///src (version dev)
2026-03-09 08:27.07 ---> using "d54adbf010ce87a6594e9006dff65d3bddafa4c7f78cdce3e5ae54a51b028f7e" from cache

/src: (run (shell "echo '(lang dune 3.0)' > './dune-project'"))
2026-03-09 08:27.07 ---> using "3c1febaa548b8bdf9c130d8d7a816acda042869b422aa0a01bdb803560edc647" from cache

/src: (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 cppo.1.8.0 dune.3.21.1 easy-format.1.3.4 fmt.0.11.0 fpath.0.7.3 menhir.20260209 menhirCST.20260209 menhirGLR.20260209 menhirLib.20260209 menhirSdk.20260209 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 ppx_deriving.6.1.1 ppxlib.0.37.0 re.1.14.0 sexplib0.v0.17.0 stdlib-shims.0.3.0 testo.0.4.0 testo-diff.0.4.0 testo-util.0.4.0 topkg.1.1.1 uutf.1.0.4 yojson.3.0.0")

/src: (env CI true)

/src: (env OCAMLCI true)

/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
           (network host)
           (shell "opam update --depexts && opam install --cli=2.5 --depext-only -y atdts.dev atds.dev atdpy.dev atdml.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS"))
+ /usr/sbin/sudo "yum" "makecache"
- Updating and loading repositories:
-  Fedora 43 - x86_64 - Updates           100% | 121.8 KiB/s |  18.3 KiB |  00m00s
- Repositories loaded.
- Metadata cache created.

<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[atd.dev] synchronised (file:///src)
[atdcpp.dev] synchronised (file:///src)
[atdd.dev] synchronised (file:///src)
[atdgen.dev] synchronised (file:///src)
[atdgen-codec-runtime.dev] synchronised (file:///src)
[atdgen-runtime.dev] synchronised (file:///src)
[atdj.dev] synchronised (file:///src)
[atdml.dev] synchronised (file:///src)
[atdpy.dev] synchronised (file:///src)
[atds.dev] synchronised (file:///src)
[atdts.dev] synchronised (file:///src)

[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml is already installed (current version is 5.4.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
# To update the current shell environment, run: eval $(opam env)
2026-03-09 08:27.07 ---> using "25f31b27d32aa04125a6f6da2ee41b630778015aadcbbb15b80b825076c4862a" from cache

/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
           (network host)
           (shell "opam install $DEPS"))
[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml is already installed (current version is 5.4.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
The following actions will be performed:
=== install 32 packages
  - install alcotest            1.9.1
  - install astring             0.8.5
  - install biniou              1.2.2
  - install camlp-streams       5.0.1
  - install cmdliner            2.1.0
  - install conf-python-3       9.0.0
  - install cppo                1.8.0
  - install dune                3.21.1
  - install easy-format         1.3.4
  - install fmt                 0.11.0
  - install fpath               0.7.3
  - install menhir              20260209
  - install menhirCST           20260209
  - install menhirGLR           20260209
  - install menhirLib           20260209
  - install menhirSdk           20260209
  - install ocaml-compiler-libs v0.17.0
  - install ocaml-syntax-shims  1.0.0
  - install ocamlbuild          0.16.1
  - install ocamlfind           1.9.8
  - install ppx_derivers        1.2.1
  - install ppx_deriving        6.1.1
  - install ppxlib              0.37.0
  - install re                  1.14.0
  - install sexplib0            v0.17.0
  - install stdlib-shims        0.3.0
  - install testo               0.4.0
  - install testo-diff          0.4.0
  - install testo-util          0.4.0
  - install topkg               1.1.1
  - install uutf                1.0.4
  - install yojson              3.0.0

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved alcotest.1.9.1  (cached)
-> retrieved astring.0.8.5  (cached)
-> retrieved biniou.1.2.2  (cached)
-> retrieved conf-python-3.9.0.0  (cached)
-> retrieved camlp-streams.5.0.1  (cached)
-> retrieved cmdliner.2.1.0  (cached)
-> retrieved cppo.1.8.0  (cached)
-> installed conf-python-3.9.0.0
-> retrieved easy-format.1.3.4  (cached)
-> retrieved fmt.0.11.0  (cached)
-> retrieved fpath.0.7.3  (cached)
-> retrieved ocaml-compiler-libs.v0.17.0  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved menhir.20260209, menhirCST.20260209, menhirGLR.20260209, menhirLib.20260209, menhirSdk.20260209  (cached)
-> retrieved dune.3.21.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ppx_deriving.6.1.1  (cached)
-> retrieved re.1.14.0  (cached)
-> retrieved sexplib0.v0.17.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved topkg.1.1.1  (cached)
-> retrieved ppxlib.0.37.0  (cached)
-> retrieved uutf.1.0.4  (cached)
-> retrieved yojson.3.0.0  (cached)
-> retrieved testo.0.4.0, testo-diff.0.4.0, testo-util.0.4.0  (cached)
-> installed cmdliner.2.1.0
-> installed ocamlfind.1.9.8
-> installed ocamlbuild.0.16.1
-> installed topkg.1.1.1
-> installed uutf.1.0.4
-> installed fmt.0.11.0
-> installed astring.0.8.5
-> installed fpath.0.7.3
-> installed dune.3.21.1
-> installed easy-format.1.3.4
-> installed menhirCST.20260209
-> installed camlp-streams.5.0.1
-> installed ppx_derivers.1.2.1
-> installed menhirGLR.20260209
-> installed menhirLib.20260209
-> installed stdlib-shims.0.3.0
-> installed menhirSdk.20260209
-> installed sexplib0.v0.17.0
-> installed biniou.1.2.2
-> installed cppo.1.8.0
-> installed ocaml-syntax-shims.1.0.0
-> installed ocaml-compiler-libs.v0.17.0
-> installed re.1.14.0
-> installed yojson.3.0.0
-> installed alcotest.1.9.1
-> installed menhir.20260209
-> installed ppxlib.0.37.0
-> installed ppx_deriving.6.1.1
-> installed testo-diff.0.4.0
-> installed testo-util.0.4.0
-> installed testo.0.4.0
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-09 08:27.07 ---> using "602f660cdc5742599801296e7988211b7538fa809916114cf9bb5c390ab8ea94" from cache

/src: (copy (src .) (dst /src))
2026-03-09 08:27.08 ---> saved as "8c40c8da22a74f69e23349ef2a82672c3e891e135da5778ae3654c8b4ab6eb02"

/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -json -o test2j -open Test,Test2,Testj -ntd test2.atd)
Warning: option "-json" is deprecated.
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -json -j-gen-modules -o test_ambiguous_record_j -open Test_ambiguous_record_t -ntd test_ambiguous_record.atd)
Warning: option "-json" is deprecated.
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -json -j-gen-modules -o test_polymorphic_wrap_j test_polymorphic_wrap.atd)
Warning: option "-json" is deprecated.
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -extend Test test.atd -json -o testjstd_j)
Warning: option "-json" is deprecated.
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -validate -extend Test test.atd -o testv)
Warning: option "-validate" is deprecated.
(cd _build/default/atdgen/test && ../../../install/default/bin/atdgen -json -extend Test -j-custom-fields 'fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
" s loc' test.atd -o testj)
Warning: option "-json" is deprecated.
File "atdd/test/dlang-tests/dune", lines 17-26, characters 0-141:
17 | (rule
18 |  (alias runtest)
19 |  (package atdd)
20 |  (deps
21 |   (glob_files *.d))
22 |  (action
23 |   (progn
24 |    (bash "ldc2 %{deps} --of test")
25 |    (bash ./test)
26 |   )))
(cd _build/default/atdd/test/dlang-tests && /usr/sbin/bash -e -u -o pipefail -c 'ldc2 everything_atd.d test_atdd.d --of test')
/usr/sbin/bash: line 1: ldc2: command not found
(cd _build/default/atdts/src/test && ./Main.exe)
Testing `atdts'.
This run has ID `Y70NED3B'.


Full test results in `/src/_build/default/atdts/src/test/_build/_tests/atdts'.
Test Successful in 0.000s. 0 test run.
File "atdgen/test/melange/melangespec_mel.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/melange/melangespec_mel.expected.ml _build/default/atdgen/test/melange/melangespec_mel.ml
diff --git a/_build/default/atdgen/test/melange/melangespec_mel.expected.ml b/_build/default/atdgen/test/melange/melangespec_mel.ml
index 744d15f..8c67475 100644
--- a/_build/default/atdgen/test/melange/melangespec_mel.expected.ml
+++ b/_build/default/atdgen/test/melange/melangespec_mel.ml
@@ -663,7 +663,7 @@ let read_point = (
     )
 )
 let write_param_similar write__a = (
-  Atdgen_codec_runtime.Encode.make (fun (t : 'a param_similar) ->
+  Atdgen_codec_runtime.Encode.make (fun (t : _ param_similar) ->
     (
     Atdgen_codec_runtime.Encode.obj
       [
@@ -700,12 +700,12 @@ let read_param_similar read__a = (
               Atdgen_codec_runtime.Decode.int
               |> Atdgen_codec_runtime.Decode.field "something"
             ) json;
-      } : 'a param_similar)
+      } : _ param_similar)
     )
   )
 )
 let write_param write__a = (
-  Atdgen_codec_runtime.Encode.make (fun (t : 'a param) ->
+  Atdgen_codec_runtime.Encode.make (fun (t : _ param) ->
     (
     Atdgen_codec_runtime.Encode.obj
       [
@@ -742,12 +742,12 @@ let read_param read__a = (
               Atdgen_codec_runtime.Decode.unit
               |> Atdgen_codec_runtime.Decode.field "nothing"
             ) json;
-      } : 'a param)
+      } : _ param)
     )
   )
 )
 let write_pair write__a write__b = (
-  Atdgen_codec_runtime.Encode.make (fun (t : ('a, 'b) pair) ->
+  Atdgen_codec_runtime.Encode.make (fun (t : (_, _) pair) ->
     (
     Atdgen_codec_runtime.Encode.obj
       [
@@ -784,7 +784,7 @@ let read_pair read__a read__b = (
               read__b
               |> Atdgen_codec_runtime.Decode.field "right"
             ) json;
-      } : ('a, 'b) pair)
+      } : (_, _) pair)
     )
   )
 )
(cd _build/default/atdpy/src/test && ./Main.exe)
Testing `atdpy'.
This run has ID `W649F00J'.


Full test results in `/src/_build/default/atdpy/src/test/_build/_tests/atdpy'.
Test Successful in 0.000s. 0 test run.
(cd _build/default/atd/test && ./unit_tests.exe)
Testing `atd'.
This run has ID `S1SOJOLY'.

  [OK]          Annot                0   valid.
  [OK]          Annot                1   invalid1.
  [OK]          Annot                2   invalid2.
  [OK]          Annot                3   invalid3.
  [OK]          Annot                4   invalid4.
  [OK]          Annot                5   invalid5.
  [OK]          Annot                6   invalid6.
  [OK]          Annot                7   invalid7.
  [OK]          Annot                8   invalid8.
  [OK]          Annot                9   invalid9.
  [OK]          Sort                 0   sort.
  [OK]          Unique_name          0   reserved identifiers.
  [OK]          Unique_name          1   reserved prefixes.
  [OK]          Unique_name          2   identifier creation.
  [OK]          Doc                  0   normalize "".
  [OK]          Doc                  1   normalize "a".
  [OK]          Doc                  2   normalize "a b".
  [OK]          Doc                  3   normalize "a\nb".
  [OK]          Doc                  4   normalize "a  b".
  [OK]          Doc                  5   normalize "a \n b".
  [OK]          Doc                  6   normalize "a \n\n b".
  [OK]          Doc                  7   normalize "  a  ".
  [OK]          Doc                  8   normalize "\n\na\n\n".
  [OK]          Doc                  9   normalize "{{}}".
  [OK]          Doc                 10   normalize "{{a}}".
  [OK]          Doc                 11   normalize "{{  a  b\n\nc\n }}".
  [OK]          Doc                 12   normalize "{{ {a} }}".
  [OK]          Doc                 13   normalize "{{{}}}".
  [OK]          Doc                 14   normalize "{{{a}}}".
  [OK]          Doc                 15   normalize "{{{ }}}".
  [OK]          Doc                 16   normalize "{{{ {{a}} }}}".
  [OK]          Doc                 17   normalize "{{{ a\n\n  b }}}".

Full test results in `/src/_build/default/atd/test/_build/_tests/atd'.
Test Successful in 0.005s. 32 tests run.
File "atds/test/dune", lines 13-22, characters 0-177:
13 | (rule
14 |  (alias runtest)
15 |  (package atds)
16 |  (deps
17 |   AtdsTest.scala
18 |   argonaut_2.11-6.2.2.jar
19 |   argonaut_2.12-6.2.2.jar
20 |   junit-4.8.2.jar
21 |   test.scala)
22 |  (action (run ./run_test.sh)))
(cd _build/default/atds/test && ./run_test.sh)
./run_test.sh: line 6: scalac: command not found
File "atdpy/test/python-tests/dune", lines 23-35, characters 0-217:
23 | (rule
24 |  (alias runtest)
25 |  (package atdpy)
....
33 |    (run python3 -m flake8 .)
34 |    (run python3 -m mypy --strict .)
35 |    (run python3 -m pytest .))))
(cd _build/default/atdpy/test/python-tests && /usr/sbin/python3 -m flake8 .)
/usr/sbin/python3: No module named flake8
File "atdgen/test/melange/melangespec_j.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/melange/melangespec_j.expected.ml _build/default/atdgen/test/melange/melangespec_j.ml
diff --git a/_build/default/atdgen/test/melange/melangespec_j.expected.ml b/_build/default/atdgen/test/melange/melangespec_j.ml
index ef4d482..04f553c 100644
--- a/_build/default/atdgen/test/melange/melangespec_j.expected.ml
+++ b/_build/default/atdgen/test/melange/melangespec_j.ml
@@ -1464,8 +1464,8 @@ let read_point = (
 )
 let point_of_string s =
   read_point (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let write_param_similar write__a : _ -> 'a param_similar -> _ = (
-  fun ob (x : 'a param_similar) ->
+let write_param_similar write__a : _ -> _ param_similar -> _ = (
+  fun ob (x : _ param_similar) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -1612,13 +1612,13 @@ let read_param_similar read__a = (
             data = (match !field_data with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "data");
             something = (match !field_something with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "something");
           }
-         : 'a param_similar)
+         : _ param_similar)
       )
 )
 let param_similar_of_string read__a s =
   read_param_similar read__a (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let write_param write__a : _ -> 'a param -> _ = (
-  fun ob (x : 'a param) ->
+let write_param write__a : _ -> _ param -> _ = (
+  fun ob (x : _ param) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -1765,13 +1765,13 @@ let read_param read__a = (
             data = (match !field_data with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "data");
             nothing = (match !field_nothing with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "nothing");
           }
-         : 'a param)
+         : _ param)
       )
 )
 let param_of_string read__a s =
   read_param read__a (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let write_pair write__a write__b : _ -> ('a, 'b) pair -> _ = (
-  fun ob (x : ('a, 'b) pair) ->
+let write_pair write__a write__b : _ -> (_, _) pair -> _ = (
+  fun ob (x : (_, _) pair) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -1918,7 +1918,7 @@ let read_pair read__a read__b = (
             left = (match !field_left with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "left");
             right = (match !field_right with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "right");
           }
-         : ('a, 'b) pair)
+         : (_, _) pair)
       )
 )
 let pair_of_string read__a read__b s =
File "atdj/test/dune", lines 53-61, characters 0-160:
53 | (rule
54 |  (alias runtest)
55 |  (package atdj)
56 |  (deps
57 |   AtdjTest.java
58 |   json.jar
59 |   junit-4.8.2.jar
60 |   (glob_files com/mylife/test/*.java))
61 |  (action (run ./run_test.sh)))
(cd _build/default/atdj/test && ./run_test.sh)
./run_test.sh: line 5: javac: command not found
./run_test.sh: line 6: javac: command not found
./run_test.sh: line 7: javadoc: command not found
./run_test.sh: line 10: java: command not found
File "atdgen/test/test.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/test.expected.ml _build/default/atdgen/test/test.ml
diff --git a/_build/default/atdgen/test/test.expected.ml b/_build/default/atdgen/test/test.ml
index 77ff462..f08e720 100644
--- a/_build/default/atdgen/test/test.expected.ml
+++ b/_build/default/atdgen/test/test.ml
@@ -194,7 +194,7 @@ let read__a_list get__a_reader read__a = (
 let _a_list_of_string get__a_reader read__a ?pos s =
   read__a_list get__a_reader read__a (Bi_inbuf.from_string ?pos s)
 let rec p'_tag = Bi_io.variant_tag
-and write_untagged_p' _a_tag write_untagged__a write__a : Bi_outbuf.t -> 'a p' -> unit = (
+and write_untagged_p' _a_tag write_untagged__a write__a : Bi_outbuf.t -> _ p' -> unit = (
   fun ob x ->
     match x with
       | A -> Bi_outbuf.add_char4 ob '\000' '\000' '\000' 'A'
@@ -222,17 +222,17 @@ let rec get_p'_reader get__a_reader read__a = (
       fun ib ->
         Bi_io.read_hashtag ib (fun ib h has_arg ->
           match h, has_arg with
-            | 65, false -> (A : 'a p')
+            | 65, false -> (A : _ p')
             | 14816, true -> (Bb (
                 (
                   read_p' get__a_reader read__a
                 ) ib
-              ) : 'a p')
+              ) : _ p')
             | -711691517, true -> (Ccccc (
                 (
                   read__a
                 ) ib
-              ) : 'a p')
+              ) : _ p')
             | _ -> Atdgen_runtime.Ob_run.unsupported_variant h has_arg
         )
 )
@@ -241,17 +241,17 @@ and read_p' get__a_reader read__a = (
     if Bi_io.read_tag ib <> 23 then Atdgen_runtime.Ob_run.read_error_at ib;
     Bi_io.read_hashtag ib (fun ib h has_arg ->
       match h, has_arg with
-        | 65, false -> (A : 'a p')
+        | 65, false -> (A : _ p')
         | 14816, true -> (Bb (
             (
               read_p' get__a_reader read__a
             ) ib
-          ) : 'a p')
+          ) : _ p')
         | -711691517, true -> (Ccccc (
             (
               read__a
             ) ib
-          ) : 'a p')
+          ) : _ p')
         | _ -> Atdgen_runtime.Ob_run.unsupported_variant h has_arg
     )
 )
@@ -604,7 +604,7 @@ and string_of__a_b_poly_option _a_tag write_untagged__a write__a _b_tag write_un
   write__a_b_poly_option _a_tag write_untagged__a write__a _b_tag write_untagged__b write__b ob x;
   Bi_outbuf.contents ob
 and poly_tag = Bi_io.record_tag
-and write_untagged_poly _x_tag write_untagged__x write__x _y_tag write_untagged__y write__y : Bi_outbuf.t -> ('x, 'y) poly -> unit = (
+and write_untagged_poly _x_tag write_untagged__x write__x _y_tag write_untagged__y write__y : Bi_outbuf.t -> (_, _) poly -> unit = (
   fun ob x ->
     Bi_vint.write_uvint ob 2;
     Bi_outbuf.add_char4 ob '\128' 'M' '\202' '\135';
@@ -686,7 +686,7 @@ and get_poly_reader get__x_reader read__x get__y_reader read__y = (
             fst = !field_fst;
             snd = !field_snd;
           }
-         : ('x, 'y) poly)
+         : (_, _) poly)
 )
 and read_poly get__x_reader read__x get__y_reader read__y = (
   fun ib ->
@@ -719,7 +719,7 @@ and read_poly get__x_reader read__x get__y_reader read__y = (
         fst = !field_fst;
         snd = !field_snd;
       }
-     : ('x, 'y) poly)
+     : (_, _) poly)
 )
 and poly_of_string get__x_reader read__x get__y_reader read__y ?pos s =
   read_poly get__x_reader read__x get__y_reader read__y (Bi_inbuf.from_string ?pos s)
@@ -3906,7 +3906,7 @@ let read_hello = (
 let hello_of_string ?pos s =
   read_hello (Bi_inbuf.from_string ?pos s)
 let generic_tag = Bi_io.record_tag
-let write_untagged_generic _a_tag write_untagged__a write__a : Bi_outbuf.t -> 'a generic -> unit = (
+let write_untagged_generic _a_tag write_untagged__a write__a : Bi_outbuf.t -> _ generic -> unit = (
   fun ob x ->
     Bi_vint.write_uvint ob 1;
     Bi_outbuf.add_char4 ob '\240' 'G' '\003' '\130';
@@ -3944,7 +3944,7 @@ let get_generic_reader get__a_reader read__a = (
           {
             x294623 = !field_x294623;
           }
-         : 'a generic)
+         : _ generic)
 )
 let read_generic get__a_reader read__a = (
   fun ib ->
@@ -3968,7 +3968,7 @@ let read_generic get__a_reader read__a = (
       {
         x294623 = !field_x294623;
       }
-     : 'a generic)
+     : _ generic)
 )
 let generic_of_string get__a_reader read__a ?pos s =
   read_generic get__a_reader read__a (Bi_inbuf.from_string ?pos s)
File "atdgen/test/testjstd_j.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/testjstd_j.expected.ml _build/default/atdgen/test/testjstd_j.ml
diff --git a/_build/default/atdgen/test/testjstd_j.expected.ml b/_build/default/atdgen/test/testjstd_j.ml
index 5540346..9ac76b5 100644
--- a/_build/default/atdgen/test/testjstd_j.expected.ml
+++ b/_build/default/atdgen/test/testjstd_j.ml
@@ -173,8 +173,8 @@ let read__a_list read__a = (
 )
 let _a_list_of_string read__a s =
   read__a_list read__a (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let rec write_p' write__a : _ -> 'a p' -> _ = (
-  fun ob (x : 'a p') ->
+let rec write_p' write__a : _ -> _ p' -> _ = (
+  fun ob (x : _ p') ->
     match x with
       | A -> Buffer.add_string ob "\"A\""
       | Bb x ->
@@ -201,7 +201,7 @@ let rec read_p' read__a = (
       | `Double_quote -> (
           match Yojson.Safe.finish_string p lb with
             | "A" ->
-              (A : 'a p')
+              (A : _ p')
             | x ->
               Atdgen_runtime.Oj_run.invalid_variant_tag p x
         )
@@ -217,7 +217,7 @@ let rec read_p' read__a = (
               in
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_rbr p lb;
-              (Bb x : 'a p')
+              (Bb x : _ p')
             | "Ccccc" ->
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_comma p lb;
@@ -228,7 +228,7 @@ let rec read_p' read__a = (
               in
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_rbr p lb;
-              (Ccccc x : 'a p')
+              (Ccccc x : _ p')
             | x ->
               Atdgen_runtime.Oj_run.invalid_variant_tag p x
         )
@@ -625,8 +625,8 @@ and string_of__a_b_poly_option write__a write__b ?(len = 1024) x =
   let ob = Buffer.create len in
   write__a_b_poly_option write__a write__b ob x;
   Buffer.contents ob
-and write_poly write__x write__y : _ -> ('x, 'y) poly -> _ = (
-  fun ob (x : ('x, 'y) poly) ->
+and write_poly write__x write__y : _ -> (_, _) poly -> _ = (
+  fun ob (x : (_, _) poly) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -813,7 +813,7 @@ and read_poly read__x read__y = (
             fst = (match !field_fst with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "fst");
             snd = (match !field_snd with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "snd");
           }
-         : ('x, 'y) poly)
+         : (_, _) poly)
       )
 )
 and poly_of_string read__x read__y s =
@@ -3722,8 +3722,8 @@ let read_hello = (
 )
 let hello_of_string s =
   read_hello (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let write_generic write__a : _ -> 'a generic -> _ = (
-  fun ob (x : 'a generic) ->
+let write_generic write__a : _ -> _ generic -> _ = (
+  fun ob (x : _ generic) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -3815,7 +3815,7 @@ let read_generic read__a = (
           {
             x294623 = (match !field_x294623 with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "x294623");
           }
-         : 'a generic)
+         : _ generic)
       )
 )
 let generic_of_string read__a s =
File "atdgen/test/testv.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/testv.expected.ml _build/default/atdgen/test/testv.ml
diff --git a/_build/default/atdgen/test/testv.expected.ml b/_build/default/atdgen/test/testv.ml
index de48083..96cdf73 100644
--- a/_build/default/atdgen/test/testv.expected.ml
+++ b/_build/default/atdgen/test/testv.ml
@@ -162,7 +162,7 @@ let validate__a_list validate__a = (
     validate__a
   )
 )
-let rec validate_p' validate__a : _ -> 'a p' -> _ = (
+let rec validate_p' validate__a : _ -> _ p' -> _ = (
   fun path x ->
     match x with
       | A -> None
@@ -218,7 +218,7 @@ let rec validate__a_b_poly_option validate__a validate__b path x = (
     validate_poly validate__a validate__b
   )
 ) path x
-and validate_poly validate__x validate__y : _ -> ('x, 'y) poly -> _ = (
+and validate_poly validate__x validate__y : _ -> (_, _) poly -> _ = (
   fun path x ->
     match
       (
@@ -446,7 +446,7 @@ let validate_int32 = (
 let validate_hello = (
   fun _ _ -> None
 )
-let validate_generic validate__a : _ -> 'a generic -> _ = (
+let validate_generic validate__a : _ -> _ generic -> _ = (
   fun _ _ -> None
 )
 let validate_floats : _ -> floats -> _ = (
File "atdcat/test/dune", lines 57-87, characters 0-907:
57 | (rule
58 |  (alias runtest)
59 |  (deps
....
85 |    )
86 |  )
87 | )
(cd _build/default/atdcat/test && /usr/sbin/python3 -m jsonschema schema.json -i data.json)
/usr/sbin/python3: No module named jsonschema
File "atdgen/test/testj.expected.ml", line 1, characters 0-0:
/usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/testj.expected.ml _build/default/atdgen/test/testj.ml
diff --git a/_build/default/atdgen/test/testj.expected.ml b/_build/default/atdgen/test/testj.ml
index 5f93184..bc2e342 100644
--- a/_build/default/atdgen/test/testj.expected.ml
+++ b/_build/default/atdgen/test/testj.ml
@@ -173,8 +173,8 @@ let read__a_list read__a = (
 )
 let _a_list_of_string read__a s =
   read__a_list read__a (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let rec write_p' write__a : _ -> 'a p' -> _ = (
-  fun ob (x : 'a p') ->
+let rec write_p' write__a : _ -> _ p' -> _ = (
+  fun ob (x : _ p') ->
     match x with
       | A -> Buffer.add_string ob "\"A\""
       | Bb x ->
@@ -201,7 +201,7 @@ let rec read_p' read__a = (
       | `Double_quote -> (
           match Yojson.Safe.finish_string p lb with
             | "A" ->
-              (A : 'a p')
+              (A : _ p')
             | x ->
               Atdgen_runtime.Oj_run.invalid_variant_tag p x
         )
@@ -217,7 +217,7 @@ let rec read_p' read__a = (
               in
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_rbr p lb;
-              (Bb x : 'a p')
+              (Bb x : _ p')
             | "Ccccc" ->
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_comma p lb;
@@ -228,7 +228,7 @@ let rec read_p' read__a = (
               in
               Yojson.Safe.read_space p lb;
               Yojson.Safe.read_rbr p lb;
-              (Ccccc x : 'a p')
+              (Ccccc x : _ p')
             | x ->
               Atdgen_runtime.Oj_run.invalid_variant_tag p x
         )
@@ -629,8 +629,8 @@ and string_of__a_b_poly_option write__a write__b ?(len = 1024) x =
   let ob = Buffer.create len in
   write__a_b_poly_option write__a write__b ob x;
   Buffer.contents ob
-and write_poly write__x write__y : _ -> ('x, 'y) poly -> _ = (
-  fun ob (x : ('x, 'y) poly) ->
+and write_poly write__x write__y : _ -> (_, _) poly -> _ = (
+  fun ob (x : (_, _) poly) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -825,7 +825,7 @@ and read_poly read__x read__y = (
             fst = (match !field_fst with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "fst");
             snd = (match !field_snd with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "snd");
           }
-         : ('x, 'y) poly)
+         : (_, _) poly)
       )
 )
 and poly_of_string read__x read__y s =
@@ -3778,8 +3778,8 @@ let read_hello = (
 )
 let hello_of_string s =
   read_hello (Yojson.Safe.init_lexer ()) (Lexing.from_string s)
-let write_generic write__a : _ -> 'a generic -> _ = (
-  fun ob (x : 'a generic) ->
+let write_generic write__a : _ -> _ generic -> _ = (
+  fun ob (x : _ generic) ->
     Buffer.add_char ob '{';
     let is_first = ref true in
     if !is_first then
@@ -3873,7 +3873,7 @@ let read_generic read__a = (
           {
             x294623 = (match !field_x294623 with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "x294623");
           }
-         : 'a generic)
+         : _ generic)
       )
 )
 let generic_of_string read__a s =
File "atdcpp/test/cpp-tests/dune", lines 19-28, characters 0-183:
19 | (rule
20 |  (alias runtest)
21 |  (package atdcpp)
22 |  (deps
23 |   (glob_files *.cpp))
24 |  (action
25 |   (progn
26 |    (bash "g++ -I../../lib/rapidjson/include -std=c++17 %{deps} -o test")
27 |    (bash ./test)
28 |   )))
(cd _build/default/atdcpp/test/cpp-tests && /usr/sbin/bash -e -u -o pipefail -c 'g++ -I../../lib/rapidjson/include -std=c++17 everything_atd.cpp test_atdd.cpp -o test')
In file included from everything_atd.cpp:12:
everything_atd.hpp:12:10: fatal error: rapidjson/document.h: No such file or directory
   12 | #include <rapidjson/document.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from test_atdd.cpp:12:
everything_atd.hpp:12:10: fatal error: rapidjson/document.h: No such file or directory
   12 | #include <rapidjson/document.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
File "atdgen/test/dune", lines 423-426, characters 0-80:
423 | (rule
424 |  (alias runtest)
425 |  (package atdgen)
426 |  (action (run ./test_atdgen_main.exe)))
(cd _build/default/atdgen/test && ./test_atdgen_main.exe)
Testing `atdgen'.
This run has ID `0EE0B37X'.

  [OK]          atdgen          0   ocaml internals.
  [OK]          atdgen          1   biniou missing record fields.
  [OK]          atdgen          2   biniou missing tuple fields.
  [OK]          atdgen          3   biniou read/write unit.
  [OK]          atdgen          4   json missing record fields.
  [OK]          atdgen          5   json missing tuple fields.
  [OK]          atdgen          6   json extra field warning.
  [OK]          atdgen          7   json association list.
  [OK]          atdgen          8   json association array.
  [OK]          atdgen          9   json ints derived from ocaml floats.
  [OK]          atdgen         10   biniou correctness.
  [OK]          atdgen         11   json correctness.
  [OK]          atdgen         12   json space.
  [OK]          atdgen         13   validators0.
  [OK]          atdgen         14   validators1.
  [OK]          atdgen         15   validators2.
  [OK]          atdgen         16   validators3.
  [OK]          atdgen         17   validators4.
  [OK]          atdgen         18   json files.
  [OK]          atdgen         19   json streams.
  [OK]          atdgen         20   raw JSON.
  [OK]          atdgen         21   ocaml wrapping - ints.
  [OK]          atdgen         22   ocaml wrapping - double wrapping.
  [OK]          atdgen         23   ocaml wrapping - with validation.
  [OK]          atdgen         24   ocaml wrapping - wrap constructor without...
  [OK]          atdgen         25   check length of floats serialized as floa...
  [OK]          atdgen         26   print JSON floats with maximum number of ...
  [OK]          atdgen         27   read json record with null fields meaning...
  [OK]          atdgen         28   read and write a variant represented as a...
  [OK]          atdgen         29   read and write a variant represented as a...
  [OK]          atdgen         30   test variants represented with single-fie...
  [OK]          atdgen         31   emulate the retired tag_field feature.
  [OK]          atdgen         32   emulate the retired tag_field feature, wi...
  [OK]          atdgen         33   test <json open_enum>.
  [OK]          atdgen         34   test ambiguous record with json adapters.
  [OK]          atdgen         35   test ambiguous classic variants with json...
  [OK]          atdgen         36   test wrapping of polymorphic types.
  [OK]          atdgen         37   json encoding int.
  [OK]          atdgen         38   json encoding & decoding int.
  [FAIL]        atdgen         39   json encoding int with string representat...
  [OK]          atdgen         40   json encoding & decoding int with string ...
  [OK]          atdgen         41   abstract types.
  [OK]          atdgen         42   untyped json.
  [FAIL]        atdgen         43   generic.
  [OK]          atdgen         44   inline-records.

┌──────────────────────────────────────────────────────────────────────────────┐
[FAIL]        atdgen         39   json encoding int with string represen...
└──────────────────────────────────────────────────────────────────────────────┘
ASSERT true
FAIL true

   Expected: `true'
   Received: `false'

Raised at Alcotest_engine__Test.check in file "src/alcotest-engine/test.ml", lines 216-226, characters 4-19
Called from Dune__exe__Test_atdgen_main.check in file "atdgen/test/test_atdgen_main.ml" (inlined), line 12, characters 2-43
Called from Dune__exe__Test_atdgen_main.test_encoding_int_with_string_repr in file "atdgen/test/test_atdgen_main.ml", line 636, characters 2-39
Called from Alcotest_engine__Core.Make.protect_test.(fun) in file "src/alcotest-engine/core.ml", line 186, characters 17-23
Called from Alcotest_engine__Monad.Identity.catch in file "src/alcotest-engine/monad.ml", line 24, characters 31-35

Logs saved to `/src/_build/default/atdgen/test/_build/_tests/atdgen/atdgen.039.output'.
 ──────────────────────────────────────────────────────────────────────────────


┌──────────────────────────────────────────────────────────────────────────────┐
[FAIL]        atdgen         43   generic.
└──────────────────────────────────────────────────────────────────────────────┘
ASSERT involution-abstract_j
ASSERT involution-test_int_with_string_repr_j.Afloat
File "atdgen/test/test_atdgen_main.ml", line 678, character 2:
FAIL involution-test_int_with_string_repr_j.Afloat

   Expected: `"\"42\""'
   Received: `"42"'

Raised at Alcotest_engine__Test.check in file "src/alcotest-engine/test.ml", lines 216-226, characters 4-19
Called from Dune__exe__Test_atdgen_main.test_generic in file "atdgen/test/test_atdgen_main.ml", line 678, characters 2-107
Called from Alcotest_engine__Core.Make.protect_test.(fun) in file "src/alcotest-engine/core.ml", line 186, characters 17-23
Called from Alcotest_engine__Monad.Identity.catch in file "src/alcotest-engine/monad.ml", line 24, characters 31-35

Logs saved to `/src/_build/default/atdgen/test/_build/_tests/atdgen/atdgen.043.output'.
 ──────────────────────────────────────────────────────────────────────────────

Full test results in `/src/_build/default/atdgen/test/_build/_tests/atdgen'.
2 failures! in 0.009s. 45 tests run.
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1
2026-03-09 08:27.13: Job failed: Failed: Build failed