OCamllabs icon Home|Differences with the last checks|Previous runs


Building on odawa.caelum.ci.dev

(from ocaml/opam:debian-unstable)
Unable to find image 'ocaml/opam:debian-unstable' locally
debian-unstable: Pulling from ocaml/opam
Digest: sha256:1e0b6f576b8d607b19de55c9b0f077afe05eb64669ad8fa98a8169a64a417a6f
Status: Downloaded newer image for ocaml/opam:debian-unstable
2025-12-29 15:46.37 ---> using "0acd5aeaa8f7bc314514d9795d14a7f12ec72a6a5b11c5904350189734c6859b" from cache

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

/: (env OPAMPRECISETRACKING 1)

/: (env OPAMUTF8 never)

/: (env OPAMEXTERNALSOLVER builtin-0install)

/: (env OPAMCRITERIA +removed)

/: (env CI true)

/: (env OPAM_HEALTH_CHECK_CI true)

/: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2025-12-29 15:46.37 ---> using "40df4fa4cdfc68a5fa7a326047e82a7adc5df52b8059d4a7b745bdd50aad56e7" from cache

/: (run (network host)
        (shell "rm -rf ~/opam-repository && git clone -q 'https://github.com/ocaml/opam-repository' ~/opam-repository && git -C ~/opam-repository checkout -q c239a62d58deaede2e5dce17c2715a55397b73f2"))
2025-12-29 15:46.37 ---> using "56be004b76cb51085f35c8dfc91ba3175ea97907d421b4b0b02e7c1a630a1108" from cache

/: (run (shell "rm -rf ~/.opam && opam init -ya --bare --config ~/.opamrc-sandbox ~/opam-repository"))
Configuring from /home/opam/.opamrc-sandbox, then /home/opam/.opamrc, and finally from built-in defaults.
Checking for available remotes: rsync and local, git.
  - you won't be able to use mercurial repositories unless you install the hg command on your system.
  - you won't be able to use darcs repositories unless you install the darcs command on your system.


<><> Fetching repository information ><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised

User configuration:
  ~/.profile is already up-to-date.
2025-12-29 15:46.37 ---> using "ed7ae9bae0c3d5c49db6159e96a47bbcbdddbc9479c9fe4d51c2f1b00ae1b7e2" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell "opam switch create --repositories=default '5.3-dune' '5.3.0'"))

<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><>
Switch invariant: ["ocaml-base-compiler" {= "5.3.0"}]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-config.3  (cached)
-> installed base-bigarray.base
-> installed base-threads.base
-> installed base-unix.base
-> installed ocaml-options-vanilla.1
-> retrieved ocaml-compiler.5.3.0  (cached)
-> installed ocaml-compiler.5.3.0
-> installed ocaml-base-compiler.5.3.0
-> installed ocaml-config.3
-> installed ocaml.5.3.0
-> installed base-domains.base
-> installed base-effects.base
-> installed base-nnp.base
Done.
# To update the current shell environment, run: eval $(opam env --switch=5.3-dune)
2025-12-29 15:46.37 ---> using "0ba1ecff5cbacf2ff346c199d5bbb730ff1dcfadffcf4be94bc48e3deffb25ce" from cache

/: (run (network host)
        (shell "opam update --depexts"))
+ /usr/bin/sudo "apt-get" "update"
- Get:1 http://deb.debian.org/debian unstable InRelease [187 kB]
- Get:2 http://deb.debian.org/debian unstable/main amd64 Packages.diff/Index [63.6 kB]
- Get:3 http://deb.debian.org/debian unstable/main amd64 Packages T-2025-12-29-0804.39-F-2025-12-26-2020.11.pdiff [262 kB]
- Get:3 http://deb.debian.org/debian unstable/main amd64 Packages T-2025-12-29-0804.39-F-2025-12-26-2020.11.pdiff [262 kB]
- Fetched 513 kB in 2s (340 kB/s)
- Reading package lists...
- 
2025-12-29 15:46.37 ---> using "97503196a5b2c8ead5d015466bb8c6e9d7ca051a246b7973b527720b7364d9be" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell "opam pin add -k version dune $(opam show -f version dune)"))
dune is now pinned to version 3.20.2

The following actions will be performed:
=== install 1 package
  - install dune 3.20.2 (pinned)

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved dune.3.20.2  (cached)
-> installed dune.3.20.2
Done.
# To update the current shell environment, run: eval $(opam env)
2025-12-29 15:46.37 ---> using "dfd390be8db08de5b82f6ea38b022735693c9445c8de9f86c9fd82f00e2c81f9" from cache

/: (env DUNE_CACHE enabled)

/: (env DUNE_CACHE_TRANSPORT direct)

/: (env DUNE_CACHE_DUPLICATION copy)

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell "curl -fsSL https://get.dune.build/install | sh"))

############################                                              39.1%
######################################################################## 100.0%
dune x86_64-unknown-linux-musl was installed successfully to ~/.local/bin/dune 


#=#=#                                                                          
                                                                           0.0%
#                                                                          2.6%
###                                                                        5.2%
####                                                                       6.1%
######                                                                     8.5%
#######                                                                   11.1%
########                                                                  12.1%
##########                                                                14.5%
############                                                              17.1%
#############                                                             18.2%
#############                                                             18.3%
#############                                                             18.6%
##############                                                            19.5%
###############                                                           21.3%
#################                                                         23.7%
#################                                                         24.7%
###################                                                       26.7%
#####################                                                     29.4%
#####################                                                     30.3%
#######################                                                   32.8%
#########################                                                 35.1%
##########################                                                36.4%
############################                                              39.1%
#############################                                             41.4%
##############################                                            42.5%
################################                                          44.9%
#################################                                         47.0%
##################################                                        48.5%
####################################                                      51.1%
######################################                                    53.5%
#######################################                                   54.6%
#########################################                                 57.0%
##########################################                                59.5%
###########################################                               60.7%
############################################                              61.9%
#############################################                             63.8%
###############################################                           66.4%
################################################                          67.3%
#################################################                         69.1%
###################################################                       71.5%
####################################################                      72.8%
######################################################                    75.1%
#######################################################                   77.6%
########################################################                  78.9%
##########################################################                81.1%
############################################################              83.6%
#############################################################             85.0%
#############################################################             85.2%
#############################################################             85.8%
##############################################################            87.0%
###############################################################           87.9%
###############################################################           88.3%
################################################################          89.4%
#################################################################         91.0%
##################################################################        92.4%
###################################################################       93.8%
####################################################################      95.0%
#####################################################################     96.4%
######################################################################    97.3%
#######################################################################   99.5%
######################################################################## 100.0%
Revision cache was populated successfully 
To use dune you will need to source the file "$HOME/.local/share/dune/env/env.bash" (or similar as appropriate for your shell)
  export PATH="/home/opam/.local/bin:$PATH" 

To get started, run: 
  dune --help 
2025-12-29 15:46.37 ---> using "bf6995863db7a7d87d60b6e8e5300471ffd01701d87b656d0683e35e71df2072" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell "mkdir /tmp/sexp && cd /tmp/sexp && opam switch create ./ ocaml-base-compiler.5.2.1 --no-install && opam install -y sexp && cd -"))

