Organisationsrobur-coophttpcats857acf ()(lint-fmt)

(lint-fmt)

Link Copied
Code Copied

Logs

2025-11-24 17:01.45: New job: test robur-coop/httpcats https://github.com/robur-coop/httpcats.git#refs/heads/upgrade-distrib (857acfc0554dc5815ec3f92efd18dee992d0d934) (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 857acfc0
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:01.45: 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:01.45: 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:01.45: Waiting for resource in pool OCluster
2025-11-24 17:01.45: Waiting for worker…
2025-11-24 17:01.45: Got resource from pool OCluster
Building on clete
HEAD is now at 2650559 Set the port for tests (from 8080 to 9451)
HEAD is now at 857acfc Replace 127.0.0.1 to localhost


(from ocaml/opam:debian-13-ocaml-4.08@sha256:e3cc4e8fe5c00f48c72a719e3551b1d8a51c2862349a0f7507e8aa29fdf72321)
2025-11-24 17:01.46 ---> 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:01.46 ---> 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:01.46 ---> 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:01.46 ---> using "7b71439e6ac9917292b28dc59ecc075d01d03dd2ef11c372809a6cf99e594a22" from cache


/src: (copy (src .) (dst /src/))
2025-11-24 17:01.47 ---> saved as "baa90ab6ede48fbebfd165bda3c418f733b02418369543f3f6263f518d5f6579"


/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:01.48: Job failed: Failed: Build failed