2026-04-25 18:37.37: New job: test ocsigen/ocsigen-dune-rules https://github.com/ocsigen/ocsigen-dune-rules.git#refs/heads/modernize (be09df96eeac39403e8a1925c927d108cc81ac9a) (linux-x86_64:(lint-fmt)) Base: ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c ocamlformat version: version 0.28.1 (from opam) To reproduce locally: git clone --recursive "https://github.com/ocsigen/ocsigen-dune-rules.git" -b "modernize" && cd "ocsigen-dune-rules" && git reset --hard be09df96 cat > Dockerfile <<'END-OF-DOCKERFILE' FROM ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c USER 1000:1000 RUN cd ~/opam-repository && (git cat-file -e 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && 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 2026-04-25 18:37.37: Using cache hint "ocsigen/ocsigen-dune-rules-ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c-debian-13-4.08_opam-2.5-ocamlformat-9a427a5cdc1d87c781d8e9febed953e2fd5640c2" 2026-04-25 18:37.37: Using OBuilder spec: ((from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c) (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 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && 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)")) ) 2026-04-25 18:37.37: Waiting for resource in pool OCluster 2026-04-25 18:57.14: Waiting for worker… 2026-04-25 19:00.18: Got resource from pool OCluster Building on bremusa.ocamllabs.io hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialised empty Git repository in /var/cache/obuilder/ocluster/git/ocsigen-dune-rules.git-646fca5f05b79d32bac0dfde2916d8175138546e/.git/ HEAD is now at be09df9 Add --server-objs-dir option for direct .cmo paths (from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c) 2026-04-25 19:00.20 ---> using "228e5ba11f0bea08c69266bb98d12a75785691261b07b0808652a307a04e14b2" 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 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && git log --no-decorate -n1 --oneline && opam update -u")) From https://github.com/ocaml/opam-repository * branch master -> FETCH_HEAD 42844088d7..f83868273d master -> origin/master 9a427a5cdc Merge pull request #29742 from nmatschke/opam-publish-base.v0.14.4 <><> 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 2026-04-25 19:00.20 ---> using "55207f8077d4ca8ea777cfe81c5bb0b4cfe243a94bc9f38e3494087a2b0a025d" 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.22.2 <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [dune.3.22.2] found in cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed dune.3.22.2 Done. # Run eval $(opam env) to update the current shell environment 2026-04-25 19:00.20 ---> using "205191a7b54ce074267c88bea92111408bb60945a5ee017f331e2ec05331c341" 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 dune-build-info 3.22.2 [required by ocamlformat-lib] - 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 20260209 [required by ocamlformat-lib] - install ocaml-version 4.1.0 [required by ocamlformat-lib] - install csexp 1.5.2 [required by ocamlformat] - install menhirSdk 20260209 [required by ocamlformat-lib] - install menhirGLR 20260209 [required by menhir] - install cmdliner 2.1.1 [required by ocamlformat] - install camlp-streams 5.0.1 [required by ocamlformat-lib] - install seq base [required by re] - install fix 20250919 [required by ocamlformat-lib] - install ocamlfind 1.9.8 [required by ocp-indent, astring, fpath, uuseg] - install menhirCST 20260209 [required by menhir] - install dune-configurator 3.22.2 [required by base] - install re 1.11.0 [required by ocamlformat] - install topkg 1.1.1 [required by fpath, astring, uuseg] - install ocp-indent 1.9.0 [required by ocamlformat-lib] - install menhir 20260209 [required by ocamlformat-lib] - install base v0.14.4 [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 ===== 29 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [astring.0.8.5] found in cache [base.v0.14.4] found in cache [camlp-streams.5.0.1] found in cache [cmdliner.2.1.1] found in cache [csexp.1.5.2] found in cache [dune-build-info.3.22.2] found in cache [dune-configurator.3.22.2] found in cache [either.1.0.0] found in cache [fix.20250919] found in cache [fpath.0.7.3] found in cache [menhir.20260209] found in cache [menhirCST.20260209] found in cache [menhirGLR.20260209] found in cache [menhirLib.20260209] found in cache [menhirSdk.20260209] found in cache [ocaml-version.4.1.0] 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 dune-build-info.3.22.2 -> installed either.1.0.0 -> installed fix.20250919 -> installed menhirCST.20260209 -> installed menhirGLR.20260209 -> installed menhirLib.20260209 -> installed menhirSdk.20260209 -> installed ocaml-version.4.1.0 -> installed sexplib0.v0.14.0 -> installed re.1.11.0 -> installed cmdliner.2.1.1 -> installed dune-configurator.3.22.2 -> installed ocamlfind.1.9.8 -> installed ocp-indent.1.9.0 -> installed ocamlbuild.0.16.1 -> installed menhir.20260209 -> installed base.v0.14.4 -> 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 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 2026-04-25 19:00.20 ---> using "59dc13ea7fa7c16a986ee17e7ad077cba29ee0c7fca32664e872db137a56ec7b" from cache /src: (copy (src .) (dst /src/)) 2026-04-25 19:00.20 ---> saved as "3581c07f7962c450dfdaa153a7c6c6f771abb6e3b1d54e49372eeb0b89e24933" /src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)")) File "ocsigen-dune-rules/main.ml", line 1, characters 0-0: diff --git a/_build/default/ocsigen-dune-rules/main.ml b/_build/default/ocsigen-dune-rules/.formatted/main.ml index b97afe5..bc22875 100644 --- a/_build/default/ocsigen-dune-rules/main.ml +++ b/_build/default/ocsigen-dune-rules/.formatted/main.ml @@ -1,13 +1,11 @@ let run internal_prefix subdir server_objs_dir dir = (match internal_prefix with - | Some p -> Gen_rules.extra_ppx_args := ["-internal-prefix"; p] - | None -> ()); - (match subdir with - | Some s -> Gen_rules.subdir_name := s - | None -> ()); + | Some p -> Gen_rules.extra_ppx_args := [ "-internal-prefix"; p ] + | None -> ()); + (match subdir with Some s -> Gen_rules.subdir_name := s | None -> ()); (match server_objs_dir with - | Some d -> Gen_rules.server_objs_dir := d - | None -> ()); + | Some d -> Gen_rules.server_objs_dir := d + | None -> ()); let files = Utils.list_dir dir in let files = List.filter (Fun.negate Utils.is_dir) files in Gen_rules.run files @@ -19,12 +17,21 @@ let arg_dir = Arg.(required & pos 0 (some dir) None & info ~doc ~docv:"DIR" []) let arg_internal_prefix = - let doc = "Strip $(docv). wrapper prefix from .cmo type paths (for compiling wrapped libraries)." in - Arg.(value & opt (some string) None & info ~doc ~docv:"PREFIX" ["internal-prefix"]) + let doc = + "Strip $(docv). wrapper prefix from .cmo type paths (for compiling wrapped \ + libraries)." + in + Arg.( + value + & opt (some string) None + & info ~doc ~docv:"PREFIX" [ "internal-prefix" ]) let arg_subdir = - let doc = "Put generated files in $(docv)/ subdirectory (for include_subdirs qualified)." in - Arg.(value & opt (some string) None & info ~doc ~docv:"DIR" ["subdir"]) + let doc = + "Put generated files in $(docv)/ subdirectory (for include_subdirs \ + qualified)." + in + Arg.(value & opt (some string) None & info ~doc ~docv:"DIR" [ "subdir" ]) let arg_server_objs_dir = let doc = @@ -32,10 +39,15 @@ let arg_server_objs_dir = $(docv) is the path to the server library's .objs/byte/ directory, \ relative to the dune file. The module prefix is derived from --subdir." in - Arg.(value & opt (some string) None & info ~doc ~docv:"DIR" ["server-objs-dir"]) + Arg.( + value & opt (some string) None & info ~doc ~docv:"DIR" [ "server-objs-dir" ]) let cmd = - let term = Term.(const run $ arg_internal_prefix $ arg_subdir $ arg_server_objs_dir $ arg_dir) in + let term = + Term.( + const run $ arg_internal_prefix $ arg_subdir $ arg_server_objs_dir + $ arg_dir) + in let doc = "Generate dune rules for building an ocsigen application or library." in File "ocsigen-dune-rules/gen_rules.ml", line 1, characters 0-0: diff --git a/_build/default/ocsigen-dune-rules/gen_rules.ml b/_build/default/ocsigen-dune-rules/.formatted/gen_rules.ml index b1baa45..6eedc91 100644 --- a/_build/default/ocsigen-dune-rules/gen_rules.ml +++ b/_build/default/ocsigen-dune-rules/.formatted/gen_rules.ml @@ -1,6 +1,5 @@ let pf = Printf.printf let spf = Printf.sprintf - let extra_ppx_args = ref [] let subdir_name = ref "" let server_objs_dir = ref "" @@ -8,8 +7,8 @@ let server_objs_dir = ref "" let gen_eliom_ppx_rule ~target ~input ~args = let all_args = !extra_ppx_args @ args in let target, input_dep = - if !subdir_name = "" then target, input - else spf "%s/%s" !subdir_name target, input + if !subdir_name = "" then (target, input) + else (spf "%s/%s" !subdir_name target, input) in if !subdir_name <> "" then pf @@ -19,7 +18,9 @@ let gen_eliom_ppx_rule ~target ~input ~args = (chdir %%{workspace_root} (run ocsigen-ppx-client -as-pp -loc-filename %%{dep:%s} %s %%{dep:%s}))))) |} - !subdir_name (Filename.basename target) input_dep (String.concat " " all_args) input_dep + !subdir_name (Filename.basename target) input_dep + (String.concat " " all_args) + input_dep else pf {|(rule @@ -27,7 +28,9 @@ let gen_eliom_ppx_rule ~target ~input ~args = (chdir %%{workspace_root} (run ocsigen-ppx-client -as-pp -loc-filename %%{dep:%s} %s %%{dep:%s})))) |} - target input_dep (String.concat " " all_args) input_dep + target input_dep + (String.concat " " all_args) + input_dep let gen_rule_for_module ~server_rel_prefix ~impl fname = let target = Filename.basename fname in @@ -42,7 +45,8 @@ let gen_rule_for_module ~server_rel_prefix ~impl fname = let module_base = Filename.basename fname_no_ext in let cap_name = String.capitalize_ascii module_base in let prefix = - if !subdir_name <> "" then String.lowercase_ascii !subdir_name ^ "__" + if !subdir_name <> "" then + String.lowercase_ascii !subdir_name ^ "__" else "" in let cmo_from_dune_dir = 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 2026-04-25 19:00.21: Job failed: Failed: Build failed