<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><>
Switch invariant: ["ocaml-base-compiler" {= "5.2.1"}]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-config.3  (cached)
-> installed base-bigarray.base
-> installed base-threads.base
-> installed base-unix.base
-> installed ocaml-options-vanilla.1
-> retrieved ocaml-base-compiler.5.2.1  (cached)
-> installed ocaml-base-compiler.5.2.1
-> installed ocaml-config.3
-> installed ocaml.5.2.1
-> installed base-domains.base
-> installed base-nnp.base
Done.
# To update the current shell environment, run: eval $(opam env)
The following actions will be performed:
=== install 100 packages
  - install angstrom                    0.16.1    [required by jsonaf]
  - install async                       v0.17.0   [required by sexp]
  - install async_kernel                v0.17.0   [required by async]
  - install async_log                   v0.17.0   [required by async]
  - install async_rpc_kernel            v0.17.0   [required by async]
  - install async_unix                  v0.17.0   [required by async]
  - install base                        v0.17.3   [required by jsonaf, sexp_select]
  - install base_bigstring              v0.17.0   [required by core]
  - install base_quickcheck             v0.17.0   [required by core]
  - install bigstringaf                 0.10.0    [required by angstrom, faraday]
  - install bin_prot                    v0.17.0-1 [required by core]
  - install capitalization              v0.17.0   [required by ppx_string_conv]
  - install conf-g++                    1.0       [required by re2]
  - install core                        v0.17.1   [required by sexp]
  - install core_kernel                 v0.17.0   [required by sexp]
  - install core_unix                   v0.17.1   [required by sexp]
  - install csexp                       1.5.2     [required by dune-configurator]
  - install cstruct                     6.2.0     [required by async_unix]
  - install csvfields                   v0.17.0   [required by sexp]
  - install dune                        3.20.2    [required by sexp]
  - install dune-configurator           3.20.2    [required by bigstringaf]
  - install expect_test_helpers_core    v0.17.0   [required by core_unix]
  - install faraday                     0.8.2     [required by jsonaf]
  - install fieldslib                   v0.17.0   [required by core]
  - install fmt                         0.11.0    [required by cstruct]
  - install gel                         v0.17.0   [required by async_rpc_kernel]
  - install int_repr                    v0.17.0   [required by core_kernel]
  - install jane-street-headers         v0.17.0   [required by core]
  - install jane_rope                   v0.17.0   [required by re2]
  - install jsonaf                      v0.17.0   [required by sexp]
  - install jst-config                  v0.17.0   [required by shell]
  - install num                         1.6       [required by csvfields]
  - install ocaml-compiler-libs         v0.17.0   [required by ppxlib]
  - install ocaml-syntax-shims          1.0.0     [required by angstrom]
  - install ocaml_intrinsics_kernel     v0.17.1   [required by base]
  - install ocamlbuild                  0.16.1    [required by uutf]
  - install ocamlfind                   1.9.8     [required by uutf]
  - install parsexp                     v0.17.0   [required by sexplib]
  - install ppx_assert                  v0.17.0   [required by core]
  - install ppx_base                    v0.17.0   [required by core]
  - install ppx_bench                   v0.17.0   [required by ppx_jane]
  - install ppx_bin_prot                v0.17.0   [required by ppx_jane]
  - install ppx_cold                    v0.17.0   [required by ppx_base]
  - install ppx_compare                 v0.17.0   [required by ppx_diff]
  - install ppx_custom_printf           v0.17.0   [required by ppx_jane]
  - install ppx_derivers                1.2.1     [required by ppxlib]
  - install ppx_diff                    v0.17.0   [required by core]
  - install ppx_disable_unused_warnings v0.17.0   [required by ppx_jane]
  - install ppx_enumerate               v0.17.0   [required by ppx_diff]
  - install ppx_expect                  v0.17.2   [required by ppx_jane]
  - install ppx_fields_conv             v0.17.0   [required by ppx_jane]
  - install ppx_fixed_literal           v0.17.0   [required by ppx_jane]
  - install ppx_globalize               v0.17.0   [required by ppx_base]
  - install ppx_hash                    v0.17.0   [required by core]
  - install ppx_here                    v0.17.0   [required by ppx_jane]
  - install ppx_ignore_instrumentation  v0.17.0   [required by ppx_jane]
  - install ppx_inline_test             v0.17.0   [required by core]
  - install ppx_jane                    v0.17.0   [required by sexp]
  - install ppx_let                     v0.17.0   [required by ppx_jane]
  - install ppx_log                     v0.17.0   [required by ppx_jane]
  - install ppx_module_timer            v0.17.0   [required by ppx_jane]
  - install ppx_optcomp                 v0.17.0   [required by core_kernel, core, async_unix]
  - install ppx_optional                v0.17.0   [required by ppx_jane]
  - install ppx_pipebang                v0.17.0   [required by ppx_jane]
  - install ppx_sexp_conv               v0.17.0   [required by core]
  - install ppx_sexp_message            v0.17.0   [required by core]
  - install ppx_sexp_value              v0.17.0   [required by ppx_jane]
  - install ppx_stable                  v0.17.0   [required by ppx_jane]
  - install ppx_stable_witness          v0.17.0   [required by ppx_jane]
  - install ppx_string                  v0.17.0   [required by ppx_jane]
  - install ppx_string_conv             v0.17.0   [required by ppx_jane]
  - install ppx_tydi                    v0.17.0   [required by ppx_jane]
  - install ppx_typerep_conv            v0.17.0   [required by ppx_jane]
  - install ppx_variants_conv           v0.17.0   [required by ppx_jane]
  - install ppxlib                      0.35.0    [required by ppx_diff]
  - install ppxlib_jane                 v0.17.0   [required by ppx_diff]
  - install protocol_version_header     v0.17.0   [required by async_rpc_kernel]
  - install re                          1.14.0    [required by expect_test_helpers_core]
  - install re2                         v0.17.0   [required by sexp]
  - install regex_parser_intf           v0.17.0   [required by re2]
  - install sexp                        v0.17.0
  - install sexp_diff                   v0.17.0   [required by sexp]
  - install sexp_macro                  v0.17.0   [required by sexp]
  - install sexp_pretty                 v0.17.0   [required by sexp]
  - install sexp_select                 v0.17.0   [required by sexp]
  - install sexplib                     v0.17.0   [required by sexp]
  - install sexplib0                    v0.17.0   [required by base]
  - install shell                       v0.17.0   [required by sexp]
  - install spawn                       v0.17.0   [required by shell]
  - install splittable_random           v0.17.0   [required by core]
  - install stdio                       v0.17.0   [required by core]
  - install stdlib-shims                0.3.0     [required by ppxlib]
  - install textutils                   v0.17.0   [required by async, shell]
  - install time_now                    v0.17.0   [required by core]
  - install timezone                    v0.17.0   [required by async_log]
  - install topkg                       1.1.1     [required by uutf]
  - install typerep                     v0.17.1   [required by core]
  - install uopt                        v0.17.0   [required by core_kernel]
  - install uutf                        1.0.4     [required by textutils]
  - install variantslib                 v0.17.0   [required by core]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved angstrom.0.16.1  (cached)
