Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ocaml-logs for openSUSE:Factory 
checked in at 2026-07-17 01:38:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ocaml-logs (Old)
 and      /work/SRC/openSUSE:Factory/.ocaml-logs.new.24530 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ocaml-logs"

Fri Jul 17 01:38:25 2026 rev:6 rq:1365556 version:0.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ocaml-logs/ocaml-logs.changes    2025-07-16 
17:36:14.678688793 +0200
+++ /work/SRC/openSUSE:Factory/.ocaml-logs.new.24530/ocaml-logs.changes 
2026-07-17 01:40:24.743030707 +0200
@@ -1,0 +2,6 @@
+Tue Jul  7 07:07:07 UTC 2026 - [email protected]
+
+- Update to version 0.10.0
+  see included CHANGES.md file for details
+
+-------------------------------------------------------------------

Old:
----
  ocaml-logs-0.9.0.tar.xz

New:
----
  ocaml-logs-0.10.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ocaml-logs.spec ++++++
--- /var/tmp/diff_new_pack.ewvi8F/_old  2026-07-17 01:40:25.623060421 +0200
+++ /var/tmp/diff_new_pack.ewvi8F/_new  2026-07-17 01:40:25.623060421 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ocaml-logs
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,18 +19,18 @@
 %bcond_with     ocaml_lwt
 
 Name:           ocaml-logs
-Version:        0.9.0
+Version:        0.10.0
 Release:        0
 %{?ocaml_preserve_bytecode}
 Summary:        Logging infrastructure for OCaml
 License:        ISC
-Group:          Development/Languages/OCaml
-URL:            https://opam.ocaml.org/packages/logs
+ExclusiveArch:  aarch64 ppc64le riscv64 s390x x86_64
+URL:            https://opam.ocaml.org/packages/logs/
 Source0:        %name-%version.tar.xz
 Patch0:         ocaml-logs.patch
 BuildRequires:  ocaml(ocaml_base_version) >= 4.14
 BuildRequires:  ocaml-dune
-BuildRequires:  ocaml-rpm-macros >= 20250517
+BuildRequires:  ocaml-rpm-macros >= 20260707
 BuildRequires:  ocamlfind(cmdliner)
 BuildRequires:  ocamlfind(compiler-libs)
 BuildRequires:  ocamlfind(fmt)
@@ -47,8 +47,7 @@
 
 %package        devel
 Summary:        Development files for %name
-Group:          Development/Languages/OCaml
-Requires:       %name = %version
+Requires:       %name = %version-%release
 
 %description    devel
 The %name-devel package contains libraries and signature files for

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ewvi8F/_old  2026-07-17 01:40:25.663061772 +0200
+++ /var/tmp/diff_new_pack.ewvi8F/_new  2026-07-17 01:40:25.667061907 +0200
@@ -1,7 +1,7 @@
 <services>
   <service name="tar_scm" mode="manual">
     <param name="filename">ocaml-logs</param>
-    <param name="revision">52d9dbde9d72fd029fe6df0fa4867c343aaed493</param>
+    <param name="revision">350985691e41c4be23b3aadd0e875af669dfc702</param>
     <param name="scm">git</param>
     <param name="submodules">disable</param>
     <param name="url">https://github.com/dbuenzli/logs.git</param>

++++++ ocaml-logs-0.9.0.tar.xz -> ocaml-logs-0.10.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/B0.ml new/ocaml-logs-0.10.0/B0.ml
--- old/ocaml-logs-0.9.0/B0.ml  2025-07-08 23:08:59.000000000 +0200
+++ new/ocaml-logs-0.10.0/B0.ml 2025-11-04 16:50:35.000000000 +0100
@@ -80,6 +80,9 @@
 let test_threaded =
   test ~/"test/test_threaded.ml" ~requires:[logs_fmt; logs_threaded; threads]
 
+let test_mutext_safe =
+  test ~/"test/test_mutex_safe.ml" ~requires:[logs_fmt; logs_threaded; threads]
+
 let test_lwt =
   let requires = [b0_std; logs_fmt; logs_lwt; fmt; fmt_tty; lwt; lwt_unix] in
   test ~/"test/test_lwt.ml" ~requires
