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

Reply via email to