unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Greg Hogan <code@greghogan.com>
To: 70031@debbugs.gnu.org
Cc: Greg Hogan <code@greghogan.com>
Subject: [bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake.
Date: Wed, 27 Mar 2024 14:49:03 +0000	[thread overview]
Message-ID: <cover.1711549374.git.code@greghogan.com> (raw)

Following up on this discussion from 2+ years ago:
  https://lists.gnu.org/archive/html/guix-devel/2021-10/msg00055.html

The current cmake-build-system defers to gnu-build-system to build and
check packages. This patch adapts the cmake-build-system to use CMake
commands. The benefits include:

1) Tests can run in parallel. Make (from the gnu-build-system) treats
ctest as a single target so cannot parallelize tests. By directly
running ctest the tests are run with optional parallelism.

2) Alternative generators, namely Ninja. When configured with an
alternative generator the CMake build, check, and install commands will
use that generator and the package need not replace each phase.

The simplification can be seen in the included patch for astroid. Ninja
must still be included (both the module and native input) and the
generator specified:

  (use-modules
   (gnu packages ninja))

  (arguments
   (list #:generator "Ninja"))

  (native-inputs (list ninja))

This compares with the current requirement to override flags and phases:

  (arguments
   (list
    #:configure-flags #~(list "-GNinja")
    #:phases
    #~(modify-phases %standard-phases
        (replace 'build
          (lambda _
            (invoke "ninja" "-j" (number->string (parallel-job-count)))))
        (replace 'check
          (lambda* (#:key tests? #:allow-other-keys)
            (when tests?
              (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
              (invoke "ctest" "."))))
        (replace 'install
          (lambda _
            (invoke "ninja" "install"))))))

It would be nice to include the ninja module and ninja as a native input
by default when using the cmake-build-system, but I do not think this is
possible due to circular dependencies with Python and CMake, the two
supported build methods for Ninja.

Greg Hogan (19):
  build-system/cmake: Parallelize tests using ctest.
  build-system/cmake: Parameterize build system generator.
  build-system/cmake: Add build.
  build-system/cmake: Add install.
  gnu: libmedfile: Disable parallel tests.
  gnu: srt: Disable parallel tests.
  gnu: fish: Fix tests.
  gnu: vulkan-loader: Disable parallel tests.
  gnu: igraph: Move test target to check phase.
  gnu: inkscape: Move test target to check phase.
  gnu: vigra: Move test target to check phase.
  gnu: cpp-httplib: Disable parallel tests.
  gnu: libical: Disable parallel tests.
  gnu: astroid: Remove custom phases.
  gnu: websocketpp: Disable parallel tests.
  gnu: mbedtls-lts: Disable parallel tests.
  gnu: scotch: Disable parallel tests.
  gnu: evolution-data-server: Disable parallel tests.
  gnu: aws-c-common: Disable parallel tests.

 doc/guix.texi                     |  4 +++
 gnu/packages/c.scm                |  3 +-
 gnu/packages/calendar.scm         |  1 +
 gnu/packages/cpp.scm              |  3 +-
 gnu/packages/engineering.scm      |  3 +-
 gnu/packages/gnome.scm            |  1 +
 gnu/packages/graph.scm            |  5 +++-
 gnu/packages/image.scm            |  9 ++++--
 gnu/packages/inkscape.scm         |  8 ++++--
 gnu/packages/mail.scm             | 16 ++---------
 gnu/packages/maths.scm            |  3 +-
 gnu/packages/networking.scm       |  3 +-
 gnu/packages/shells.scm           |  5 ++++
 gnu/packages/tls.scm              |  3 +-
 gnu/packages/vulkan.scm           |  1 +
 gnu/packages/web.scm              |  3 +-
 guix/build-system/cmake.scm       |  4 +++
 guix/build/cmake-build-system.scm | 46 +++++++++++++++++++++++++------
 18 files changed, 85 insertions(+), 36 deletions(-)


base-commit: 656baadf83f2812c0ff79f4f2f0b5f1e927ed8a5
-- 
2.44.0





             reply	other threads:[~2024-03-27 14:50 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27 14:49 Greg Hogan [this message]
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 01/19] build-system/cmake: Parallelize tests using ctest Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 02/19] build-system/cmake: Parameterize build system generator Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 03/19] build-system/cmake: Add build Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 04/19] build-system/cmake: Add install Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 05/19] gnu: libmedfile: Disable parallel tests Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 06/19] gnu: srt: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 07/19] gnu: fish: Fix tests Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 08/19] gnu: vulkan-loader: Disable parallel tests Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 09/19] gnu: igraph: Move test target to check phase Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 10/19] gnu: inkscape: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 11/19] gnu: vigra: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 12/19] gnu: cpp-httplib: Disable parallel tests Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 13/19] gnu: libical: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 14/19] gnu: astroid: Remove custom phases Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 15/19] gnu: websocketpp: Disable parallel tests Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 16/19] gnu: mbedtls-lts: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 17/19] gnu: scotch: " Greg Hogan
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 18/19] gnu: evolution-data-server: " Greg Hogan
2024-03-31  0:36   ` Maxim Cournoyer
2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 19/19] gnu: aws-c-common: " Greg Hogan

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=cover.1711549374.git.code@greghogan.com \
    --to=code@greghogan.com \
    --cc=70031@debbugs.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).