Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ocaml-dune for openSUSE:Factory checked in at 2023-07-06 18:29:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocaml-dune (Old) and /work/SRC/openSUSE:Factory/.ocaml-dune.new.23466 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-dune" Thu Jul 6 18:29:14 2023 rev:33 rq:1097025 version:3.8.3 Changes: -------- --- /work/SRC/openSUSE:Factory/ocaml-dune/ocaml-dune.changes 2023-06-24 20:14:21.900293670 +0200 +++ /work/SRC/openSUSE:Factory/.ocaml-dune.new.23466/ocaml-dune.changes 2023-07-06 18:29:29.735444801 +0200 @@ -1,0 +2,6 @@ +Fri Jun 23 23:23:23 UTC 2023 - oher...@suse.de + +- Update to version 3.8.3 + see included CHANGES.md for details + +------------------------------------------------------------------- Old: ---- ocaml-dune-3.8.2.tar.xz New: ---- ocaml-dune-3.8.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocaml-dune.spec ++++++ --- /var/tmp/diff_new_pack.LoFWTa/_old 2023-07-06 18:29:30.271447999 +0200 +++ /var/tmp/diff_new_pack.LoFWTa/_new 2023-07-06 18:29:30.275448023 +0200 @@ -25,7 +25,7 @@ %define pkg ocaml-dune %global _buildshell /bin/bash Name: %pkg%nsuffix -Version: 3.8.2 +Version: 3.8.3 Release: 0 %{?ocaml_preserve_bytecode} License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.LoFWTa/_old 2023-07-06 18:29:30.315448262 +0200 +++ /var/tmp/diff_new_pack.LoFWTa/_new 2023-07-06 18:29:30.319448286 +0200 @@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="filename">ocaml-dune</param> - <param name="revision">e6a7ca69d3b27aa21b59887b5549daafdc931899</param> + <param name="revision">d325c40666a9d8ba93c15cad1615f19fd56ad208</param> <param name="scm">git</param> <param name="submodules">disable</param> <param name="url">https://github.com/ocaml/dune.git</param> ++++++ ocaml-dune-3.8.2.tar.xz -> ocaml-dune-3.8.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/.github/workflows/workflow.yml new/ocaml-dune-3.8.3/.github/workflows/workflow.yml --- old/ocaml-dune-3.8.2/.github/workflows/workflow.yml 2023-06-16 14:23:57.000000000 +0200 +++ new/ocaml-dune-3.8.3/.github/workflows/workflow.yml 2023-06-27 13:32:35.000000000 +0200 @@ -158,7 +158,7 @@ runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 + - uses: cachix/install-nix-action@v22 - run: nix build fmt: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/CHANGES.md new/ocaml-dune-3.8.3/CHANGES.md --- old/ocaml-dune-3.8.2/CHANGES.md 2023-06-16 14:23:57.000000000 +0200 +++ new/ocaml-dune-3.8.3/CHANGES.md 2023-06-27 13:32:35.000000000 +0200 @@ -1,3 +1,12 @@ +3.8.3 (2023-06-27) +------------------ + +- Fix deadlock on Windows (#8044, @nojb) + +- When using `sendfile` to copy files on Linux, fall back to the portable + version if it fails at runtime for some reason (NFS, etc). + (#8049, fixes #8041, @emillon) + 3.8.2 (2023-06-16) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/otherlibs/stdune/src/io.ml new/ocaml-dune-3.8.3/otherlibs/stdune/src/io.ml --- old/ocaml-dune-3.8.2/otherlibs/stdune/src/io.ml 2023-06-16 14:23:57.000000000 +0200 +++ new/ocaml-dune-3.8.3/otherlibs/stdune/src/io.ml 2023-06-27 13:32:35.000000000 +0200 @@ -176,9 +176,14 @@ Exn.protectx (setup_copy ?chmod ~src ~dst ()) ~finally:close_both ~f:(fun (ic, oc) -> copy_channels ic oc) + let sendfile_with_fallback ?chmod ~src ~dst () = + try sendfile ?chmod ~src ~dst () + with Unix.Unix_error (EINVAL, "sendfile", _) -> + copy_file_portable ?chmod ~src ~dst () + let copy_file_best = match available with - | `Sendfile -> sendfile + | `Sendfile -> sendfile_with_fallback | `Copyfile -> copyfile | `Nothing -> copy_file_portable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/src/dune_async_io/async_io.ml new/ocaml-dune-3.8.3/src/dune_async_io/async_io.ml --- old/ocaml-dune-3.8.2/src/dune_async_io/async_io.ml 2023-06-16 14:23:57.000000000 +0200 +++ new/ocaml-dune-3.8.3/src/dune_async_io/async_io.ml 2023-06-27 13:32:35.000000000 +0200 @@ -153,7 +153,8 @@ match t.running with | false -> Unix.close t.pipe_write; - Unix.close t.pipe_read + if not Sys.win32 then Unix.close t.pipe_read + (* On Win32, both ends of the "pipe" are the same UDP socket *) | true -> let readers, writers, ex = let read = t.pipe_read :: Table.keys t.readers in @@ -187,10 +188,17 @@ let with_io scheduler f = let module Scheduler = (val scheduler : Scheduler) in let t = - let pipe_read, pipe_write = Unix.pipe ~cloexec:true () in - if not Sys.win32 then ( - Unix.set_nonblock pipe_read; - Unix.set_nonblock pipe_write); + let pipe_read, pipe_write = + if not Sys.win32 then Unix.pipe ~cloexec:true () + else + (* Create a self-connected UDP socket *) + let udp_sock = Unix.socket ~cloexec:true PF_INET SOCK_DGRAM 0 in + Unix.bind udp_sock (ADDR_INET (Unix.inet_addr_loopback, 0)); + Unix.connect udp_sock (Unix.getsockname udp_sock); + (udp_sock, udp_sock) + in + Unix.set_nonblock pipe_read; + Unix.set_nonblock pipe_write; { readers = Table.create (module Fd) 64 ; writers = Table.create (module Fd) 64 ; mutex = Mutex.create () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/test/blackbox-tests/test-cases/dune new/ocaml-dune-3.8.3/test/blackbox-tests/test-cases/dune --- old/ocaml-dune-3.8.2/test/blackbox-tests/test-cases/dune 2023-06-16 14:23:57.000000000 +0200 +++ new/ocaml-dune-3.8.3/test/blackbox-tests/test-cases/dune 2023-06-27 13:32:35.000000000 +0200 @@ -128,3 +128,9 @@ (cram (applies_to version-corruption) (deps %{bin:od} %{bin:git} %{bin:cmp} %{bin:sed} %{bin:chmod})) + +(cram + (applies_to github8041) + (enabled_if + (= %{system} linux)) + (deps %{bin:strace})) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-dune-3.8.2/test/blackbox-tests/test-cases/github8041.t new/ocaml-dune-3.8.3/test/blackbox-tests/test-cases/github8041.t --- old/ocaml-dune-3.8.2/test/blackbox-tests/test-cases/github8041.t 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-dune-3.8.3/test/blackbox-tests/test-cases/github8041.t 2023-06-27 13:32:35.000000000 +0200 @@ -0,0 +1,17 @@ + $ cat > dune-project << EOF + > (lang dune 1.0) + > (package + > (name p)) + > EOF + + $ cat > dune << EOF + > (install + > (files data.txt) + > (section share)) + > EOF + + $ echo contents > data.txt + +If sendfile fails, we should fallback to the portable implementation. + + $ strace -e inject=sendfile:error=EINVAL -o /dev/null dune build @install