-> retrieved async.v0.17.0  (cached)
-> retrieved async_kernel.v0.17.0  (cached)
-> retrieved async_log.v0.17.0  (cached)
-> retrieved async_rpc_kernel.v0.17.0  (cached)
-> retrieved async_unix.v0.17.0  (cached)
-> retrieved base.v0.17.3  (cached)
-> retrieved base_bigstring.v0.17.0  (cached)
-> retrieved base_quickcheck.v0.17.0  (cached)
-> retrieved bigstringaf.0.10.0  (cached)
-> retrieved bin_prot.v0.17.0-1  (cached)
-> retrieved capitalization.v0.17.0  (cached)
-> retrieved core.v0.17.1  (cached)
-> installed conf-g++.1.0
-> retrieved core_kernel.v0.17.0  (cached)
-> retrieved core_unix.v0.17.1  (cached)
-> retrieved csexp.1.5.2  (cached)
-> retrieved cstruct.6.2.0  (cached)
-> retrieved csvfields.v0.17.0  (cached)
-> retrieved expect_test_helpers_core.v0.17.0  (cached)
-> retrieved faraday.0.8.2  (cached)
-> retrieved fieldslib.v0.17.0  (cached)
-> retrieved gel.v0.17.0  (cached)
-> retrieved fmt.0.11.0  (cached)
-> retrieved int_repr.v0.17.0  (cached)
-> retrieved jane-street-headers.v0.17.0  (cached)
-> retrieved jane_rope.v0.17.0  (cached)
-> retrieved jsonaf.v0.17.0  (cached)
-> retrieved jst-config.v0.17.0  (cached)
-> retrieved num.1.6  (cached)
-> retrieved ocaml-compiler-libs.v0.17.0  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocaml_intrinsics_kernel.v0.17.1  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> retrieved parsexp.v0.17.0  (cached)
-> retrieved ppx_assert.v0.17.0  (cached)
-> retrieved ppx_base.v0.17.0  (cached)
-> retrieved ppx_bench.v0.17.0  (cached)
-> retrieved ppx_bin_prot.v0.17.0  (cached)
-> retrieved ppx_cold.v0.17.0  (cached)
-> retrieved ppx_compare.v0.17.0  (cached)
-> retrieved ppx_custom_printf.v0.17.0  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ppx_disable_unused_warnings.v0.17.0  (cached)
-> retrieved ppx_diff.v0.17.0  (cached)
-> retrieved ppx_enumerate.v0.17.0  (cached)
-> retrieved ppx_fields_conv.v0.17.0  (cached)
-> retrieved ppx_expect.v0.17.2  (cached)
-> retrieved ppx_fixed_literal.v0.17.0  (cached)
-> retrieved ppx_globalize.v0.17.0  (cached)
-> retrieved ppx_hash.v0.17.0  (cached)
-> retrieved ppx_here.v0.17.0  (cached)
-> retrieved ppx_ignore_instrumentation.v0.17.0  (cached)
-> retrieved ppx_inline_test.v0.17.0  (cached)
-> retrieved ppx_jane.v0.17.0  (cached)
-> retrieved ppx_let.v0.17.0  (cached)
-> retrieved ppx_log.v0.17.0  (cached)
-> retrieved ppx_module_timer.v0.17.0  (cached)
-> retrieved ppx_optcomp.v0.17.0  (cached)
-> retrieved ppx_optional.v0.17.0  (cached)
-> retrieved ppx_pipebang.v0.17.0  (cached)
-> retrieved ppx_sexp_conv.v0.17.0  (cached)
-> retrieved ppx_sexp_message.v0.17.0  (cached)
-> retrieved ppx_sexp_value.v0.17.0  (cached)
-> retrieved ppx_stable.v0.17.0  (cached)
-> retrieved dune.3.20.2, dune-configurator.3.20.2  (cached)
-> installed num.1.6
-> retrieved ppx_stable_witness.v0.17.0  (cached)
-> retrieved ppx_string.v0.17.0  (cached)
-> retrieved ppx_string_conv.v0.17.0  (cached)
-> retrieved ppx_tydi.v0.17.0  (cached)
-> retrieved ppx_typerep_conv.v0.17.0  (cached)
-> retrieved ppx_variants_conv.v0.17.0  (cached)
-> retrieved ppxlib_jane.v0.17.0  (cached)
-> retrieved protocol_version_header.v0.17.0  (cached)
-> retrieved re.1.14.0  (cached)
-> retrieved re2.v0.17.0  (cached)
-> retrieved regex_parser_intf.v0.17.0  (cached)
-> retrieved sexp_diff.v0.17.0  (cached)
-> retrieved sexp.v0.17.0  (cached)
-> retrieved sexp_macro.v0.17.0  (cached)
-> retrieved sexp_pretty.v0.17.0  (cached)
-> retrieved sexp_select.v0.17.0  (cached)
-> retrieved ppxlib.0.35.0  (cached)
-> retrieved sexplib.v0.17.0  (cached)
-> retrieved sexplib0.v0.17.0  (cached)
-> retrieved shell.v0.17.0  (cached)
-> retrieved spawn.v0.17.0  (cached)
-> retrieved splittable_random.v0.17.0  (cached)
-> retrieved stdio.v0.17.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved textutils.v0.17.0  (cached)
-> retrieved time_now.v0.17.0  (cached)
-> retrieved timezone.v0.17.0  (cached)
-> retrieved typerep.v0.17.1  (cached)
-> retrieved uopt.v0.17.0  (cached)
-> retrieved variantslib.v0.17.0  (cached)
-> retrieved topkg.1.1.1  (cached)
-> retrieved uutf.1.0.4  (cached)
-> installed ocamlbuild.0.16.1
-> installed ocamlfind.1.9.8
-> installed topkg.1.1.1
-> installed uutf.1.0.4
-> installed fmt.0.11.0
-> installed dune.3.20.2
-> installed jane-street-headers.v0.17.0
-> installed ppx_derivers.1.2.1
-> installed csexp.1.5.2
-> installed cstruct.6.2.0
-> installed ocaml-compiler-libs.v0.17.0
-> installed ocaml-syntax-shims.1.0.0
-> installed ocaml_intrinsics_kernel.v0.17.1
-> installed re.1.14.0
-> installed sexplib0.v0.17.0
-> installed spawn.v0.17.0
-> installed stdlib-shims.0.3.0
-> installed parsexp.v0.17.0
-> installed dune-configurator.3.20.2
-> installed bigstringaf.0.10.0
-> installed sexplib.v0.17.0
-> installed faraday.0.8.2
-> installed angstrom.0.16.1
-> installed base.v0.17.3
-> installed fieldslib.v0.17.0
-> installed variantslib.v0.17.0
-> installed regex_parser_intf.v0.17.0
-> installed stdio.v0.17.0
-> installed typerep.v0.17.1
-> installed ppxlib.0.35.0
-> installed ppxlib_jane.v0.17.0
-> installed ppx_optcomp.v0.17.0
-> installed ppx_cold.v0.17.0
-> installed ppx_disable_unused_warnings.v0.17.0
-> installed ppx_here.v0.17.0
-> installed ppx_stable_witness.v0.17.0
-> installed ppx_tydi.v0.17.0
-> installed ppx_typerep_conv.v0.17.0
-> installed ppx_variants_conv.v0.17.0
-> installed ppx_fields_conv.v0.17.0
-> installed ppx_stable.v0.17.0
-> installed ppx_pipebang.v0.17.0
-> installed ppx_ignore_instrumentation.v0.17.0
-> installed ppx_fixed_literal.v0.17.0
-> installed ppx_enumerate.v0.17.0
-> installed ppx_globalize.v0.17.0
-> installed ppx_compare.v0.17.0
-> installed ppx_optional.v0.17.0
-> installed ppx_sexp_conv.v0.17.0
-> installed ppx_let.v0.17.0
-> installed ppx_hash.v0.17.0
-> installed ppx_assert.v0.17.0
-> installed ppx_sexp_value.v0.17.0
-> installed ppx_sexp_message.v0.17.0
-> installed ppx_custom_printf.v0.17.0
-> installed ppx_base.v0.17.0
-> installed capitalization.v0.17.0
-> installed jst-config.v0.17.0
-> installed sexp_pretty.v0.17.0
-> installed bin_prot.v0.17.0-1
-> installed ppx_string.v0.17.0
-> installed time_now.v0.17.0
-> installed ppx_bin_prot.v0.17.0
-> installed ppx_string_conv.v0.17.0
-> installed ppx_module_timer.v0.17.0
-> installed ppx_inline_test.v0.17.0
-> installed ppx_bench.v0.17.0
-> installed ppx_expect.v0.17.2
-> installed splittable_random.v0.17.0
-> installed base_quickcheck.v0.17.0
-> installed ppx_log.v0.17.0
-> installed ppx_jane.v0.17.0
-> installed gel.v0.17.0
-> installed uopt.v0.17.0
-> installed jane_rope.v0.17.0
-> installed jsonaf.v0.17.0
-> installed int_repr.v0.17.0
-> installed base_bigstring.v0.17.0
-> installed ppx_diff.v0.17.0
-> installed core.v0.17.1
-> installed csvfields.v0.17.0
-> installed sexp_diff.v0.17.0
-> installed protocol_version_header.v0.17.0
-> installed expect_test_helpers_core.v0.17.0
-> installed timezone.v0.17.0
-> installed core_kernel.v0.17.0
-> installed sexp_select.v0.17.0
-> installed async_kernel.v0.17.0
-> installed core_unix.v0.17.1
-> installed textutils.v0.17.0
-> installed async_rpc_kernel.v0.17.0
-> installed shell.v0.17.0
-> installed async_unix.v0.17.0
-> installed async_log.v0.17.0
-> installed async.v0.17.0
-> installed sexp_macro.v0.17.0
-> installed re2.v0.17.0
-> installed sexp.v0.17.0
Done.
# To update the current shell environment, run: eval $(opam env)
/
2025-12-29 15:46.37 ---> using "bc7669dd5d84a58447ad6a3d1d7008d73b2b93a4c67dc1e7fac77df9c973eb86" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell  "PLACE=$(mktemp -d) && cd $PLACE && echo '(lang dune 3.17)\
               \n(package\
               \n  (name dummy)\
               \n  (allow_empty true)\
               \n  (depends (ocaml (= 5.3.0))))' > dune-project && PATH=$HOME/.local/bin:$PATH dune pkg lock && PATH=$HOME/.local/bin:$PATH dune build"))
