unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Greg Hogan <code@greghogan.com>
To: "Liliana Marie Prikler" <liliana.prikler@gmail.com>,
	"Ludovic Courtès" <ludo@gnu.org>,
	guix-devel@gnu.org
Subject: Re: Test parallelism with CMake
Date: Fri, 22 Oct 2021 09:10:56 -0400	[thread overview]
Message-ID: <CA+3U0ZnchSJ4YxOB7hzf6uzBTu4DOQgW_2B_ffSbtQmwFQZmOg@mail.gmail.com> (raw)
In-Reply-To: <3906845baca1424432c1fd5c3ab23c1400695b66.camel@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1850 bytes --]

On Sat, Oct 9, 2021 at 3:56 AM Liliana Marie Prikler <
liliana.prikler@gmail.com> wrote:

> for the purposes of GNU Guix, #:parallel-build? and #:parallel-tests?
> are distinct flags and the latter (if implemented) would apply to the
> check phase.  Our cmake-build-system in this case defers to gnu-build-
> system, which ought to insert -jN as you described.
>

On Thu, Oct 21, 2021 at 3:30 PM Ludovic Courtès <ludo@gnu.org> wrote:

> Does CMake generate makefiles targets that would allow tests to run in
> parallel?  How does that even work in CMake?
>

Hi Liliana and Ludo’,

The cmake-build-system does defer to gnu-build-system, which calls `make
test -jN`; however, CMake generated Makefile specifies 'test' as a single
target (the Ninja generator suffers from the same issue) so `ctest` is run
without parallelism.

To run CMake tests with parallelism the cmake-build-system should directly
call `ctest` with the configured parallelism (same '-jN' argument). The
cmake-build-system's check method is essentially untouched from March, 2013
(commit c6bded8a) so this issue has existed from the beginning.

I made an inelegant patch to my local guix repo, essentially replacing
cmake-build-system:check with a copy of gnu-build-system:check and changing
'apply invoke "make" test-target' to 'apply invoke "ctest"'. This works,
although the package I was working on requires parallel tests to be
disabled. Once the expectation is set that code will be run serially it is
difficult to change the default to parallel execution.

It seems that we should at a minimum document the issue in
cmake-build-system:check. We could patch cmake-build-system to enable test
parallelism and explicitly disable that setting for packages which succeed
before but fail after making the change. What do you think?

Greg

[-- Attachment #2: Type: text/html, Size: 2538 bytes --]

  parent reply	other threads:[~2021-10-22 13:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-09  7:56 Test parallelism with CMake Liliana Marie Prikler
2021-10-12 17:28 ` Greg Hogan
2021-10-22 13:10 ` Greg Hogan [this message]
2021-10-22 18:28   ` Liliana Marie Prikler
2021-10-29 12:09   ` Ludovic Courtès
2021-11-03 14:47     ` Greg Hogan
2021-11-03 17:58       ` Liliana Marie Prikler
  -- strict thread matches above, loose matches on Subject: below --
2021-10-08 11:07 Greg Hogan
2021-10-21 19:30 ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+3U0ZnchSJ4YxOB7hzf6uzBTu4DOQgW_2B_ffSbtQmwFQZmOg@mail.gmail.com \
    --to=code@greghogan.com \
    --cc=guix-devel@gnu.org \
    --cc=liliana.prikler@gmail.com \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).