~ruther/guix-local

dfcc96d8f48716ae5aefb383c58b153d5bcb407c — Maxim Cournoyer 4 years ago 3e026fc
build: meson: Replace the 'test-target' argument by 'test-options'.

This change is motivated by the need to disable the default 30 seconds timeout
that Meson uses (see: https://gitlab.gnome.org/GNOME/glib/-/issues/2522), and
also by desire to specify extra options to run the check phase without having
to override it.

* guix/build-system/meson.scm (meson-build) <test-target>: Replace argument
with...
<test-options>: ... this one.
* guix/build/meson-build-system.scm (check): Invoke 'meson test' instead of
'ninja test-target', as the former is configurable via options.
* doc/guix.texi (Build Systems) <meson-build-system>: Update doc.
3 files changed, 20 insertions(+), 16 deletions(-)

M doc/guix.texi
M guix/build-system/meson.scm
M guix/build/meson-build-system.scm
M doc/guix.texi => doc/guix.texi +4 -2
@@ 8746,8 8746,10 @@ The phase runs @code{ninja} to build the package in parallel by default, but
this can be changed with @code{#:parallel-build?}.

@item check
The phase runs @code{ninja} with the target specified in @code{#:test-target},
which is @code{"test"} by default.
The phase runs @samp{meson test} with a base set of options that cannot
be overridden.  This base set of options can be extended via the
@code{#:test-options} argument, for example to select or skip a specific
test suite.

@item install
The phase runs @code{ninja install} and can not be changed.

M guix/build-system/meson.scm => guix/build-system/meson.scm +6 -6
@@ 169,7 169,7 @@ TRIPLET."
                      (search-paths '())
                      (build-type "debugoptimized")
                      (tests? #t)
                      (test-target "test")
                      (test-options ''())
                      (glib-or-gtk? #f)
                      (parallel-build? #t)
                      (parallel-tests? #f)


@@ 218,7 218,7 @@ has a 'meson.build' file."
                                   configure-flags)
                             #:build-type #$build-type
                             #:tests? #$tests?
                             #:test-target #$test-target
                             #:test-options #$(sexp->gexp test-options)
                             #:parallel-build? #$parallel-build?
                             #:parallel-tests? #$parallel-tests?
                             #:validate-runpath? #$validate-runpath?


@@ 251,7 251,7 @@ has a 'meson.build' file."

                            (build-type "debugoptimized")
                            (tests? #f)
                            (test-target "test")
                            (test-options ''())
                            (glib-or-gtk? #f)
                            (parallel-build? #t)
                            (parallel-tests? #f)


@@ 281,7 281,7 @@ SOURCE has a 'meson.build' file."
    (if (null? target-inputs)
        (input-tuples->gexp host-inputs)
        #~(append #$(input-tuples->gexp host-inputs)
                  #+(input-tuples->gexp target-inputs))))
              #+(input-tuples->gexp target-inputs))))
  (define builder
    (with-imported-modules imported-modules
      #~(begin


@@ 306,7 306,7 @@ SOURCE has a 'meson.build' file."
                       #:native-inputs #+(input-tuples->gexp build-inputs)
                       #:search-paths '#$(sexp->gexp
                                          (map search-path-specification->sexp
                                                     search-paths))
                                               search-paths))
                       #:native-search-paths '#$(sexp->gexp
                                                 (map search-path-specification->sexp
                                                      native-search-paths))


@@ 318,7 318,7 @@ SOURCE has a 'meson.build' file."
                                                   configure-flags))
                       #:build-type #$build-type
                       #:tests? #$tests?
                       #:test-target #$test-target
                       #:test-options #$(sexp->gexp test-options)
                       #:parallel-build? #$parallel-build?
                       #:parallel-tests? #$parallel-tests?
                       #:validate-runpath? #$validate-runpath?

M guix/build/meson-build-system.scm => guix/build/meson-build-system.scm +10 -8
@@ 2,6 2,7 @@
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 63,16 64,17 @@
                           (number->string (parallel-job-count))
                           "1")))

(define* (check #:key test-target parallel-tests? tests?
(define* (check #:key tests? test-options parallel-tests?
                #:allow-other-keys)
  (setenv "MESON_TESTTHREADS"
          (if parallel-tests?
              (number->string (parallel-job-count))
              "1"))
  (if tests?
      (invoke "ninja" test-target)
      (format #t "test suite not run~%"))
  #t)
      (begin
        (setenv "MESON_TESTTHREADS"
                (if parallel-tests?
                    (number->string (parallel-job-count))
                    "1"))
        ;; Always provide "-t 0" to disable the 30 s default timeout.
        (apply invoke "meson" "test" "--print-errorlogs" "-t" "0" test-options))
      (format #t "test suite not run~%")))

(define* (install #:rest args)
  (invoke "ninja" "install"))