Solution for dune.lock

Dependencies common to all supported platforms:
- ocaml.5.3.0
- ocaml-base-compiler.5.3.0
- ocaml-compiler.5.3.0
- ocaml-config.3
2025-12-29 15:46.37 ---> using "9bcabb8795dcd26a81fdac926e310bcc5d29ecbfe856c8b3cc8b0b04ed84d512" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)) (opam-dune-cache (target /home/opam/.cache/dune)))
        (network host)
        (shell  "cd $HOME && opam source lichess_api.1.0.1 && cd lichess_api.1.0.1 && if [ -f opam ]; then mv opam lichess_api.opam; fi && echo lichess_api >> /tmp/packages-in-repo && for opam in *.opam; do echo ${opam%.opam} >> /tmp/packages-in-repo; done && sed -n 's/(name \\(.*\\))/\\1/p' < dune-project | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' >> /tmp/packages-in-repo && while read package ; do opam show --raw ${package}.1.0.1 > ${package}.opam; done < /tmp/packages-in-repo && opam install --dry-run --with-test ./lichess_api.opam | sed -nE 's/(.*)- install ([^[:blank:]]*)(.*)/\\2/p' > /tmp/packages-via-opam && for opam in *.opam; do rm $opam; echo ${opam%.opam} >> /tmp/packages-locally-available; done && opam show --raw lichess_api.1.0.1 > lichess_api.opam && /tmp/sexp/_opam/bin/sexp change '(try (rewrite (package @X) OPAM-HEALTH-CHECK-DROP))' < dune-project | grep -v OPAM-HEALTH-CHECK-DROP > dune-project-no-pkg && mv dune-project dune-project-pkg && mv dune-project-no-pkg dune-project && echo '(lang dune 3.17)\
               \n(lock_dir\
               \n (repositories overlay  default))\
               \n\
               \n(repository\
               \n (name default)\
               \n (url \"file:///home/opam/opam-repository\"))\
               \n\
               \n\
               \n' > dune-workspace && echo lichess_api >> /tmp/packages-to-build && while read package ; do if grep --quiet \"^${package}\\$\" /tmp/packages-via-opam ; then echo $package >> /tmp/packages-to-build ; fi ; done < /tmp/packages-locally-available && while read package ; do opam show --raw $package > $package.opam; done < /tmp/packages-to-build && while read package ; do if [ ! -f ${package}.opam ]; then echo \"opam-version: \\\"2.0\\\"\" > ${package}.opam; fi; done < /tmp/packages-locally-available && paste -s -d , /tmp/packages-to-build > /tmp/packages-for-dune && export DUNE_CONFIG__PORTABLE_LOCK_DIR=disabled && PATH=$HOME/.local/bin:$PATH dune pkg lock || (echo \"opam-health-check: Solve failed\" && exit 1)  && PATH=$HOME/.local/bin:$PATH dune show depexts 2> /tmp/depexts-from-dune && paste -s -d \" \" /tmp/depexts-from-dune > /tmp/depexts-for-apt && sudo apt-get install -y $(cat /tmp/depexts-for-apt) && grep -v dependency_hash dune.lock/lock.dune > /tmp/lock.dune && mv /tmp/lock.dune dune.lock/lock.dune && mv dune-project-pkg dune-project && PATH=$HOME/.local/bin:$PATH dune build --release --only-packages $(cat /tmp/packages-for-dune) || (echo \"opam-health-check: Build failed\" && exit 1)"))
