unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake.
@ 2024-03-27 14:49 Greg Hogan
  2024-03-27 14:52 ` [bug#70031] [core-updates PATCH 01/19] build-system/cmake: Parallelize tests using ctest Greg Hogan
                   ` (18 more replies)
  0 siblings, 19 replies; 21+ messages in thread
From: Greg Hogan @ 2024-03-27 14:49 UTC (permalink / raw)
  To: 70031; +Cc: Greg Hogan

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





^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2024-03-31  0:38 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-27 14:49 [bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake Greg Hogan
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

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).