GNU bug report logs - #70031
[core-updates PATCH 00/19] Use CMake in build-system/cmake.

Previous Next

Package: guix-patches;

Reported by: Greg Hogan <code <at> greghogan.com>

Date: Wed, 27 Mar 2024 14:50:01 UTC

Severity: normal

Tags: patch

Full log


Message #8 received at 70031 <at> debbugs.gnu.org (full text, mbox):

From: Greg Hogan <code <at> greghogan.com>
To: 70031 <at> debbugs.gnu.org
Cc: Greg Hogan <code <at> greghogan.com>
Subject: [core-updates PATCH 01/19] build-system/cmake: Parallelize tests
 using ctest.
Date: Wed, 27 Mar 2024 14:52:26 +0000
* guix/build/cmake-build-system.scm (check): Replace call to gnu-build's
non-parallelizable check with an implementation using cmake's ctest.
---
 guix/build/cmake-build-system.scm | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index d1ff5071be5..ea342ff2ac9 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -23,6 +23,7 @@ (define-module (guix build cmake-build-system)
   #:use-module ((guix build gnu-build-system) #:prefix gnu:)
   #:use-module (guix build utils)
   #:use-module (ice-9 match)
+  #:use-module (srfi srfi-34)
   #:export (%standard-phases
             cmake-build))
 
@@ -77,12 +78,25 @@ (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
       (format #t "running 'cmake' with arguments ~s~%" args)
       (apply invoke "cmake" args))))
 
-(define* (check #:key (tests? #t) (parallel-tests? #t) (test-target "test")
+(define %test-suite-log-regexp
+  ;; Name of test suite log files as commonly found in CMake.
+  "^LastTestFailed\\.log$")
+
+(define* (check #:key (tests? #t) (parallel-tests? #t)
+                (test-suite-log-regexp %test-suite-log-regexp)
                 #:allow-other-keys)
-  (let ((gnu-check (assoc-ref gnu:%standard-phases 'check)))
-    (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
-    (gnu-check #:tests? tests? #:test-target test-target
-              #:parallel-tests? parallel-tests?)))
+  (if tests?
+      (guard (c ((invoke-error? c)
+                 ;; Dump the test suite log to facilitate debugging.
+                 (display "\nTest suite failed, dumping logs.\n"
+                          (current-error-port))
+                 (gnu:dump-file-contents "." test-suite-log-regexp)
+                 (raise c)))
+        (apply invoke "ctest" "--output-on-failure"
+               `(,@(if parallel-tests?
+                       `("-j" ,(number->string (parallel-job-count)))
+                       '()))))
+      (format #t "test suite not run~%")))
 
 (define %standard-phases
   ;; Everything is as with the GNU Build System except for the `configure'
-- 
2.44.0





This bug report was last modified 232 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.