Successfully extracted to /home/opam/lichess_api.1.0.1
Solution for dune.lock:
- angstrom.0.16.1
- asn1-combinators.0.3.2
- astring.0.8.5
- base.v0.17.3
- base-bytes.base
- base-threads.base
- base-unix.base
- base64.3.5.2
- bigstringaf.0.10.0
- bos.0.2.1
- ca-certs.1.0.1
- cmdliner.2.1.0
- cohttp.6.2.1
- cohttp-lwt.6.2.1
- cohttp-lwt-unix.6.2.1
- conduit.8.0.0
- conduit-lwt.8.0.0
- conduit-lwt-unix.8.0.0
- conf-gmp.5
- conf-gmp-powm-sec.4
- conf-pkg-config.4
- cppo.1.8.0
- csexp.1.5.2
- digestif.1.3.0
- domain-name.0.5.0
- dune-configurator.3.20.2
- duration.0.2.1
- eqaf.0.10
- fmt.0.11.0
- fpath.0.7.3
- gmap.0.3.0
- http.6.2.1
- ipaddr.5.6.1
- ipaddr-sexp.5.6.1
- kdf.1.0.0
- logs.0.10.0
- lwt.5.9.2
- lwt_ppx.5.9.2
- macaddr.5.6.1
- magic-mime.1.3.1
- mirage-crypto.2.0.2
- mirage-crypto-ec.2.0.2
- mirage-crypto-pk.2.0.2
- mirage-crypto-rng.2.0.2
- 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-syntax-shims.1.0.0
- ocaml_intrinsics_kernel.v0.17.1
- ocamlbuild.0.16.1+dune
- ocamlfind.1.9.8+dune
- ocplib-endian.1.2
- ohex.0.2.0
- ounit2.2.2.7
- ppx_derivers.1.2.1
- ppx_sexp_conv.v0.17.1
- ppxlib.0.37.0
- ppxlib_jane.v0.17.4
- ptime.1.2.0
- qcheck.0.91
- qcheck-core.0.91
- qcheck-ounit.0.91
- re.1.14.0
- rresult.0.7.0
- seq.base
- sexplib0.v0.17.0
- stdlib-shims.0.3.0
- stringext.1.6.0
- topkg.1.1.1
- uri.4.4.0
- uri-sexp.4.4.0
- x509.1.0.6
- yojson.3.0.0
- zarith.1.14
Reading package lists...
Building dependency tree...
Reading state information...
Solving dependencies...
The following additional packages will be installed:
  libgmpxx4ldbl libpkgconf3 pkgconf pkgconf-bin
Suggested packages:
  gmp-doc libgmp10-doc libmpfr-dev
The following NEW packages will be installed:
  libgmp-dev libgmpxx4ldbl libpkgconf3 pkg-config pkgconf pkgconf-bin
