Organisationsrobur-coophttpcats06c8c3 ()(lint-fmt)

(lint-fmt)

Logs

Show full logs
2025-11-24 17:30.40: New job: test robur-coop/httpcats https://github.com/robur-coop/httpcats.git#refs/heads/upgrade-distrib (06c8c363279ce227d9f87fe9c7d9101f6c66d33a) (linux-x86_64:(lint-fmt))
Base: ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321
ocamlformat version: version 0.28.1 (from opam)

To reproduce locally:

git clone --recursive "https://github.com/robur-coop/httpcats.git" -b "upgrade-distrib" && cd "httpcats" && git reset --hard 06c8c363
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321
USER 1000:1000
RUN cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -u
RUN opam depext -i dune
WORKDIR /src
RUN opam depext -i ocamlformat=0.28.1
COPY --chown=1000:1000 . /src/
RUN opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)

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

2025-11-24 17:30.40: Using cache hint "robur-coop/httpcats-ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321-debian-13-4.08_opam-2.4-ocamlformat-6c1b38620288b5bf349067f089a7b1fc91185d94"
2025-11-24 17:30.40: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321)
 (user (uid 1000) (gid 1000))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -u"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "opam depext -i dune"))
 (workdir /src)
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell "opam depext -i ocamlformat=0.28.1"))
 (copy (src .) (dst /src/))
 (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
)

2025-11-24 17:30.40: Waiting for resource in pool OCluster
2025-11-24 17:30.40: Waiting for worker…
2025-11-24 17:30.40: Got resource from pool OCluster
Building on clete
HEAD is now at 857acfc Replace 127.0.0.1 to localhost
HEAD is now at 06c8c36 Set the domain-name of the certificate to localhost

(from ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321)
2025-11-24 17:30.41 ---> using "d458486dd7823c592e7ea9c88366c5f90e1939c3b51f3abbd6760272096f8a3e" from cache

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

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
        (network host)
        (shell "cd ~/opam-repository && (git cat-file -e 6c1b38620288b5bf349067f089a7b1fc91185d94 || git fetch origin master) && git reset -q --hard 6c1b38620288b5bf349067f089a7b1fc91185d94 && git log --no-decorate -n1 --oneline && opam update -u"))
6c1b386202 Merge pull request #28774 from Julow/release-ocamlformat-0.28.1