@@ -121,7 +124,7 @@
       [ "ocaml", {|>= "4.14.0"|};
         "ocamlfind", {|build|};
         "ocamlbuild", {|build|};
-        "topkg", {|build & >= "1.0.3"|};
+        "topkg", {|build & >= "1.1.0"|};
         "mtime", {|with-test|};]
   in
   B0_pack.make "default" ~doc:"logs package" ~meta ~locked:true @@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/CHANGES.md 
new/ocaml-logs-0.10.0/CHANGES.md
--- old/ocaml-logs-0.9.0/CHANGES.md     2025-07-08 23:08:59.000000000 +0200
+++ new/ocaml-logs-0.10.0/CHANGES.md    2025-11-04 16:50:35.000000000 +0100
@@ -1,3 +1,9 @@
+v0.10.0 2025-11-04 Zagreb
+-------------------------
+
+* Make log mutex immune to raising logging functions.
+  Thanks to Nathan Taylor for the report and the repro (#57).
+
 v0.9.0 2025-07-08 Zagreb
 ------------------------
 
@@ -11,7 +17,7 @@
 * `Logs.format_reporter` and `Logs_fmt.reporter` replace a few format 
   strings and `^^` uses by direct calls to `Format` primitives.
 * Requires OCaml >= 4.14.
-* Use Format.pp_print_text instead of your own.
+* Use Format.pp_print_text instead of our own.
 * Export `logs` from each sub library.
 
 v0.8.0 2025-03-10 La Forclaz (VS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/opam new/ocaml-logs-0.10.0/opam
--- old/ocaml-logs-0.9.0/opam   2025-07-08 23:08:59.000000000 +0200
+++ new/ocaml-logs-0.10.0/opam  2025-11-04 16:50:35.000000000 +0100
@@ -36,7 +36,7 @@
   "ocaml" {>= "4.14.0"}
   "ocamlfind" {build}
   "ocamlbuild" {build}
-  "topkg" {build & >= "1.0.3"}
+  "topkg" {build & >= "1.1.0"}
   "mtime" {with-test}
 ]
 depopts: ["cmdliner" "js_of_ocaml-compiler" "fmt" "lwt" "base-threads"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/src/cli/logs_cli.mli 
new/ocaml-logs-0.10.0/src/cli/logs_cli.mli
--- old/ocaml-logs-0.9.0/src/cli/logs_cli.mli   2025-07-08 23:08:59.000000000 
+0200
+++ new/ocaml-logs-0.10.0/src/cli/logs_cli.mli  2025-11-04 16:50:35.000000000 
+0100
@@ -46,7 +46,7 @@
   Logs.warn (fun m -> m "Something bad may happen in the future.");
   if Logs.err_count () > 0 then 1 else 0
 
-let setup_log style_renderer level =
+let setup_log ~style_renderer ~level =
   Fmt_tty.setup_std_outputs ?style_renderer ();
   Logs.set_level level;
   Logs.set_reporter (Logs_fmt.reporter ())
@@ -54,19 +54,22 @@
 (* Command line interface *)
 
 open Cmdliner
+open Cmdliner.Term.Syntax
 
-let setup_log =
+let cmd =
+  Cmd.make (Cmd.info "tool") @@
   let env = Cmd.Env.info "TOOL_VERBOSITY" in
-  Term.(const setup_log $ Fmt_cli.style_renderer () $ Logs_cli.level ~env ())
+  let+ style_renderer = Fmt_cli.style_renderer ()
+  and+ level = Logs_cli.level ~env ()
+  and+ msg =
+    let doc = "The message to output."  in
+    Arg.(value & pos 0 string "Hello horrible world!" & info [] ~doc)
+  in
+  setup_log ~style_renderer ~level;
+  hello msg
 
-let msg =
-  let doc = "The message to output."  in
-  Arg.(value & pos 0 string "Hello horrible world!" & info [] ~doc)
-
-let main () =
-  let cmd = Cmd.make (Cmd.info "tool") Term.(const hello $ setup_log $ msg) in
-  Cmd.eval' cmd
 
+let main () = Cmd.eval' cmd
 let () = if !Sys.interactive then () else exit (main ())
 ]}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/src/logs.ml 