0 upgraded, 6 newly installed, 0 to remove and 5 not upgraded.
Need to get 1095 kB of archives.
After this operation, 2746 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-5 [330 kB]
Get:2 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-5 [658 kB]
Get:3 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB]
Get:4 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB]
Get:5 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB]
Get:6 http://deb.debian.org/debian unstable/main amd64 pkg-config amd64 1.8.1-4 [14.0 kB]
Fetched 1095 kB in 0s (28.2 MB/s)
Selecting previously unselected package libgmpxx4ldbl: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 ... 20808 files and directories currently installed.)
Preparing to unpack .../0-libgmpxx4ldbl_2%3a6.3.0+dfsg-5_amd64.deb ...
Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-5) ...
Selecting previously unselected package libgmp-dev:amd64.
Preparing to unpack .../1-libgmp-dev_2%3a6.3.0+dfsg-5_amd64.deb ...
Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-5) ...
Selecting previously unselected package libpkgconf3:amd64.
Preparing to unpack .../2-libpkgconf3_1.8.1-4_amd64.deb ...
Unpacking libpkgconf3:amd64 (1.8.1-4) ...
Selecting previously unselected package pkgconf-bin.
Preparing to unpack .../3-pkgconf-bin_1.8.1-4_amd64.deb ...
Unpacking pkgconf-bin (1.8.1-4) ...
Selecting previously unselected package pkgconf:amd64.
Preparing to unpack .../4-pkgconf_1.8.1-4_amd64.deb ...
Unpacking pkgconf:amd64 (1.8.1-4) ...
Selecting previously unselected package pkg-config:amd64.
Preparing to unpack .../5-pkg-config_1.8.1-4_amd64.deb ...
Unpacking pkg-config:amd64 (1.8.1-4) ...
Setting up libpkgconf3:amd64 (1.8.1-4) ...
Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-5) ...
Setting up pkgconf-bin (1.8.1-4) ...
Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-5) ...
Setting up pkgconf:amd64 (1.8.1-4) ...
Setting up pkg-config:amd64 (1.8.1-4) ...
Processing triggers for libc-bin (2.42-6) ...
(cd _build/default && /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/bin/ocamlc.opt -w -40 -warn-error -A -g -bin-annot -bin-annot-occurrences -I lib/.lichess_api.objs/byte -I /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/lib/ocaml/threads -I /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/lib/ocaml/unix -I ../_private/default/.pkg/angstrom.0.16.1-3bb365e4543470e357769bcd12b60b1c/target/lib/angstrom -I ../_private/default/.pkg/astring.0.8.5-6978cdf0b8f5af6da19c149a4dc4dc1a/target/lib/astring -I ../_private/default/.pkg/base64.3.5.2-624981322f5c30f8e622942bbaefe1fb/target/lib/base64 -I ../_private/default/.pkg/bigstringaf.0.10.0-aff0159e57e528e6038f820b6baa1feb/target/lib/bigstringaf -I ../_private/default/.pkg/cohttp-lwt-unix.6.2.1-c06aeb6b8bb11e644efa3da0f331659b/target/lib/cohttp-lwt-unix -I ../_private/default/.pkg/cohttp-lwt.6.2.1-405342364de59cba3f3801553a848d21/target/lib/cohttp-lwt -I ../_private/default/.pkg/cohttp.6.2.1-fb5aff9a9f814de5a503705d39891aa5/target/lib/cohttp -I ../_private/default/.pkg/conduit-lwt-unix.8.0.0-06d814cd401d1a51dd3f8c577fbbef1e/target/lib/conduit-lwt-unix -I ../_private/default/.pkg/conduit-lwt.8.0.0-793dae4517af7ca55df354114e3a493b/target/lib/conduit-lwt -I ../_private/default/.pkg/conduit.8.0.0-f04268f2b7e05a7f04a552d48ef00d25/target/lib/conduit -I ../_private/default/.pkg/domain-name.0.5.0-28f54473365c2ec78dd79f39232e689a/target/lib/domain-name -I ../_private/default/.pkg/fmt.0.11.0-41ae524a3e9f09c13ec5ee6f9133b88d/target/lib/fmt -I ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http -H ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http/__private__/http_bytebuffer -H ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http/__private__/http_bytebuffer/.public_cmi -I ../_private/default/.pkg/ipaddr-sexp.5.6.1-0a0ab4dcf3a931316e7285a5ee9a7aa7/target/lib/ipaddr-sexp -I ../_private/default/.pkg/ipaddr.5.6.1-8835cb39435971b907cca42566965e1c/target/lib/ipaddr -I ../_private/default/.pkg/ipaddr.5.6.1-8835cb39435971b907cca42566965e1c/target/lib/ipaddr/unix -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs/fmt -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs/lwt -I ../_private/default/.pkg/lwt.5.9.2-c7039c032642398ca983a9ca4a2cba0b/target/lib/lwt -I ../_private/default/.pkg/lwt.5.9.2-c7039c032642398ca983a9ca4a2cba0b/target/lib/lwt/unix -I ../_private/default/.pkg/macaddr.5.6.1-41e22937ce1eb4e00225212c0ea20831/target/lib/macaddr -I ../_private/default/.pkg/magic-mime.1.3.1-535df2b2de7e3b9f8366ceda57288e0a/target/lib/magic-mime -I ../_private/default/.pkg/ocamlfind.1.9.8+dune-b49b15a0050f4541f1d306d32a5105de/target/lib/bytes -I ../_private/default/.pkg/ocplib-endian.1.2-759aaafbd936f58978ff458228e135dd/target/lib/ocplib-endian -I ../_private/default/.pkg/ocplib-endian.1.2-759aaafbd936f58978ff458228e135dd/target/lib/ocplib-endian/bigstring -I ../_private/default/.pkg/ppx_sexp_conv.v0.17.1-59e7f9155c0cfdbeb7f5bddd3d7c1110/target/lib/ppx_sexp_conv/runtime-lib -I ../_private/default/.pkg/re.1.14.0-22b95923d43cd86a7538cc733ef6d90a/target/lib/re -I ../_private/default/.pkg/sexplib0.v0.17.0-08ac41df0652ce16618496764327ee18/target/lib/sexplib0 -I ../_private/default/.pkg/stringext.1.6.0-f0190b784ae190c6806cb8ffb1ad2f2c/target/lib/stringext -I ../_private/default/.pkg/uri-sexp.4.4.0-c96929153ed66ccb182c7747d0cefe1b/target/lib/uri-sexp -I ../_private/default/.pkg/uri.4.4.0-b82cc6548e4e61b3e6deabf18ef41704/target/lib/uri -I ../_private/default/.pkg/uri.4.4.0-b82cc6548e4e61b3e6deabf18ef41704/target/lib/uri/services -I ../_private/default/.pkg/yojson.3.0.0-75b0efcdaaba1110151db17c7c646138/target/lib/yojson -cmi-file lib/.lichess_api.objs/byte/lichess_api.cmi -no-alias-deps -o lib/.lichess_api.objs/byte/lichess_api.cmo -c -impl lib/lichess_api.ml)
File "lib/lichess_api.ml", lines 336-339, characters 33-29:
336 | .................................match List.assoc_opt "white" fields with 
337 |              | Some (`Assoc white_fields) ->
338 |                  match List.assoc_opt "name" white_fields with Some (`String s) -> s | _ -> "Unknown"
339 |              | _ -> "Unknown"...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 340-343, characters 23-29:
340 | .......................match List.assoc_opt "black" fields with 
341 |              | Some (`Assoc black_fields) ->
342 |                  match List.assoc_opt "name" black_fields with Some (`String s) -> s | _ -> "Unknown"
343 |              | _ -> "Unknown"...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 346-350, characters 40-24:
346 | ........................................match List.assoc_opt "clock" fields with 
347 |              | Some (`Assoc clock_fields) ->
348 |                  match List.assoc_opt "initial" clock_fields with Some (`Int i) -> Some (string_of_int i)
349 |                  | _ -> None
350 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 351-354, characters 30-24:
351 | ..............................match List.assoc_opt "white" fields with 
352 |              | Some (`Assoc white_fields) ->
353 |                  match List.assoc_opt "rating" white_fields with Some (`Int i) -> Some i | _ -> None
354 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 355-358, characters 30-24:
355 | ..............................match List.assoc_opt "black" fields with 
356 |              | Some (`Assoc black_fields) ->
357 |                  match List.assoc_opt "rating" black_fields with Some (`Int i) -> Some i | _ -> None
358 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 511-514, characters 43-23:
511 | ...........................................match List.assoc_opt "count" fields with 
512 |                | Some (`Assoc count_fields) ->
513 |                    match List.assoc_opt "all" count_fields with Some (`Int i) -> i | _ -> 0
514 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 516-519, characters 24-23:
516 | ........................match List.assoc_opt "count" fields with 
517 |                | Some (`Assoc count_fields) ->
518 |                    match List.assoc_opt "win" count_fields with Some (`Int i) -> i | _ -> 0
519 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 521-524, characters 26-23:
521 | ..........................match List.assoc_opt "count" fields with 
522 |                | Some (`Assoc count_fields) ->
523 |                    match List.assoc_opt "loss" count_fields with Some (`Int i) -> i | _ -> 0
524 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 526-529, characters 25-23:
526 | .........................match List.assoc_opt "count" fields with 
527 |                | Some (`Assoc count_fields) ->
528 |                    match List.assoc_opt "draw" count_fields with Some (`Int i) -> i | _ -> 0
529 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 535-544, characters 19-26:
535 | ...................match List.assoc_opt "classical" perfs_fields with 
536 |                      | Some (`Assoc classical_fields) ->
537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
538 |                            if games > 0 then
539 |                              match List.assoc_opt "rating" classical_fields with Some (`Int rating) -> rating
540 |                              | _ -> 1500
541 |                            else 1500
542 |                          | _ -> 1500
543 |                      | _ -> 1500
544 |                | _ -> 1500...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 533-544, characters 46-26:
533 | ..............................................match List.assoc_opt "perfs" fields with 
534 |                | Some (`Assoc perfs_fields) ->
535 |                    match List.assoc_opt "classical" perfs_fields with 
536 |                      | Some (`Assoc classical_fields) ->
537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
...
541 |                            else 1500
542 |                          | _ -> 1500
543 |                      | _ -> 1500
544 |                | _ -> 1500...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 550-556, characters 25-36:
550 | .........................match List.assoc_opt "best" classical_fields with 
551 |                            | Some (`Assoc best_fields) ->
552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 548-556, characters 19-36:
548 | ...................match List.assoc_opt "classical" perfs_fields with 
549 |                      | Some (`Assoc classical_fields) ->
550 |                          match List.assoc_opt "best" classical_fields with 
551 |                            | Some (`Assoc best_fields) ->
552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 546-556, characters 31-36:
546 | ...............................match List.assoc_opt "perfs" fields with 
547 |                | Some (`Assoc perfs_fields) ->
548 |                    match List.assoc_opt "classical" perfs_fields with 
549 |                      | Some (`Assoc classical_fields) ->
550 |                          match List.assoc_opt "best" classical_fields with 
...
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", line 573, characters 4-5:
573 |   | _ ->
          ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", lines 505-574, characters 2-21:
505 | ..match Cohttp.Response.status response with
506 |   | `OK ->
507 |       try
508 |         let json = Yojson.Basic.from_string body_str in
509 |         match json with
...
571 |         | _ -> Lwt.return_none
572 |       with _ -> Lwt.return_none
573 |   | _ ->
574 |       Lwt.return_none
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    (`Length_required|`Loop_detected|`Unprocessable_entity|
    `Method_not_allowed|`Upgrade_required|`Unauthorized|`Gone|`Switch_proxy|
    `See_other|`Not_acceptable|`Payment_required|`Temporary_redirect|
    `Not_modified|`Permanent_redirect|`Retry_with|`Precondition_failed|
    `Code _|`Reset_content|`Non_authoritative_information|`Already_reported|
    `Multi_status|`Wrong_exchange_server|`Too_many_requests|`No_response|
    `Request_uri_too_long|`Forbidden|`Network_authentication_required|
    `Created|`Bandwidth_limit_exceeded|`Checkpoint|`Accepted|`No_content|
    `Multiple_choices|`Service_unavailable|`Proxy_authentication_required|
    `Client_closed_request|`Locked|`Not_extended|`Precondition_required|
    `Gateway_timeout|`Requested_range_not_satisfiable|`Expectation_failed|
    `Unsupported_media_type|`Request_header_fields_too_large|`Continue|
    `Processing|`Partial_content|`Http_version_not_supported|
    `Request_timeout|`Network_connect_timeout_error|
    `Request_entity_too_large|`Not_found|`Switching_protocols|
    `Internal_server_error|`Bad_gateway|`Found|`Variant_also_negotiates|
    `Blocked_by_windows_parental_controls|`Enhance_your_calm|`Use_proxy|
    `Network_read_timeout_error|`Moved_permanently|`Conflict|`Bad_request|
    `Not_implemented|`I_m_a_teapot|`Im_used|`Insufficient_storage|
    `Failed_dependency)

File "lib/lichess_api.ml", line 339, characters 15-16:
339 |              | _ -> "Unknown" in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 343, characters 15-16:
343 |              | _ -> "Unknown" in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 350, characters 15-16:
350 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 354, characters 15-16:
354 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 358, characters 15-16:
358 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 514, characters 17-18:
514 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 519, characters 17-18:
519 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 524, characters 17-18:
524 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 529, characters 17-18:
529 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 543, characters 23-24:
543 |                      | _ -> 1500
                             ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 544, characters 17-18:
544 |                | _ -> 1500 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 554, characters 29-30:
554 |                            | _ -> current_rating
                                   ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 555, characters 23-24:
555 |                      | _ -> current_rating
                             ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 556, characters 17-18:
556 |                | _ -> current_rating in
                       ^
Warning 11 [redundant-case]: this match case is unused.
(cd _build/default && /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/bin/ocamlopt.opt -w -40 -warn-error -A -g -I lib/.lichess_api.objs/byte -I lib/.lichess_api.objs/native -I /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/lib/ocaml/threads -I /home/opam/.cache/dune/toolchains/ocaml-compiler.5.4.0-ab1bec68ab3ec3d71e1fae73e730464a/target/lib/ocaml/unix -I ../_private/default/.pkg/angstrom.0.16.1-3bb365e4543470e357769bcd12b60b1c/target/lib/angstrom -I ../_private/default/.pkg/astring.0.8.5-6978cdf0b8f5af6da19c149a4dc4dc1a/target/lib/astring -I ../_private/default/.pkg/base64.3.5.2-624981322f5c30f8e622942bbaefe1fb/target/lib/base64 -I ../_private/default/.pkg/bigstringaf.0.10.0-aff0159e57e528e6038f820b6baa1feb/target/lib/bigstringaf -I ../_private/default/.pkg/cohttp-lwt-unix.6.2.1-c06aeb6b8bb11e644efa3da0f331659b/target/lib/cohttp-lwt-unix -I ../_private/default/.pkg/cohttp-lwt.6.2.1-405342364de59cba3f3801553a848d21/target/lib/cohttp-lwt -I ../_private/default/.pkg/cohttp.6.2.1-fb5aff9a9f814de5a503705d39891aa5/target/lib/cohttp -I ../_private/default/.pkg/conduit-lwt-unix.8.0.0-06d814cd401d1a51dd3f8c577fbbef1e/target/lib/conduit-lwt-unix -I ../_private/default/.pkg/conduit-lwt.8.0.0-793dae4517af7ca55df354114e3a493b/target/lib/conduit-lwt -I ../_private/default/.pkg/conduit.8.0.0-f04268f2b7e05a7f04a552d48ef00d25/target/lib/conduit -I ../_private/default/.pkg/domain-name.0.5.0-28f54473365c2ec78dd79f39232e689a/target/lib/domain-name -I ../_private/default/.pkg/fmt.0.11.0-41ae524a3e9f09c13ec5ee6f9133b88d/target/lib/fmt -I ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http -I ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http/__private__/http_bytebuffer -H ../_private/default/.pkg/http.6.2.1-7e71dfd51a24fa361646a9d1ac937502/target/lib/http/__private__/http_bytebuffer/.public_cmi -I ../_private/default/.pkg/ipaddr-sexp.5.6.1-0a0ab4dcf3a931316e7285a5ee9a7aa7/target/lib/ipaddr-sexp -I ../_private/default/.pkg/ipaddr.5.6.1-8835cb39435971b907cca42566965e1c/target/lib/ipaddr -I ../_private/default/.pkg/ipaddr.5.6.1-8835cb39435971b907cca42566965e1c/target/lib/ipaddr/unix -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs/fmt -I ../_private/default/.pkg/logs.0.10.0-e7e13694bbcb6885d0e2d0cf79732c75/target/lib/logs/lwt -I ../_private/default/.pkg/lwt.5.9.2-c7039c032642398ca983a9ca4a2cba0b/target/lib/lwt -I ../_private/default/.pkg/lwt.5.9.2-c7039c032642398ca983a9ca4a2cba0b/target/lib/lwt/unix -I ../_private/default/.pkg/macaddr.5.6.1-41e22937ce1eb4e00225212c0ea20831/target/lib/macaddr -I ../_private/default/.pkg/magic-mime.1.3.1-535df2b2de7e3b9f8366ceda57288e0a/target/lib/magic-mime -I ../_private/default/.pkg/ocamlfind.1.9.8+dune-b49b15a0050f4541f1d306d32a5105de/target/lib/bytes -I ../_private/default/.pkg/ocplib-endian.1.2-759aaafbd936f58978ff458228e135dd/target/lib/ocplib-endian -I ../_private/default/.pkg/ocplib-endian.1.2-759aaafbd936f58978ff458228e135dd/target/lib/ocplib-endian/bigstring -I ../_private/default/.pkg/ppx_sexp_conv.v0.17.1-59e7f9155c0cfdbeb7f5bddd3d7c1110/target/lib/ppx_sexp_conv/runtime-lib -I ../_private/default/.pkg/re.1.14.0-22b95923d43cd86a7538cc733ef6d90a/target/lib/re -I ../_private/default/.pkg/sexplib0.v0.17.0-08ac41df0652ce16618496764327ee18/target/lib/sexplib0 -I ../_private/default/.pkg/stringext.1.6.0-f0190b784ae190c6806cb8ffb1ad2f2c/target/lib/stringext -I ../_private/default/.pkg/uri-sexp.4.4.0-c96929153ed66ccb182c7747d0cefe1b/target/lib/uri-sexp -I ../_private/default/.pkg/uri.4.4.0-b82cc6548e4e61b3e6deabf18ef41704/target/lib/uri -I ../_private/default/.pkg/uri.4.4.0-b82cc6548e4e61b3e6deabf18ef41704/target/lib/uri/services -I ../_private/default/.pkg/yojson.3.0.0-75b0efcdaaba1110151db17c7c646138/target/lib/yojson -cmi-file lib/.lichess_api.objs/byte/lichess_api.cmi -no-alias-deps -o lib/.lichess_api.objs/native/lichess_api.cmx -c -impl lib/lichess_api.ml)
File "lib/lichess_api.ml", lines 336-339, characters 33-29:
336 | .................................match List.assoc_opt "white" fields with 
337 |              | Some (`Assoc white_fields) ->
338 |                  match List.assoc_opt "name" white_fields with Some (`String s) -> s | _ -> "Unknown"
339 |              | _ -> "Unknown"...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 340-343, characters 23-29:
340 | .......................match List.assoc_opt "black" fields with 
341 |              | Some (`Assoc black_fields) ->
342 |                  match List.assoc_opt "name" black_fields with Some (`String s) -> s | _ -> "Unknown"
343 |              | _ -> "Unknown"...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 346-350, characters 40-24:
346 | ........................................match List.assoc_opt "clock" fields with 
347 |              | Some (`Assoc clock_fields) ->
348 |                  match List.assoc_opt "initial" clock_fields with Some (`Int i) -> Some (string_of_int i)
349 |                  | _ -> None
350 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 351-354, characters 30-24:
351 | ..............................match List.assoc_opt "white" fields with 
352 |              | Some (`Assoc white_fields) ->
353 |                  match List.assoc_opt "rating" white_fields with Some (`Int i) -> Some i | _ -> None
354 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 355-358, characters 30-24:
355 | ..............................match List.assoc_opt "black" fields with 
356 |              | Some (`Assoc black_fields) ->
357 |                  match List.assoc_opt "rating" black_fields with Some (`Int i) -> Some i | _ -> None
358 |              | _ -> None...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 511-514, characters 43-23:
511 | ...........................................match List.assoc_opt "count" fields with 
512 |                | Some (`Assoc count_fields) ->
513 |                    match List.assoc_opt "all" count_fields with Some (`Int i) -> i | _ -> 0
514 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 516-519, characters 24-23:
516 | ........................match List.assoc_opt "count" fields with 
517 |                | Some (`Assoc count_fields) ->
518 |                    match List.assoc_opt "win" count_fields with Some (`Int i) -> i | _ -> 0
519 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 521-524, characters 26-23:
521 | ..........................match List.assoc_opt "count" fields with 
522 |                | Some (`Assoc count_fields) ->
523 |                    match List.assoc_opt "loss" count_fields with Some (`Int i) -> i | _ -> 0
524 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 526-529, characters 25-23:
526 | .........................match List.assoc_opt "count" fields with 
527 |                | Some (`Assoc count_fields) ->
528 |                    match List.assoc_opt "draw" count_fields with Some (`Int i) -> i | _ -> 0
529 |                | _ -> 0...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 535-544, characters 19-26:
535 | ...................match List.assoc_opt "classical" perfs_fields with 
536 |                      | Some (`Assoc classical_fields) ->
537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
538 |                            if games > 0 then
539 |                              match List.assoc_opt "rating" classical_fields with Some (`Int rating) -> rating
540 |                              | _ -> 1500
541 |                            else 1500
542 |                          | _ -> 1500
543 |                      | _ -> 1500
544 |                | _ -> 1500...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 533-544, characters 46-26:
533 | ..............................................match List.assoc_opt "perfs" fields with 
534 |                | Some (`Assoc perfs_fields) ->
535 |                    match List.assoc_opt "classical" perfs_fields with 
536 |                      | Some (`Assoc classical_fields) ->
537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
...
541 |                            else 1500
542 |                          | _ -> 1500
543 |                      | _ -> 1500
544 |                | _ -> 1500...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 550-556, characters 25-36:
550 | .........................match List.assoc_opt "best" classical_fields with 
551 |                            | Some (`Assoc best_fields) ->
552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 548-556, characters 19-36:
548 | ...................match List.assoc_opt "classical" perfs_fields with 
549 |                      | Some (`Assoc classical_fields) ->
550 |                          match List.assoc_opt "best" classical_fields with 
551 |                            | Some (`Assoc best_fields) ->
552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", lines 546-556, characters 31-36:
546 | ...............................match List.assoc_opt "perfs" fields with 
547 |                | Some (`Assoc perfs_fields) ->
548 |                    match List.assoc_opt "classical" perfs_fields with 
549 |                      | Some (`Assoc classical_fields) ->
550 |                          match List.assoc_opt "best" classical_fields with 
...
553 |                                | _ -> current_rating
554 |                            | _ -> current_rating
555 |                      | _ -> current_rating
556 |                | _ -> current_rating...
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)

