~ruther/guix-local

f361e7fa4af8190701cb5326b4b046cdb5c91a12 — Greg Hogan 1 year, 3 months ago 8b53cfe
gnu: cmake-build: Retry failed tests.

* guix/build-system/cmake.scm (cmake-build, cmake-cross-build),
* guix/build-system/qt.scm (qt-build, qt-cross-build): Add
test-repeat-until-pass? and test-repeat-until-pass-count fields.
* guix/build/cmake-build-system.scm (check): Add and use new fields.
* doc/guix.texi: Document new parameters.

Change-Id: I046dfc86a18fb2a2be4ae362c1226c2f8cab129c
M doc/guix.texi => doc/guix.texi +10 -0
@@ 9728,6 9728,16 @@ responsible for writing the input files for the native build system.
@item #:test-exclude
Tests matching this regular expression are excluded from testing by
@url{https://cmake.org/cmake/help/latest/manual/ctest.1.html, ctest}.

@item #:test-repeat-until-pass?
Directs @url{https://cmake.org/cmake/help/latest/manual/ctest.1.html, ctest} to
@url{https://cmake.org/cmake/help/latest/manual/ctest.1.html#cmdoption-ctest-repeat, repeat}
failed tests up to @code{#:test-repeat-until-pass-count} times and is enabled by
default.

@item #:test-repeat-until-pass-count
When @code{#:test-repeat-until-pass?} is enabled this parameter sets the maximum
number of failures for each test. The default is @code{5}.
@end table
@end defvar


M guix/build-system/cmake.scm => guix/build-system/cmake.scm +8 -0
@@ 129,6 129,8 @@
                      (build-type "RelWithDebInfo")
                      (tests? #t)
                      (test-exclude "")
                      (test-repeat-until-pass? #t)
                      (test-repeat-until-pass-count 5)
                      (parallel-build? #t) (parallel-tests? #t)
                      (validate-runpath? #t)
                      (patch-shebangs? #t)


@@ 170,6 172,8 @@ provides a 'CMakeLists.txt' file as its build system."
                             #:build-type #$build-type
                             #:tests? #$tests?
                             #:test-exclude #$test-exclude
                             #:test-repeat-until-pass? #$test-repeat-until-pass?
                             #:test-repeat-until-pass-count #$test-repeat-until-pass-count
                             #:parallel-build? #$parallel-build?
                             #:parallel-tests? #$parallel-tests?
                             #:validate-runpath? #$validate-runpath?


@@ 209,6 213,8 @@ provides a 'CMakeLists.txt' file as its build system."
                            (build-type "RelWithDebInfo")
                            (tests? #f) ; nothing can be done
                            (test-exclude "")
                            (test-repeat-until-pass? #t)
                            (test-repeat-until-pass-count 5)
                            (parallel-build? #t) (parallel-tests? #t)
                            (validate-runpath? #t)
                            (patch-shebangs? #t)


@@ 273,6 279,8 @@ build system."
                       #:build-type #$build-type
                       #:tests? #$tests?
                       #:test-exclude #$test-exclude
                       #:test-repeat-until-pass? #$test-repeat-until-pass?
                       #:test-repeat-until-pass-count #$test-repeat-until-pass-count
                       #:parallel-build? #$parallel-build?
                       #:parallel-tests? #$parallel-tests?
                       #:validate-runpath? #$validate-runpath?

M guix/build-system/qt.scm => guix/build-system/qt.scm +8 -0
@@ 127,6 127,8 @@
                   (build-type "RelWithDebInfo")
                   (tests? #t)
                   (test-exclude "")
                   (test-repeat-until-pass? #t)
                   (test-repeat-until-pass-count 5)
                   (parallel-build? #t) (parallel-tests? #t)
                   (validate-runpath? #t)
                   (patch-shebangs? #t)


@@ 168,6 170,8 @@ provides a 'CMakeLists.txt' file as its build system."
                    #:build-type #$build-type
                    #:tests? #$tests?
                    #:test-exclude #$test-exclude
                    #:test-repeat-until-pass? #$test-repeat-until-pass?
                    #:test-repeat-until-pass-count #$test-repeat-until-pass-count
                    #:parallel-build? #$parallel-build?
                    #:parallel-tests? #$parallel-tests?
                    #:validate-runpath? #$validate-runpath?


@@ 206,6 210,8 @@ provides a 'CMakeLists.txt' file as its build system."
                         (build-type "RelWithDebInfo")
                         (tests? #f)              ; nothing can be done
                         (test-exclude "")
                         (test-repeat-until-pass? #t)
                         (test-repeat-until-pass-count 5)
                         (parallel-build? #t) (parallel-tests? #f)
                         (validate-runpath? #t)
                         (patch-shebangs? #t)


@@ 260,6 266,8 @@ build system."
                    #:build-type #$build-type
                    #:tests? #$tests?
                    #:test-exclude #$test-exclude
                    #:test-repeat-until-pass? #$test-repeat-until-pass?
                    #:test-repeat-until-pass-count #$test-repeat-until-pass-count
                    #:parallel-build? #$parallel-build?
                    #:parallel-tests? #$parallel-tests?
                    #:validate-runpath? #$validate-runpath?

M guix/build/cmake-build-system.scm => guix/build/cmake-build-system.scm +8 -1
@@ 110,6 110,8 @@

(define* (check #:key (tests? #t) (test-exclude "")
                (parallel-tests? #t)
                (test-repeat-until-pass? #t)
                (test-repeat-until-pass-count 5)
                (test-suite-log-regexp %test-suite-log-regexp)
                #:allow-other-keys)
  (if tests?


@@ 128,7 130,12 @@
                         "--test-load"
                         ,(number->string (total-processor-count)))
                       ;; When unset CMake defers to the build system.
                       '("-j" "1")))))
                       '("-j" "1"))
                 ,@(if test-repeat-until-pass?
                       `("--repeat"
                         ,(string-append "until-pass:"
                                         (number->string test-repeat-until-pass-count)))
                       '()))))
      (format #t "test suite not run~%")))

(define* (install #:rest args)