2025-08-19 09:15.08: New job: test ahrefs/ocannl https://github.com/ahrefs/ocannl.git#refs/heads/master (bef4ee560234c379f641ff0d9699703d60e513bc) (linux-x86_64:(lint-fmt)) Base: ocaml/opam:debian-12-ocaml-4.08@sha256:474656ea1593a299054f8966c700443fa0944c9534de3da94ca6dfab4a44c47a ocamlformat version: version 0.27.0 (from opam) To reproduce locally: git clone --recursive "https://github.com/ahrefs/ocannl.git" -b "master" && cd "ocannl" && git reset --hard bef4ee56 cat > Dockerfile <<'END-OF-DOCKERFILE' FROM ocaml/opam:debian-12-ocaml-4.08@sha256:474656ea1593a299054f8966c700443fa0944c9534de3da94ca6dfab4a44c47a USER 1000:1000 RUN cd ~/opam-repository && (git cat-file -e b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && git log --no-decorate -n1 --oneline && opam update -u RUN opam depext -i dune WORKDIR /src RUN opam depext -i ocamlformat=0.27.0 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-08-19 09:15.08: Using cache hint "ahrefs/ocannl-ocaml/opam:debian-12-ocaml-4.08@sha256:474656ea1593a299054f8966c700443fa0944c9534de3da94ca6dfab4a44c47a-debian-12-4.08_opam-2.4-ocamlformat-b8021439f8c57ba6435bc2263f6596671f4f4466" 2025-08-19 09:15.08: Using OBuilder spec: ((from ocaml/opam:debian-12-ocaml-4.08@sha256:474656ea1593a299054f8966c700443fa0944c9534de3da94ca6dfab4a44c47a) (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 b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && 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.27.0")) (copy (src .) (dst /src/)) (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)")) ) 2025-08-19 09:15.08: Waiting for resource in pool OCluster 2025-08-19 09:15.09: Waiting for worker… 2025-08-19 09:18.27: Got resource from pool OCluster Building on eumache HEAD is now at 1edfb11c Small plots in test expectations (same rationale as few significant digits) HEAD is now at bef4ee56 Scale up timeout... to 100 seconds (from ocaml/opam:debian-12-ocaml-4.08@sha256:474656ea1593a299054f8966c700443fa0944c9534de3da94ca6dfab4a44c47a) 2025-08-19 09:18.28 ---> using "1d0024db739bd078f91b2384c47919652a4b72a425e3e24ce24cfd1f6debdfbc" 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 b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && git log --no-decorate -n1 --oneline && opam update -u")) b8021439f8 Merge pull request #28261 from kit-ty-kate/deploy-fix-25819 <><> 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-08-19 09:19.50 ---> saved as "76d9d96bb26da3c78200d383fd35f876d80571baf05962331a1fff5f47db0e2e" /: (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.19.1 <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [dune.3.19.1] found in cache <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed dune.3.19.1 Done. # Run eval $(opam env) to update the current shell environment 2025-08-19 09:20.37 ---> saved as "da0888a20a067de19f6183f0b497dcc2d1ea7f7036861cc50f633c662efdce4f" /: (workdir /src) /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam depext -i ocamlformat=0.27.0")) # 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 menhirLib 20240715 [required by ocamlformat-lib] - install menhirCST 20240715 [required by menhir] - install ocamlbuild 0.16.1 [required by fpath, astring, uuseg] - install cmdliner 1.3.0 [required by ocamlformat] - install menhirSdk 20240715 [required by ocamlformat-lib] - install either 1.0.0 [required by ocamlformat-lib] - install csexp 1.5.2 [required by ocamlformat] - install dune-build-info 3.19.1 [required by ocamlformat-lib] - install camlp-streams 5.0.1 [required by ocamlformat-lib] - install seq base [required by re] - install fix 20250428 [required by ocamlformat-lib] - install ocaml-version 4.0.1 [required by ocamlformat-lib] - install ocamlfind 1.9.8 [required by ocp-indent, astring, fpath, uuseg] - install menhir 20240715 [required by ocamlformat-lib] - install dune-configurator 3.19.1 [required by base] - install re 1.11.0 [required by ocamlformat] - install topkg 1.1.0 [required by fpath, astring, uuseg] - install base-bytes base [required by ocp-indent] - 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 ocp-indent 1.8.1 [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.27.0 [required by ocamlformat] - install ocamlformat 0.27.0 ===== 29 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.1.3.0] found in cache [csexp.1.5.2] found in cache [dune-build-info.3.19.1] found in cache [dune-configurator.3.19.1] found in cache [either.1.0.0] found in cache [fix.20250428] found in cache [fpath.0.7.3] found in cache [menhir.20240715] found in cache [menhirCST.20240715] found in cache [menhirLib.20240715] found in cache [menhirSdk.20240715] found in cache [ocaml-version.4.0.1] found in cache [ocamlbuild.0.16.1] found in cache [ocamlfind.1.9.8] found in cache [ocamlformat.0.27.0] found in cache [ocamlformat-lib.0.27.0] found in cache [ocp-indent.1.8.1] 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.0] 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.20250428 -> installed menhirCST.20240715 -> installed menhirLib.20240715 -> installed menhirSdk.20240715 -> installed cmdliner.1.3.0 -> installed ocaml-version.4.0.1 -> installed re.1.11.0 -> installed sexplib0.v0.14.0 -> installed dune-build-info.3.19.1 -> installed dune-configurator.3.19.1 -> installed ocamlfind.1.9.8 -> installed base-bytes.base -> installed ocp-indent.1.8.1 -> installed ocamlbuild.0.16.1 -> installed base.v0.14.3 -> installed topkg.1.1.0 -> installed stdio.v0.14.0 -> installed uutf.1.0.4 -> installed astring.0.8.5 -> installed fpath.0.7.3 -> installed menhir.20240715 -> installed uucp.15.0.0 -> installed uuseg.15.0.0 -> installed ocamlformat-lib.0.27.0 -> installed ocamlformat.0.27.0 Done. <><> ocp-indent.1.8.1 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-08-19 09:21.58 ---> saved as "86ec8dcb8046a1e5dacfb1841e8c026d30cfead67649bcb6d6a8f9ddd6fb153d" /src: (copy (src .) (dst /src/)) 2025-08-19 09:21.58 ---> saved as "111088593207f3083117ba54e1e30a2702d82c479d3fe24515a76dc581290e2b" /src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)")) File "arrayjit/bin/dune", line 8, characters 30-43: 8 | (pps ppx_here ppx_minidebug ppx_sexp_conv)) ^^^^^^^^^^^^^ Error: Library "ppx_sexp_conv" not found. -> required by _build/default/arrayjit/bin/read_config.exe -> required by %{dep:../../../arrayjit/bin/read_config.exe} at test/operations/dune:17 -> required by _build/default/test/operations/config/ocannl_backend.txt -> required by %{read:config/ocannl_backend.txt} at test/operations/dune:23 -> required by Computing directory contents of _build/default/test/operations File "arrayjit/bin/dune", line 8, characters 7-15: 8 | (pps ppx_here ppx_minidebug ppx_sexp_conv)) ^^^^^^^^ Error: Library "ppx_here" not found. -> required by _build/default/arrayjit/bin/.merlin-conf/exe-read_config -> required by _build/default/arrayjit/bin/read_config.exe -> required by %{dep:../../../arrayjit/bin/read_config.exe} at test/operations/dune:17 -> required by _build/default/test/operations/config/ocannl_backend.txt -> required by %{read:config/ocannl_backend.txt} at test/operations/dune:23 -> required by Computing directory contents of _build/default/test/operations File "arrayjit/lib/builtins_cc.ml", line 1, characters 0-0: diff --git a/_build/default/arrayjit/lib/builtins_cc.ml b/_build/default/arrayjit/lib/.formatted/builtins_cc.ml index 4b4ebb7..ce3518e 100644 --- a/_build/default/arrayjit/lib/builtins_cc.ml +++ b/_build/default/arrayjit/lib/.formatted/builtins_cc.ml @@ -676,4 +676,4 @@ uint8_t single_to_fp8(float f) return (uint8_t)((sign << 7) | ((exp & 0x1F) << 2) | (mant_bits & 0x3)); } -|} \ No newline at end of file +|} File "datasets/dataset_utils.ml", line 1, characters 0-0: diff --git a/_build/default/datasets/dataset_utils.ml b/_build/default/datasets/.formatted/dataset_utils.ml index 3848409..3c13667 100644 --- a/_build/default/datasets/dataset_utils.ml +++ b/_build/default/datasets/.formatted/dataset_utils.ml @@ -6,21 +6,27 @@ let mkdir_p path perm = if path = "" || path = "." || path = Filename.dir_sep then () else (* Handle Windows drive letters specially *) - let path_to_split, _is_absolute, initial_prefix = + let path_to_split, _is_absolute, initial_prefix = if (Sys.win32 || Sys.cygwin) && String.length path >= 2 && path.[1] = ':' then (* Windows path with drive letter like C:\path or C:/path *) - let drive_prefix = (String.sub path 0 2) ^ Filename.dir_sep in - let rest = if String.length path > 3 then String.sub path 3 (String.length path - 3) else "" in - rest, true, drive_prefix + let drive_prefix = String.sub path 0 2 ^ Filename.dir_sep in + let rest = + if String.length path > 3 then String.sub path 3 (String.length path - 3) else "" + in + (rest, true, drive_prefix) else if path <> "" && path.[0] = Filename.dir_sep.[0] then (* Absolute path starting with separator *) - let rest = if String.length path > 1 then String.sub path 1 (String.length path - 1) else "" in - rest, true, Filename.dir_sep + let rest = + if String.length path > 1 then String.sub path 1 (String.length path - 1) else "" + in + (rest, true, Filename.dir_sep) else (* Relative path *) - path, false, "." + (path, false, ".") + in + let components = + String.split_on_char Filename.dir_sep.[0] path_to_split |> List.filter (( <> ) "") in - let components = String.split_on_char Filename.dir_sep.[0] path_to_split |> List.filter (( <> ) "") in ignore (List.fold_left @@ -52,22 +58,20 @@ let mkdir_p path perm = () module Xdg = struct - let home = + let home = if Sys.win32 || Sys.cygwin then - try Sys.getenv "USERPROFILE" - with Not_found -> - try Sys.getenv "HOMEPATH" - with Not_found -> failwith "Neither USERPROFILE nor HOMEPATH environment variables are set." - else - try Sys.getenv "HOME" - with Not_found -> failwith "HOME environment variable not set." - - let cache_base = + try Sys.getenv "USERPROFILE" + with Not_found -> ( + try Sys.getenv "HOMEPATH" + with Not_found -> + failwith "Neither USERPROFILE nor HOMEPATH environment variables are set.") + else try Sys.getenv "HOME" with Not_found -> failwith "HOME environment variable not set." + + let cache_base = let sep = Filename.dir_sep in if Sys.win32 || Sys.cygwin then home ^ sep ^ "AppData" ^ sep ^ "Local" ^ sep ^ "ocannl" ^ sep ^ "datasets" ^ sep - else - home ^ sep ^ ".cache" ^ sep ^ "ocannl" ^ sep ^ "datasets" ^ sep + else home ^ sep ^ ".cache" ^ sep ^ "ocannl" ^ sep ^ "datasets" ^ sep end let get_cache_dir dataset_name = Xdg.cache_base ^ dataset_name ^ Filename.dir_sep @@ -122,40 +126,44 @@ let ensure_extracted_archive ~url ~archive_path ~extract_dir ~check_file = mkdir_p extract_dir; Printf.printf "Extracting %s to %s ...\n%!" archive_path extract_dir; (* Basic support for tar.gz *) - if Filename.check_suffix archive_path ".tar.gz" then ( + if Filename.check_suffix archive_path ".tar.gz" then (* Try different extraction methods based on platform *) - let extract_success = - if Sys.win32 || Sys.cygwin then + let extract_success = + if Sys.win32 || Sys.cygwin then ( (* On Windows, try to use tar.exe if available (Windows 10+), otherwise fail gracefully *) - let command = - Printf.sprintf "tar.exe -xzf %s -C %s" - (Filename.quote archive_path) (Filename.quote extract_dir) + let command = + Printf.sprintf "tar.exe -xzf %s -C %s" (Filename.quote archive_path) + (Filename.quote extract_dir) in Printf.printf "Executing: %s\n%!" command; try let exit_code = Unix.system command in - if exit_code = Unix.WEXITED 0 then - (Printf.printf "Extracted archive successfully using tar.exe.\n%!"; - true) - else - (Printf.printf "tar.exe failed, trying alternative methods...\n%!"; - false) - with _ -> - (Printf.printf "tar.exe not available on this Windows system.\n%!"; - false) + if exit_code = Unix.WEXITED 0 then ( + Printf.printf "Extracted archive successfully using tar.exe.\n%!"; + true) + else ( + Printf.printf "tar.exe failed, trying alternative methods...\n%!"; + false) + with _ -> + Printf.printf "tar.exe not available on this Windows system.\n%!"; + false) else (* On Unix-like systems, use standard tar command *) let command = - Printf.sprintf "tar xzf %s -C %s" - (Filename.quote archive_path) (Filename.quote extract_dir) + Printf.sprintf "tar xzf %s -C %s" (Filename.quote archive_path) + (Filename.quote extract_dir) in Printf.printf "Executing: %s\n%!" command; let exit_code = Unix.system command in exit_code = Unix.WEXITED 0 in if not extract_success then - failwith (Printf.sprintf "Archive extraction failed for %s. On Windows, ensure tar.exe is available (Windows 10+) or extract manually." archive_path) - else Printf.printf "Archive extracted successfully.\n%!") + failwith + (Printf.sprintf + "Archive extraction failed for %s. On Windows, ensure tar.exe is available (Windows \ + 10+) or extract manually." + archive_path) + else Printf.printf "Archive extracted successfully.\n%!" else failwith (Printf.sprintf "Unsupported archive type for %s (only .tar.gz)" archive_path); if not (Sys.file_exists check_file_full_path) then File "arrayjit/lib/cc_backend.ml", line 1, characters 0-0: diff --git a/_build/default/arrayjit/lib/cc_backend.ml b/_build/default/arrayjit/lib/.formatted/cc_backend.ml index 2e44910..85e7d2f 100644 --- a/_build/default/arrayjit/lib/cc_backend.ml +++ b/_build/default/arrayjit/lib/.formatted/cc_backend.ml @@ -83,25 +83,25 @@ let%track7_sexp c_compile_and_load ~f_path = | _ -> "-shared -fPIC" in (* On Windows, we need to link with the builtins library *) - let builtins_lib = + let builtins_lib = if String.equal Sys.os_type "Win32" || String.equal Sys.os_type "Cygwin" then (* Try to find the builtins object file in the build directory *) - let paths = [ - "_build/default/arrayjit/lib/builtins.o"; - "_build/default/arrayjit/lib/libir_stubs.a"; - "arrayjit/lib/builtins.o"; - ] in - match List.find ~f:Stdlib.Sys.file_exists paths with - | Some path -> " " ^ path - | None -> "" + let paths = + [ + "_build/default/arrayjit/lib/builtins.o"; + "_build/default/arrayjit/lib/libir_stubs.a"; + "arrayjit/lib/builtins.o"; + ] + in + match List.find ~f:Stdlib.Sys.file_exists paths with Some path -> " " ^ path | None -> "" else "" in let cmdline : string = - Printf.sprintf "%s %s%s -O%d -o %s %s >> %s 2>&1" (compiler_command ()) f_path - builtins_lib (optimization_level ()) libname kernel_link_flags log_fname + Printf.sprintf "%s %s%s -O%d -o %s %s >> %s 2>&1" (compiler_command ()) f_path builtins_lib + (optimization_level ()) libname kernel_link_flags log_fname in (* Debug: write the command to the log file *) - let () = + let () = let oc = Stdio.Out_channel.create ~append:false log_fname in Stdio.Out_channel.fprintf oc "Command: %s\n" cmdline; Stdio.Out_channel.fprintf oc "Builtins lib: '%s'\n" builtins_lib; @@ -111,7 +111,10 @@ let%track7_sexp c_compile_and_load ~f_path = (* Note: it seems waiting for the file to exist is necessary here and below regardless of needing the logs. *) let start_time = Unix.gettimeofday () in - let timeout = Float.of_string @@ Utils.get_global_arg ~default:"100.0" ~arg_name:"cc_backend_post_compile_timeout" in + let timeout = + Float.of_string + @@ Utils.get_global_arg ~default:"100.0" ~arg_name:"cc_backend_post_compile_timeout" + in while rc = 0 && (not @@ (Stdlib.Sys.file_exists libname && Stdlib.Sys.file_exists log_fname)) do let elapsed = Unix.gettimeofday () -. start_time in if Float.(elapsed > timeout) then File "arrayjit/lib/c_syntax.ml", line 1, characters 0-0: diff --git a/_build/default/arrayjit/lib/c_syntax.ml b/_build/default/arrayjit/lib/.formatted/c_syntax.ml index c0e7d67..a1dc289 100644 --- a/_build/default/arrayjit/lib/c_syntax.ml +++ b/_build/default/arrayjit/lib/.formatted/c_syntax.ml @@ -92,7 +92,6 @@ struct let buffer_suffix = fun ~pos:_ -> "" let arg_int_prefix = "const int " let extra_args = [] - let typ_of_prec = Ops.c_typ_of_prec let vec_typ_of_prec = Ops.c_vec_typ_of_prec let float_log_style = if Input.full_printf_support then "%g" else "%de-3" @@ -232,6 +231,7 @@ module C_syntax (B : C_syntax_config) = struct @@ Array.map B.procs ~f:(fun l -> l.llc) let in_ctx tn = B.(Tn.is_in_context_force ~use_host_memory tn 46) + open Indexing open Doc_helpers File "arrayjit/lib/cuda_backend.ml", line 1, characters 0-0: diff --git a/_build/default/arrayjit/lib/cuda_backend.ml b/_build/default/arrayjit/lib/.formatted/cuda_backend.ml index a26c366..b215f9a 100644 --- a/_build/default/arrayjit/lib/cuda_backend.ml +++ b/_build/default/arrayjit/lib/.formatted/cuda_backend.ml @@ -142,14 +142,16 @@ end) : Ir.Backend_impl.Lowered_backend = struct let cuda_include_opt = match Sys.getenv "CUDA_PATH" with | Some cuda_path -> [ "-I" ^ cuda_path ^ "/include" ] - | None -> ( - (* Fallback to common location if CUDA_PATH is not set *) - if Stdlib.Sys.file_exists "/usr/local/cuda/include" then [ "-I/usr/local/cuda/include" ] - else []) + | None -> + if + (* Fallback to common location if CUDA_PATH is not set *) + Stdlib.Sys.file_exists "/usr/local/cuda/include" + then [ "-I/usr/local/cuda/include" ] + else [] in let options = - cuda_include_opt @ ("--use_fast_math" - :: (if Utils.with_runtime_debug () then [ "--device-debug" ] else [])) + cuda_include_opt + @ ("--use_fast_math" :: (if Utils.with_runtime_debug () then [ "--device-debug" ] else [])) in (* FIXME: every now and then the compilation crashes because the options are garbled. *) (* Stdio.printf "PTX options %s\n%!" @@ String.concat ~sep:", " options; *) @@ -689,7 +691,6 @@ end) : Ir.Backend_impl.Lowered_backend = struct | FMA, Ops.Single_prec _ -> func "fmaf" | FMA, _ -> func "fma" - let convert_precision ~from ~to_ = match (from, to_) with | Ops.Double_prec _, Ops.Double_prec _ 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-08-19 09:22.00: Job failed: Failed: Build failed