File "lib/lichess_api.ml", line 573, characters 4-5:
573 |   | _ ->
          ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", lines 505-574, characters 2-21:
505 | ..match Cohttp.Response.status response with
506 |   | `OK ->
507 |       try
508 |         let json = Yojson.Basic.from_string body_str in
509 |         match json with
...
571 |         | _ -> Lwt.return_none
572 |       with _ -> Lwt.return_none
573 |   | _ ->
574 |       Lwt.return_none
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
  Here is an example of a case that is not matched:
    (`Length_required|`Loop_detected|`Unprocessable_entity|
    `Method_not_allowed|`Upgrade_required|`Unauthorized|`Gone|`Switch_proxy|
    `See_other|`Not_acceptable|`Payment_required|`Temporary_redirect|
    `Not_modified|`Permanent_redirect|`Retry_with|`Precondition_failed|
    `Code _|`Reset_content|`Non_authoritative_information|`Already_reported|
    `Multi_status|`Wrong_exchange_server|`Too_many_requests|`No_response|
    `Request_uri_too_long|`Forbidden|`Network_authentication_required|
    `Created|`Bandwidth_limit_exceeded|`Checkpoint|`Accepted|`No_content|
    `Multiple_choices|`Service_unavailable|`Proxy_authentication_required|
    `Client_closed_request|`Locked|`Not_extended|`Precondition_required|
    `Gateway_timeout|`Requested_range_not_satisfiable|`Expectation_failed|
    `Unsupported_media_type|`Request_header_fields_too_large|`Continue|
    `Processing|`Partial_content|`Http_version_not_supported|
    `Request_timeout|`Network_connect_timeout_error|
    `Request_entity_too_large|`Not_found|`Switching_protocols|
    `Internal_server_error|`Bad_gateway|`Found|`Variant_also_negotiates|
    `Blocked_by_windows_parental_controls|`Enhance_your_calm|`Use_proxy|
    `Network_read_timeout_error|`Moved_permanently|`Conflict|`Bad_request|
    `Not_implemented|`I_m_a_teapot|`Im_used|`Insufficient_storage|
    `Failed_dependency)

File "lib/lichess_api.ml", line 339, characters 15-16:
339 |              | _ -> "Unknown" in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 343, characters 15-16:
343 |              | _ -> "Unknown" in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 350, characters 15-16:
350 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 354, characters 15-16:
354 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 358, characters 15-16:
358 |              | _ -> None in
                     ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 514, characters 17-18:
514 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 519, characters 17-18:
519 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 524, characters 17-18:
524 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 529, characters 17-18:
529 |                | _ -> 0 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 543, characters 23-24:
543 |                      | _ -> 1500
                             ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 544, characters 17-18:
544 |                | _ -> 1500 in
                       ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 554, characters 29-30:
554 |                            | _ -> current_rating
                                   ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 555, characters 23-24:
555 |                      | _ -> current_rating
                             ^
Warning 11 [redundant-case]: this match case is unused.

File "lib/lichess_api.ml", line 556, characters 17-18:
556 |                | _ -> current_rating in
                       ^
Warning 11 [redundant-case]: this match case is unused.
2025-12-29 15:49.31 ---> saved as "4685f3e113035f5e767051c7fae36e6d34734d65bf2475d4ce6f1daf93ae9660"
Job succeeded