guix_mirror_bot pushed a commit to branch master
in repository guix.

commit b2881fc187e56366dd75540b7871748080d28dcd
Author: Jason Conroy <[email protected]>
AuthorDate: Fri Sep 26 18:43:19 2025 +0000

    gnu: ocaml: make test suite run faster with less flakiness.
    
    * gnu/packages/ocaml.scm (ocaml-5.0):
    [arguments]:
    <#:parallel-tests?>: disable.
    <#:phases>{enable-parallel-tests}: patch `tests` build target to enable
    parallelism via GNU Parallel.
    [native-inputs]: add `parallel`.
    
    * gnu/packages/ocaml.scm: (ocaml-5.3): inherits the changes above via 
`ocaml-5.0`.
    
    Change-Id: I0d25350a04b89585f5526cedbf7420d51d40ab34
    Signed-off-by: Julien Lepiller <[email protected]>
---
 gnu/packages/ocaml.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 50f912e62d..205dddc575 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -75,6 +75,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages node)
+  #:use-module (gnu packages parallel)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -216,16 +217,25 @@ This package produces a native @command{ocamlc} and a 
bytecode @command{ocamllex
             (files (list "lib/ocaml/site-lib/stubslibs"
                          "lib/ocaml/site-lib/stublibs")))))
     (native-inputs
-     (list perl pkg-config))
+     (list parallel perl pkg-config))
     (inputs
      (list libx11 libiberty ;needed for objdump support
            zlib))                       ;also needed for objdump support
     (arguments
      `(#:configure-flags '("--enable-ocamltest")
        #:test-target "tests"
+       ;; This doesn't have the desired effect and makes test runs less
+       ;; stable. See https://codeberg.org/guix/guix/pulls/2933.
+       #:parallel-tests? #f
        #:make-flags '("defaultentry")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'enable-parallel-tests
+           (lambda _
+             ;; Patch the `tests` build target to enable a special parallel
+             ;; execution mode based on GNU Parallel.
+             (substitute* "Makefile"
+               (("-C testsuite all") "-C testsuite parallel"))))
          (add-after 'unpack 'patch-/bin/sh-references
            (lambda* (#:key inputs #:allow-other-keys)
              (let* ((sh (search-input-file inputs "/bin/sh"))

Reply via email to