Organisationsahrefsatde34732 ()ubuntu-25.04-4.14_opam-2.5

ubuntu-25.04-4.14_opam-2.5

Logs

Show full logs
2026-03-09 07:47.19: New job: test ahrefs/atd https://github.com/ahrefs/atd.git#refs/heads/martin/modules (e34732b7eecc27804791f909072a225243220372) (linux-x86_64:ubuntu-25.04-4.14_opam-2.5)
Base: ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d
Opam project build

To reproduce locally:

git clone --recursive "https://github.com/ahrefs/atd.git" -b "martin/modules" && cd "atd" && git reset --hard e34732b7
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d
# ubuntu-25.04-4.14_opam-2.5
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
WORKDIR /src
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-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.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 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 07:47.19: Using cache hint "ahrefs/atd-ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d-ubuntu-25.04-4.14_opam-2.5-b5e6e6f9b3cd825fa334fc8812e3cf69"
2026-03-09 07:47.19: Using OBuilder spec:
((from ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d)
 (comment ubuntu-25.04-4.14_opam-2.5)
 (user (uid 1000) (gid 1000))
 (env CLICOLOR_FORCE 1)
 (env OPAMCOLOR always)
 (workdir /src)
 (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-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.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 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 07:47.19: Waiting for resource in pool OCluster
2026-03-09 07:47.19: Waiting for worker…
2026-03-09 07:47.19: Got resource from pool OCluster
Building on doris.caelum.ci.dev
HEAD is now at fb07c1b Use hash tables to read large objects a little faster (#447)
HEAD is now at e34732b Update docs and changelog for import statement support

(from ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d)
Unable to find image 'ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d' locally
docker.io/ocaml/opam@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d: Pulling from ocaml/opam
c62190a9ab61: Pulling fs layer
9a2e0901dff5: Pulling fs layer
b1f9cc70ae42: Pulling fs layer
ce0546b0dd1f: Pulling fs layer
79301f00e8ba: Pulling fs layer
9b295b25667c: Pulling fs layer
a31f71beef5e: Pulling fs layer
ce0546b0dd1f: Waiting
9b295b25667c: Waiting
5f6f7ff1dd75: Pulling fs layer
79301f00e8ba: Waiting
a31f71beef5e: Waiting
3326c804f772: Pulling fs layer
5f6f7ff1dd75: Waiting
dbc305c5cd35: Pulling fs layer
3326c804f772: Waiting
c2cccf40b87f: Pulling fs layer
45e66d8ca585: Pulling fs layer
dbc305c5cd35: Waiting
fcefa7241269: Pulling fs layer
c2cccf40b87f: Waiting
5bf160151561: Pulling fs layer
45e66d8ca585: Waiting
5bf160151561: Waiting
874b2264723c: Pulling fs layer
fcefa7241269: Waiting
ada98df8f669: Pulling fs layer
874b2264723c: Waiting
ab8d0ea6e4f6: Pulling fs layer
ada98df8f669: Waiting
ab8d0ea6e4f6: Waiting
18a72a4bedd6: Pulling fs layer
bfcd7ea0ace8: Pulling fs layer
18a72a4bedd6: Waiting
76a18c947be5: Pulling fs layer
bfcd7ea0ace8: Waiting
6fd9d51ce26c: Pulling fs layer
4f4fb700ef54: Pulling fs layer
77d410803a59: Pulling fs layer
76a18c947be5: Waiting
44e2dad9dd55: Pulling fs layer
6fd9d51ce26c: Waiting
b51e285283d3: Pulling fs layer
4f4fb700ef54: Waiting
dd8da5b96ca2: Pulling fs layer
77d410803a59: Waiting
b51e285283d3: Waiting
44e2dad9dd55: Waiting
b46c436fcec9: Pulling fs layer
dd8da5b96ca2: Waiting
a9e62b40a1cc: Pulling fs layer
b46c436fcec9: Waiting
f5ab56558ad4: Pulling fs layer
a9e62b40a1cc: Waiting
8f52d3d09866: Pulling fs layer
39ac1f9b485e: Pulling fs layer
503fbe92c3b9: Pulling fs layer
8f52d3d09866: Waiting
f5ab56558ad4: Waiting
f3db52c04fc1: Pulling fs layer
3bb40995af78: Pulling fs layer
503fbe92c3b9: Waiting
7b86297d779e: Pulling fs layer
f3db52c04fc1: Waiting
39ac1f9b485e: Waiting
105dcde23ccd: Pulling fs layer
3bb40995af78: Waiting
f59061871678: Pulling fs layer
7b86297d779e: Waiting
536cb47a2e17: Pulling fs layer
105dcde23ccd: Waiting
0a2922aaae32: Pulling fs layer
e1d8bbe78506: Pulling fs layer
a7d7a0c35cb6: Pulling fs layer
3ff915cf3429: Pulling fs layer
536cb47a2e17: Waiting
e1d8bbe78506: Waiting
a7d7a0c35cb6: Waiting
61d320279e43: Pulling fs layer
26613761b3e5: Pulling fs layer
3ff915cf3429: Waiting
61d320279e43: Waiting
b1f9cc70ae42: Download complete
9a2e0901dff5: Download complete
c62190a9ab61: Verifying Checksum
c62190a9ab61: Download complete
ce0546b0dd1f: Verifying Checksum
ce0546b0dd1f: Download complete
a31f71beef5e: Download complete
79301f00e8ba: Verifying Checksum
79301f00e8ba: Download complete
5f6f7ff1dd75: Verifying Checksum
5f6f7ff1dd75: Download complete
3326c804f772: Verifying Checksum
3326c804f772: Download complete
c62190a9ab61: Pull complete
9a2e0901dff5: Pull complete
dbc305c5cd35: Verifying Checksum
dbc305c5cd35: Download complete
b1f9cc70ae42: Pull complete
c2cccf40b87f: Download complete
45e66d8ca585: Verifying Checksum
45e66d8ca585: Download complete
fcefa7241269: Download complete
ce0546b0dd1f: Pull complete
5bf160151561: Verifying Checksum
5bf160151561: Download complete
874b2264723c: Verifying Checksum
874b2264723c: Download complete
79301f00e8ba: Pull complete
9b295b25667c: Verifying Checksum
9b295b25667c: Download complete
ada98df8f669: Download complete
ab8d0ea6e4f6: Verifying Checksum
ab8d0ea6e4f6: Download complete
18a72a4bedd6: Verifying Checksum
18a72a4bedd6: Download complete
bfcd7ea0ace8: Verifying Checksum
bfcd7ea0ace8: Download complete
76a18c947be5: Verifying Checksum
76a18c947be5: Download complete
6fd9d51ce26c: Verifying Checksum
6fd9d51ce26c: Download complete
4f4fb700ef54: Download complete
77d410803a59: Download complete
44e2dad9dd55: Download complete
b51e285283d3: Verifying Checksum
b51e285283d3: Download complete
dd8da5b96ca2: Download complete
b46c436fcec9: Verifying Checksum
b46c436fcec9: Download complete
a9e62b40a1cc: Download complete
f5ab56558ad4: Verifying Checksum
f5ab56558ad4: Download complete
8f52d3d09866: Verifying Checksum
8f52d3d09866: Download complete
503fbe92c3b9: Verifying Checksum
503fbe92c3b9: Download complete
f3db52c04fc1: Download complete
3bb40995af78: Download complete
105dcde23ccd: Verifying Checksum
105dcde23ccd: Download complete
536cb47a2e17: Verifying Checksum
536cb47a2e17: Download complete
0a2922aaae32: Download complete
e1d8bbe78506: Download complete
7b86297d779e: Verifying Checksum
7b86297d779e: Download complete
3ff915cf3429: Verifying Checksum
3ff915cf3429: Download complete
61d320279e43: Verifying Checksum
61d320279e43: Download complete
26613761b3e5: Verifying Checksum
26613761b3e5: Download complete
9b295b25667c: Pull complete
a31f71beef5e: Pull complete
5f6f7ff1dd75: Pull complete
3326c804f772: Pull complete
dbc305c5cd35: Pull complete
c2cccf40b87f: Pull complete
45e66d8ca585: Pull complete
fcefa7241269: Pull complete
a7d7a0c35cb6: Verifying Checksum
a7d7a0c35cb6: Download complete
5bf160151561: Pull complete
874b2264723c: Pull complete
ada98df8f669: Pull complete
ab8d0ea6e4f6: Pull complete
f59061871678: Verifying Checksum
f59061871678: Download complete
18a72a4bedd6: Pull complete
bfcd7ea0ace8: Pull complete
76a18c947be5: Pull complete
6fd9d51ce26c: Pull complete
4f4fb700ef54: Pull complete
77d410803a59: Pull complete
44e2dad9dd55: Pull complete
b51e285283d3: Pull complete
dd8da5b96ca2: Pull complete
b46c436fcec9: Pull complete
a9e62b40a1cc: Pull complete
f5ab56558ad4: Pull complete
8f52d3d09866: Pull complete
39ac1f9b485e: Pull complete
503fbe92c3b9: Pull complete
f3db52c04fc1: Pull complete
3bb40995af78: Pull complete
7b86297d779e: Pull complete
105dcde23ccd: Pull complete
f59061871678: Pull complete
536cb47a2e17: Pull complete
0a2922aaae32: Pull complete
e1d8bbe78506: Pull complete
a7d7a0c35cb6: Pull complete
3ff915cf3429: Pull complete
61d320279e43: Pull complete
26613761b3e5: Pull complete
Digest: sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d
Status: Downloaded newer image for ocaml/opam@sha256:da7613517228e8bc5eeff3cf5bac9398efb80c19b7ea755e716409551da66b9d
2026-03-09 07:47.20 ---> using "8be63355c4a8e3ed39d87c01aea6b840edfb27d913c4bf8d10e897ed2a19abfc" from cache

/: (comment ubuntu-25.04-4.14_opam-2.5)

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

/: (env CLICOLOR_FORCE 1)

/: (env OPAMCOLOR always)

/: (workdir /src)

/src: (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam"))
2026-03-09 07:47.20 ---> using "3b1e98180608464d3192a40cae49abc4c4587eaea469e083b8e472ec73c7e3c1" 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 07:47.20 ---> using "583d78b7fffcad4e88cae424d53ba5ac4a3e3790a595ddd962046db38e042d30" from cache

/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 6.8.0-94-generic
The OCaml toplevel, version 4.14.2
2.5.0
2026-03-09 07:47.20 ---> using "f4244c896864227bd06aeeb7ac784ad0bfd433e02369b85f090428a206231b60" from cache

/src: (workdir /src)

/src: (run (shell "sudo chown opam /src"))
2026-03-09 07:47.20 ---> using "1a3b68cfb51618716d7579238e673bc499d9d801120048d3b72adb12ef5cb0bb" 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
   b820e8c25e..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 07:47.36 ---> saved as "94ff0de29f68ba38e92465289d21f88c33274bddc3915c4c437e5ebf96f47942"

/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 07:47.36 ---> saved as "838dcf52a6c66750a37b61604c1654709b3dfd33d2dbb1fa6b172ccf8dfe5b5f"

/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 07:47.50 ---> saved as "5936a1a8ff3650bb65569fab7dcbc52c5cb41efb1f14887b5069e501a046f428"

/src: (run (shell "echo '(lang dune 3.0)' > './dune-project'"))
2026-03-09 07:47.50 ---> saved as "58bc5ef111677436733783302de725b668a91107d5ef53024ac045741cc2c6a4"

/src: (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.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.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 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/bin/sudo "apt-get" "update"
- Hit:1 http://security.ubuntu.com/ubuntu plucky-security InRelease
- Hit:2 http://archive.ubuntu.com/ubuntu plucky InRelease
- Hit:3 http://archive.ubuntu.com/ubuntu plucky-updates InRelease
- Hit:4 http://archive.ubuntu.com/ubuntu plucky-backports InRelease
- Reading package lists...
- 

<><> 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 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[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-bigarray is already installed (current version is base).

The following system packages will first need to be installed:
    python3

<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>

+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "python3"
- Preconfiguring packages ...
- Selecting previously unselected package libpython3.13-minimal:amd64.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 16503 files and directories currently installed.)
- Preparing to unpack .../libpython3.13-minimal_3.13.3-1ubuntu0.5_amd64.deb ...
- Unpacking libpython3.13-minimal:amd64 (3.13.3-1ubuntu0.5) ...
- Selecting previously unselected package python3.13-minimal.
- Preparing to unpack .../python3.13-minimal_3.13.3-1ubuntu0.5_amd64.deb ...
- Unpacking python3.13-minimal (3.13.3-1ubuntu0.5) ...
- Setting up libpython3.13-minimal:amd64 (3.13.3-1ubuntu0.5) ...
- Setting up python3.13-minimal (3.13.3-1ubuntu0.5) ...
- Selecting previously unselected package python3-minimal.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 16828 files and directories currently installed.)
- Preparing to unpack .../0-python3-minimal_3.13.3-1_amd64.deb ...
- Unpacking python3-minimal (3.13.3-1) ...
- Selecting previously unselected package media-types.
- Preparing to unpack .../1-media-types_13.0.0_all.deb ...
- Unpacking media-types (13.0.0) ...
- Selecting previously unselected package tzdata.
- Preparing to unpack .../2-tzdata_2025b-1ubuntu1.1_all.deb ...
- Unpacking tzdata (2025b-1ubuntu1.1) ...
- Selecting previously unselected package libpython3.13-stdlib:amd64.
- Preparing to unpack .../3-libpython3.13-stdlib_3.13.3-1ubuntu0.5_amd64.deb ...
- Unpacking libpython3.13-stdlib:amd64 (3.13.3-1ubuntu0.5) ...
- Selecting previously unselected package python3.13.
- Preparing to unpack .../4-python3.13_3.13.3-1ubuntu0.5_amd64.deb ...
- Unpacking python3.13 (3.13.3-1ubuntu0.5) ...
- Selecting previously unselected package libpython3-stdlib:amd64.
- Preparing to unpack .../5-libpython3-stdlib_3.13.3-1_amd64.deb ...
- Unpacking libpython3-stdlib:amd64 (3.13.3-1) ...
- Setting up python3-minimal (3.13.3-1) ...
- Selecting previously unselected package python3.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 17795 files and directories currently installed.)
- Preparing to unpack .../python3_3.13.3-1_amd64.deb ...
- Unpacking python3 (3.13.3-1) ...
- Setting up media-types (13.0.0) ...
- Setting up tzdata (2025b-1ubuntu1.1) ...
- 
- Current default time zone: 'Europe/London'
- Local time is now:      Mon Mar  9 07:48:05 GMT 2026.
- Universal Time is now:  Mon Mar  9 07:48:05 UTC 2026.
- Run 'dpkg-reconfigure tzdata' if you wish to change it.
- 
- Setting up libpython3.13-stdlib:amd64 (3.13.3-1ubuntu0.5) ...
- Setting up libpython3-stdlib:amd64 (3.13.3-1) ...
- Setting up python3.13 (3.13.3-1ubuntu0.5) ...
- Setting up python3 (3.13.3-1) ...
- running python rtupdate hooks for python3.13...
- running python post-rtupdate hooks for python3.13...
# To update the current shell environment, run: eval $(opam env)
2026-03-09 07:48.06 ---> saved as "bdc0eff546117af5e980407bc923b136f189c1e3f0b3de1d1c35ba360a1abd0e"

/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 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[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-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.12.4
  - 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.12.4  (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 ppxlib.0.37.0  (cached)
-> retrieved sexplib0.v0.17.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> installed cmdliner.2.1.0
-> retrieved topkg.1.1.1  (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 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 camlp-streams.5.0.1
-> installed easy-format.1.3.4
-> installed menhirCST.20260209
-> installed ppx_derivers.1.2.1
-> installed stdlib-shims.0.3.0
-> installed menhirLib.20260209
-> installed menhirGLR.20260209
-> installed menhirSdk.20260209
-> installed cppo.1.8.0
-> installed sexplib0.v0.17.0
-> installed biniou.1.2.2
-> installed ocaml-syntax-shims.1.0.0
-> installed ocaml-compiler-libs.v0.12.4
-> 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 07:48.56 ---> saved as "1c75390a4dd8699ea8d26e3a6c5a0120bb2fde36adb1da871221888b6322fb0d"

/src: (copy (src .) (dst /src))
2026-03-09 07:48.56 ---> saved as "2e81549a2a7f94c162838af52292edcfce6069a1e80be0acd199a5eb2214e362"

/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
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: 6: scalac: not found
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: 5: javac: not found
./run_test.sh: 6: javac: not found
./run_test.sh: 7: javadoc: not found
./run_test.sh: 10: java: not found
(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/bin/bash -e -u -o pipefail -c 'ldc2 everything_atd.d test_atdd.d --of test')
/usr/bin/bash: line 1: ldc2: command not found
File "atdcat/test/test.expected.atd", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdcat/test/test.expected.atd _build/default/atdcat/test/test.out.atd
diff --git a/_build/default/atdcat/test/test.expected.atd b/_build/default/atdcat/test/test.out.atd
index f1b2259..c15ed85 100644
--- a/_build/default/atdcat/test/test.expected.atd
+++ b/_build/default/atdcat/test/test.out.atd
@@ -1,4 +1,6 @@
 <doc html="<p>This <b>is</b> a test.</p>" text="This is a test.">
+import a <ocaml name="Aha">
+import a.b <ocaml name="AB"> as c <python name="cc">
 type test_string_syntax =
   int
     <a b="\"">
(cd _build/default/atdts/src/test && ./Main.exe)
Testing `atdts'.
This run has ID `4EI3QJ15'.


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


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 `7M4JDTGH'.

  [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.002s. 32 tests run.
File "atdgen/test/melange/melangespec_mel.expected.ml", line 1, characters 0-0:
/usr/bin/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)
     )
   )
 )
File "atdcat/test/test.unwrap.expected.atd", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdcat/test/test.unwrap.expected.atd _build/default/atdcat/test/test.unwrap.atd
diff --git a/_build/default/atdcat/test/test.unwrap.expected.atd b/_build/default/atdcat/test/test.unwrap.atd
index 02d3e25..c15ed85 100644
--- a/_build/default/atdcat/test/test.unwrap.expected.atd
+++ b/_build/default/atdcat/test/test.unwrap.atd
@@ -1,4 +1,6 @@
 <doc html="<p>This <b>is</b> a test.</p>" text="This is a test.">
+import a <ocaml name="Aha">
+import a.b <ocaml name="AB"> as c <python name="cc">
 type test_string_syntax =
   int
     <a b="\"">
@@ -78,4 +80,4 @@ type 'a recur = { cyc: 'a recur option }
 type 'a ta = [ Ta of 'a ] <ta f2="xyz" f1>
 type int_ta = int ta <ta f1="false" f3="abc">
 type int_ta2 = int ta <ta f1="false" f3="abc"> <ocaml repr="classic">
-type timestamp = string
+type timestamp = string wrap <ocaml module="Timestamp">
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/bin/python3 -m flake8 .)
/usr/bin/python3: No module named flake8
File "atdgen/test/melange/melangespec_j.expected.ml", line 1, characters 0-0:
/usr/bin/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 "atdgen/test/test.expected.ml", line 1, characters 0-0:
/usr/bin/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/testv.expected.ml", line 1, characters 0-0:
/usr/bin/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 "atdgen/test/testjstd_j.expected.ml", line 1, characters 0-0:
/usr/bin/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 "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/bin/python3 -m jsonschema schema.json -i data.json)
/usr/bin/python3: No module named jsonschema
File "atdgen/test/testj.expected.ml", line 1, characters 0-0:
/usr/bin/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/bin/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 `HM575E6W'.

  [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", line 216, characters 4-261
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", line 216, characters 4-261
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.008s. 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 07:49.00: Job failed: Failed: Build failed