Bug#1143350: ocaml-atd: FTBFS: dh_auto_test: error: dune runtest -j 2 -p atdgen-codec-runtime,atd,atdgen-runtime,atdgen,atdts returned exit code 1

Santiago Vila <[email protected]> Sat, 01 Aug 2026 22:37:05 +0000
Newsgroups gmane.linux.debian.devel.ocaml
Message-ID <E1wqIKH-00DZLV-20__12969.3946729944$1785624146$gmane$org@paradis.debian.org>
Package: src:ocaml-atd
Version: 4.2.0-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202608/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:ocaml-atd, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with ocaml --buildsystem ocaml_dune
   dh_auto_clean -O--buildsystem=ocaml_dune
	dune clean
   dh_autoreconf_clean -O--buildsystem=ocaml_dune
   dh_ocamlclean -O--buildsystem=ocaml_dune
   dh_clean -O--buildsystem=ocaml_dune
 debian/rules binary
dh binary --with ocaml --buildsystem ocaml_dune
   dh_update_autotools_config -O--buildsystem=ocaml_dune
   dh_autoreconf -O--buildsystem=ocaml_dune
   dh_ocamlinit -O--buildsystem=ocaml_dune
   dh_auto_configure -O--buildsystem=ocaml_dune
   dh_auto_build -O--buildsystem=ocaml_dune
	dune build -j 2 -p atdgen-codec-runtime,atd,atdgen-runtime,atdgen,atdts

[... snipped ...]

                       | _ -> (
                           (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
                         )
                   )
                 | _ -> (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
                   )
             )
             else (
               (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 197, characters 17-140" (String.sub s pos len); -1
             )
         in
         let i = Yojson.Safe.map_ident p f lb in
@@ -3815,7 +3815,7 @@
           )
           else (
             (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 203, characters 18-35" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 203, characters 18-35" (String.sub s pos len); -1
           )
       in
       let i = Yojson.Safe.map_ident p f lb in
@@ -3847,7 +3847,7 @@
             )
             else (
               (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 203, characters 18-35" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 203, characters 18-35" (String.sub s pos len); -1
             )
         in
         let i = Yojson.Safe.map_ident p f lb in
@@ -3928,7 +3928,7 @@
                   )
                   else (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                   )
                 )
               | '6' -> (
@@ -3937,17 +3937,17 @@
                   )
                   else (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                   )
                 )
               | _ -> (
                   (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                 )
           )
           else (
             (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
           )
       in
       let i = Yojson.Safe.map_ident p f lb in
@@ -3990,7 +3990,7 @@
                     )
                     else (
                       (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                     )
                   )
                 | '6' -> (
@@ -3999,17 +3999,17 @@
                     )
                     else (
                       (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                     )
                   )
                 | _ -> (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
                   )
             )
             else (
               (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 55, characters 14-71" (String.sub s pos len); -1
             )
         in
         let i = Yojson.Safe.map_ident p f lb in
@@ -4313,12 +4313,12 @@
                 )
               | _ -> (
                   (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
                 )
           )
           else (
             (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
           )
       in
       let i = Yojson.Safe.map_ident p f lb in
@@ -4409,12 +4409,12 @@
                   )
                 | _ -> (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
                   )
             )
             else (
               (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 103, characters 16-508" (String.sub s pos len); -1
             )
         in
         let i = Yojson.Safe.map_ident p f lb in
@@ -4665,12 +4665,12 @@
                 )
               | _ -> (
                   (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
                 )
           )
           else (
             (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
           )
       in
       let i = Yojson.Safe.map_ident p f lb in
@@ -4715,12 +4715,12 @@
                   )
                 | _ -> (
                     (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
                   )
             )
             else (
               (fun loc s -> Printf.eprintf "Warning: skipping field %s (def: %s)
-" s loc) "File \"test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
+" s loc) "File \"./test.atd\", line 98, characters 12-40" (String.sub s pos len); -1
             )
         in
         let i = Yojson.Safe.map_ident p f lb in
(cd _build/default/atdts/src/test && ./Main.exe)
Testing `atdts'.
This run has ID `XQI9WXGD'.


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

  [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 `/<<PKGBUILDDIR>>/_build/default/atd/test/_build/_tests/atd'.
Test Successful in 0.002s. 32 tests run.
(cd _build/default/atdpy/src/test && ./Main.exe)
Testing `atdpy'.
This run has ID `S0Y9OTIM'.


Full test results in `/<<PKGBUILDDIR>>/_build/default/atdpy/src/test/_build/_tests/atdpy'.
Test Successful in 0.000s. 0 test run.
File "doc/atdgen-tutorial-data/config-file/run.t", line 1, characters 0-0:
(cd _build/default && /usr/bin/diff -u --label doc/atdgen-tutorial-data/config-file/run.t --label doc/atdgen-tutorial-data/config-file/run.t.corrected doc/atdgen-tutorial-data/config-file/run.t doc/atdgen-tutorial-data/config-file/run.t.corrected)
--- doc/atdgen-tutorial-data/config-file/run.t
+++ doc/atdgen-tutorial-data/config-file/run.t.corrected
@@ -36,7 +36,7 @@
 Fail to validate another invalid config file (using custom validators)
 
   $ ./config.exe -validate bad-config2.json || :
-  Error: Found unknown JSON field tiemout while expecting type defined at: File "config.atd", line 1, characters 14-228
+  Error: Found unknown JSON field tiemout while expecting type defined at: File "./config.atd", line 1, characters 14-228
 
 Validate, inject missing defaults and pretty-print
 
(cd _build/default/atdgen/test && ./test_atdgen_main.exe)
Testing `atdgen'.
This run has ID `HBO14VOA'.

  [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.
  [OK]          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.
  [OK]          atdgen         43   generic.
  [OK]          atdgen         44   inline-records.

Full test results in `/<<PKGBUILDDIR>>/_build/default/atdgen/test/_build/_tests/atdgen'.
Test Successful in 0.003s. 45 tests run.
dh_auto_test: error: dune runtest -j 2 -p atdgen-codec-runtime,atd,atdgen-runtime,atdgen,atdts returned exit code 1
make: *** [debian/rules:8: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
--------------------------------------------------------------------------------