new/ocaml-logs-0.10.0/src/logs.ml
--- old/ocaml-logs-0.9.0/src/logs.ml    2025-07-08 23:08:59.000000000 +0200
+++ new/ocaml-logs-0.10.0/src/logs.ml   2025-11-04 16:50:35.000000000 +0100
@@ -188,7 +188,11 @@
   let mutex = Atomic.get reporter_mutex' in
   let over () = over (); mutex.unlock () in
   mutex.lock ();
-  (Atomic.get reporter').report src level ~over k msgf
+  try (Atomic.get reporter').report src level ~over k msgf with
+  | exn ->
+      let bt = Printexc.get_raw_backtrace ()  in
+      over ();
+      Printexc.raise_with_backtrace exn bt
 
 let pp_brackets pp_v ppf v =
   Format.pp_print_char ppf '['; pp_v ppf v; Format.pp_print_char ppf ']'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/test/test_mutex_safe.ml 
new/ocaml-logs-0.10.0/test/test_mutex_safe.ml
--- old/ocaml-logs-0.9.0/test/test_mutex_safe.ml        1970-01-01 
01:00:00.000000000 +0100
+++ new/ocaml-logs-0.10.0/test/test_mutex_safe.ml       2025-11-04 
16:50:35.000000000 +0100
@@ -0,0 +1,23 @@
+(*---------------------------------------------------------------------------
+   Copyright (c) 2025 The logs programmers. All rights reserved.
+   SPDX-License-Identifier: ISC
+  ---------------------------------------------------------------------------*)
+
+(* See https://github.com/dbuenzli/logs/issues/57 *)
+
+let src = Logs.Src.create "repro case"
+module Log = (val Logs.src_log src)
+
+let setup_logs () =
+  Logs.set_reporter (Logs_fmt.reporter ());
+  Logs.set_level ~all:true (Some Logs.Debug);
+  Logs_threaded.enable ();
+  ()
+
+let main () =
+  setup_logs ();
+  (try Logs.app (fun _m -> failwith "uh oh...") with Failure _ -> ());
+  Logs.app (fun m -> m "It works!");
+  0
+
+let () = if !Sys.interactive then () else exit (main ())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ocaml-logs-0.9.0/test/tool.ml 
new/ocaml-logs-0.10.0/test/tool.ml
--- old/ocaml-logs-0.9.0/test/tool.ml   2025-07-08 23:08:59.000000000 +0200
+++ new/ocaml-logs-0.10.0/test/tool.ml  2025-11-04 16:50:35.000000000 +0100
@@ -2,7 +2,7 @@
 
 (* Example setup for a simple command line tool with colorful output. *)
 
-let hello _ msg =
+let hello msg =
   Logs.app (fun m -> m "%s" msg);
   Logs.info (fun m -> m "End-user information.");
   Logs.debug (fun m -> m "Developer information.");
@@ -10,7 +10,7 @@
   Logs.warn (fun m -> m "Something bad may happen in the future.");
   if Logs.err_count () > 0 then 1 else 0
 
-let setup_log style_renderer level =
+let setup_log ~style_renderer ~level =
   Fmt_tty.setup_std_outputs ?style_renderer ();
   Logs.set_level level;
   Logs.set_reporter (Logs_fmt.reporter ())
@@ -18,17 +18,20 @@
 (* Command line interface *)
 
 open Cmdliner
+open Cmdliner.Term.Syntax
 
-let setup_log =
+let cmd =
+  Cmd.make (Cmd.info "tool") @@
   let env = Cmd.Env.info "TOOL_VERBOSITY" in
-  Term.(const setup_log $ Fmt_cli.style_renderer () $ Logs_cli.level ~env ())
+  let+ style_renderer = Fmt_cli.style_renderer ()
+  and+ level = Logs_cli.level ~env ()
+  and+ msg =
+    let doc = "The message to output."  in
+    Arg.(value & pos 0 string "Hello horrible world!" & info [] ~doc)
+  in
+  setup_log ~style_renderer ~level;
+  hello msg
 
-let msg =
-  let doc = "The message to output."  in
-  Arg.(value & pos 0 string "Hello horrible world!" & info [] ~doc)
-
-let main () =
-  let cmd = Cmd.v (Cmd.info "tool") Term.(const hello $ setup_log $ msg) in
-  Cmd.eval' cmd
 
+let main () = Cmd.eval' cmd
 let () = if !Sys.interactive then () else exit (main ())

Reply via email to