<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
default (at git+file:///home/opam/opam-repository): 
    [INFO] opam 2.1 and 2.2 include many performance and security improvements over 2.0; please consider upgrading (https://opam.ocaml.org/doc/Install.html)


Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# Run eval $(opam env) to update the current shell environment
2025-11-24 17:30.41 ---> using "a7d3c7d9f6aff7dc059c465a33e7ef3fda4b4a1ee9c79bef8645b5cd4da72b96" from cache

/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
        (network host)
        (shell "opam depext -i dune"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
  - install dune 3.20.2

<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[dune.3.20.2] found in cache

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed dune.3.20.2
Done.
# Run eval $(opam env) to update the current shell environment
2025-11-24 17:30.41 ---> using "b8799a0f87a66bd49a9341889a0027044c03db80ad17a5edb3adaf72f166d8fd" from cache

/: (workdir /src)

/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
           (network host)
           (shell "opam depext -i ocamlformat=0.28.1"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
  - install sexplib0          v0.14.0  [required by base]
  - install ocamlbuild        0.16.1   [required by fpath, astring, uuseg]
  - install either            1.0.0    [required by ocamlformat-lib]
  - install menhirLib         20250912 [required by ocamlformat-lib]
  - install csexp             1.5.2    [required by ocamlformat]
  - install camlp-streams     5.0.1    [required by ocamlformat-lib]
  - install seq               base     [required by re]
  - install menhirSdk         20250912 [required by ocamlformat-lib]
  - install fix               20250919 [required by ocamlformat-lib]
  - install menhirCST         20250912 [required by menhir]
  - install ocamlfind         1.9.8    [required by ocp-indent, astring, fpath, uuseg]
  - install dune-build-info   3.20.2   [required by ocamlformat-lib]
  - install cmdliner          2.0.0    [required by ocamlformat]
  - install ocaml-version     4.0.3    [required by ocamlformat-lib]
  - install dune-configurator 3.20.2   [required by base]
  - install re                1.11.0   [required by ocamlformat]
  - install menhir            20250912 [required by ocamlformat-lib]
  - install topkg             1.1.1    [required by fpath, astring, uuseg]
  - install ocp-indent        1.9.0    [required by ocamlformat-lib]
  - install base              v0.14.3  [required by ocamlformat-lib]
  - install uutf              1.0.4    [required by ocamlformat-lib]
  - install astring           0.8.5    [required by ocamlformat-lib]
  - install stdio             v0.14.0  [required by ocamlformat-lib]
  - install uucp              15.0.0   [required by uuseg]
  - install fpath             0.7.3    [required by ocamlformat-lib]
  - install uuseg             15.0.0   [required by ocamlformat-lib]
  - install ocamlformat-lib   0.28.1   [required by ocamlformat]
  - install ocamlformat       0.28.1
===== 28 to install =====

<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[astring.0.8.5] found in cache
[base.v0.14.3] found in cache
[camlp-streams.5.0.1] found in cache
[cmdliner.2.0.0] found in cache
[csexp.1.5.2] found in cache
[dune-build-info.3.20.2] found in cache
[dune-configurator.3.20.2] found in cache
[either.1.0.0] found in cache
[fix.20250919] found in cache
[fpath.0.7.3] found in cache
[menhir.20250912] found in cache
[menhirCST.20250912] found in cache
[menhirLib.20250912] found in cache
[menhirSdk.20250912] found in cache
[ocaml-version.4.0.3] found in cache
[ocamlbuild.0.16.1] found in cache
[ocamlfind.1.9.8] found in cache
[ocamlformat.0.28.1] found in cache
[ocamlformat-lib.0.28.1] found in cache
[ocp-indent.1.9.0] found in cache
[re.1.11.0] found in cache
[sexplib0.v0.14.0] found in cache
[stdio.v0.14.0] found in cache
[topkg.1.1.1] found in cache
[uucp.15.0.0] found in cache
[uuseg.15.0.0] found in cache
[uutf.1.0.4] found in cache

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed seq.base
-> installed camlp-streams.5.0.1
-> installed csexp.1.5.2
-> installed either.1.0.0
-> installed fix.20250919
-> installed menhirCST.20250912
-> installed menhirLib.20250912
-> installed menhirSdk.20250912
-> installed cmdliner.2.0.0
-> installed ocaml-version.4.0.3
-> installed re.1.11.0
-> installed sexplib0.v0.14.0
-> installed dune-build-info.3.20.2
-> installed dune-configurator.3.20.2
-> installed ocamlfind.1.9.8
-> installed ocp-indent.1.9.0
-> installed ocamlbuild.0.16.1
-> installed base.v0.14.3
-> installed topkg.1.1.1
-> installed stdio.v0.14.0
-> installed uutf.1.0.4
-> installed astring.0.8.5
-> installed fpath.0.7.3
-> installed menhir.20250912
-> installed uucp.15.0.0
-> installed uuseg.15.0.0
-> installed ocamlformat-lib.0.28.1
-> installed ocamlformat.0.28.1
Done.

<><> ocp-indent.1.9.0 installed successfully ><><><><><><><><><><><><><><><><><>
=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:

   * for Emacs, add these lines to ~/.emacs:
     (add-to-list 'load-path "/home/opam/.opam/4.08/share/emacs/site-lisp")
     (require 'ocp-indent)

   * for Vim, add this line to ~/.vimrc:
     set rtp^="/home/opam/.opam/4.08/share/ocp-indent/vim"
# Run eval $(opam env) to update the current shell environment
2025-11-24 17:30.41 ---> using "7b71439e6ac9917292b28dc59ecc075d01d03dd2ef11c372809a6cf99e594a22" from cache

/src: (copy (src .) (dst /src/))
2025-11-24 17:30.42 ---> saved as "9332b8edcb8defb8253e6415f34a81a65dd2d2bb942e79f2bd27bf252b15ed21"

/src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
File "src/http_miou_server.ml", line 1, characters 0-0:
diff --git a/_build/default/src/http_miou_server.ml b/_build/default/src/.formatted/http_miou_server.ml
index 20bf118..b759ac8 100644
--- a/_build/default/src/http_miou_server.ml
+++ b/_build/default/src/.formatted/http_miou_server.ml
@@ -253,11 +253,9 @@ let clear ?(parallel = true) ?stop ?(config = H1.Config.default) ?backlog ?ready
         Log.debug (fun m ->
             m "receive a connection from: %a" pp_sockaddr sockaddr);
         clean_up orphans;
-        call ~orphans
-          begin
-            fun () ->
-              http_1_1_server_connection ~config ~user's_error_handler ?upgrade
-                ~user's_handler fd'
+        call ~orphans begin fun () ->
+            http_1_1_server_connection ~config ~user's_error_handler ?upgrade
+              ~user's_handler fd'
           end;
         go orphans file_descr
   in
@@ -299,19 +297,18 @@ let with_tls ?(parallel = true) ?stop
         let fn () =
           try
             let tls_flow = Tls_miou_unix.server_of_fd tls_config fd' in
-            begin
-              match (config, alpn tls_flow) with
-              | `Both (_, h2), Some "h2" | `H2 h2, (Some "h2" | None) ->
-                  Log.debug (fun m -> m "Start a h2 request handler");
-                  h2s_server_connection ~config:h2 ~user's_error_handler
-                    ?upgrade ~user's_handler tls_flow
-              | `Both (config, _), Some "http/1.1"
-              | `HTTP_1_1 config, (Some "http/1.1" | None) ->
-                  Log.debug (fun m -> m "Start a http/1.1 request handler");
-                  https_1_1_server_connection ~config ~user's_error_handler
-                    ?upgrade ~user's_handler tls_flow
-              | `Both _, None -> assert false
-              | _, Some _protocol -> assert false
+            begin match (config, alpn tls_flow) with
+            | `Both (_, h2), Some "h2" | `H2 h2, (Some "h2" | None) ->
+                Log.debug (fun m -> m "Start a h2 request handler");
+                h2s_server_connection ~config:h2 ~user's_error_handler ?upgrade
+                  ~user's_handler tls_flow
+            | `Both (config, _), Some "http/1.1"
+            | `HTTP_1_1 config, (Some "http/1.1" | None) ->
+                Log.debug (fun m -> m "Start a http/1.1 request handler");
+                https_1_1_server_connection ~config ~user's_error_handler
+                  ?upgrade ~user's_handler tls_flow
+            | `Both _, None -> assert false
+            | _, Some _protocol -> assert false
             end
           with exn ->
             Log.err (fun m ->
@@ -422,19 +419,18 @@ module Websocket = struct
       match Bstream.get oc with
       | None -> ()
       | Some (kind, data) ->
-          begin
-            match kind with
-            | `Other -> failwith "Unsupported frame of kind `Other"
-            | `Connection_close ->
-                Wsd.close wsd; Bstream.close oc; Ws_stop.set_emmited stop; ()
-            | `Ping -> Wsd.send_ping wsd
-            | `Pong -> Wsd.send_pong wsd
-            | `Msg (kind, is_fin) ->
-                let len = String.length data in
-                Wsd.send_bytes wsd ~kind ~is_fin
-                  (Bytes.unsafe_of_string data)
-                  ~off:0 ~len;
-                ()
+          begin match kind with
+          | `Other -> failwith "Unsupported frame of kind `Other"
+          | `Connection_close ->
+              Wsd.close wsd; Bstream.close oc; Ws_stop.set_emmited stop; ()
+          | `Ping -> Wsd.send_ping wsd
+          | `Pong -> Wsd.send_pong wsd
+          | `Msg (kind, is_fin) ->
+              let len = String.length data in
+              Wsd.send_bytes wsd ~kind ~is_fin
+                (Bytes.unsafe_of_string data)
+                ~off:0 ~len;
+              ()
           end;
           go ()
     in
File "src/httpcats.ml", line 1, characters 0-0:
diff --git a/_build/default/src/httpcats.ml b/_build/default/src/.formatted/httpcats.ml
index f41266d..f63a9b6 100644
--- a/_build/default/src/httpcats.ml
+++ b/_build/default/src/.formatted/httpcats.ml
@@ -54,28 +54,28 @@ let decode_uri uri =
        else Error (`Msg "Unknown protocol"))
       >>= fun (scheme, is_tls) ->
       (match String.split_on_char '@' user_pass_host_port with
-      | [ host_port ] -> Ok (None, host_port)
-      | [ user_pass; host_port ] ->
-          decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
-      | _ -> Error (`Msg "Couldn't decode URI"))
+        | [ host_port ] -> Ok (None, host_port)
+        | [ user_pass; host_port ] ->
+            decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
+        | _ -> Error (`Msg "Couldn't decode URI"))
       >>= fun (user_pass, host_port) ->
       decode_host_port host_port >>= fun (host, port) ->
       Ok (is_tls, scheme, user_pass, host, port, "/" ^ String.concat "/" path)
   | [ user_pass_host_port ] ->
       (match String.split_on_char '@' user_pass_host_port with
-      | [ host_port ] -> Ok (None, host_port)
-      | [ user_pass; host_port ] ->
-          decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
-      | _ -> Error (`Msg "Couldn't decode URI"))
+        | [ host_port ] -> Ok (None, host_port)
+        | [ user_pass; host_port ] ->
+            decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
+        | _ -> Error (`Msg "Couldn't decode URI"))
       >>= fun (user_pass, host_port) ->
       decode_host_port host_port >>= fun (host, port) ->
       Ok (false, "", user_pass, host, port, "/")
   | user_pass_host_port :: path ->
       (match String.split_on_char '@' user_pass_host_port with
-      | [ host_port ] -> Ok (None, host_port)
-      | [ user_pass; host_port ] ->
-          decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
-      | _ -> Error (`Msg "Couldn't decode URI"))
+        | [ host_port ] -> Ok (None, host_port)
+        | [ user_pass; host_port ] ->
+            decode_user_pass user_pass >>= fun up -> Ok (Some up, host_port)
+        | _ -> Error (`Msg "Couldn't decode URI"))
       >>= fun (user_pass, host_port) ->
       decode_host_port host_port >>= fun (host, port) ->
       Ok (false, "", user_pass, host, port, "/" ^ String.concat "/" path)
@@ -499,23 +499,22 @@ let single_request cfg ~fn acc =
     ; epoch
     }
   in
-  begin
-    match (alpn_protocol flow, cfg.http_config) with
-    | (Some `HTTP_1_1 | None), Some (`HTTP_1_1 config) ->
-        single_http_1_1_request ~config flow cfg' ~fn acc
-    | (Some `HTTP_1_1 | None), None -> single_http_1_1_request flow cfg' ~fn acc
-    | Some `H2, Some (`H2 config) -> single_h2_request ~config flow cfg' ~fn acc
-    | None, Some (`H2 _) ->
-        Log.warn (fun m ->
-            m "no ALPN protocol (choose http/1.1) where user forces h2");
-        single_http_1_1_request flow cfg' ~fn acc
-    | Some `H2, None -> single_h2_request flow cfg' ~fn acc
-    | Some `H2, Some (`HTTP_1_1 _) ->
-        Log.warn (fun m -> m "ALPN protocol is h2 where user forces http/1.1");
-        single_h2_request flow cfg' ~fn acc
-    | Some `HTTP_1_1, Some (`H2 _) ->
-        Log.warn (fun m -> m "ALPN protocol is http/1.1 where user forces h2");
-        single_http_1_1_request flow cfg' ~fn acc
+  begin match (alpn_protocol flow, cfg.http_config) with
+  | (Some `HTTP_1_1 | None), Some (`HTTP_1_1 config) ->
+      single_http_1_1_request ~config flow cfg' ~fn acc
+  | (Some `HTTP_1_1 | None), None -> single_http_1_1_request flow cfg' ~fn acc
+  | Some `H2, Some (`H2 config) -> single_h2_request ~config flow cfg' ~fn acc
+  | None, Some (`H2 _) ->
+      Log.warn (fun m ->
+          m "no ALPN protocol (choose http/1.1) where user forces h2");
+      single_http_1_1_request flow cfg' ~fn acc
+  | Some `H2, None -> single_h2_request flow cfg' ~fn acc
+  | Some `H2, Some (`HTTP_1_1 _) ->
+      Log.warn (fun m -> m "ALPN protocol is h2 where user forces http/1.1");
+      single_h2_request flow cfg' ~fn acc
+  | Some `HTTP_1_1, Some (`H2 _) ->
+      Log.warn (fun m -> m "ALPN protocol is http/1.1 where user forces h2");
+      single_http_1_1_request flow cfg' ~fn acc
   end
   |> open_client_error
 
@@ -621,11 +620,9 @@ let request ?config:http_config ?tls_config ?authenticator ?(meth = `GET)
           | Some authenticator -> Ok authenticator
         in
         Result.map
-          begin
-            fun authenticator ->
-              Tls.Config.client ~alpn_protocols ~authenticator ()
-              |> Result.get_ok
-              |> fun default -> `Default default
+          begin fun authenticator ->
+            Tls.Config.client ~alpn_protocols ~authenticator () |> Result.get_ok
+            |> fun default -> `Default default
           end
           authenticator
   in
dune build @fmt failed
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)" failed with exit status 2
2025-11-24 17:30.43: Job failed: Failed: Build failed