[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake.
From: |
Greg Hogan |
Subject: |
[bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake. |
Date: |
Wed, 27 Mar 2024 14:49:03 +0000 |
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
- [bug#70031] [core-updates PATCH 00/19] Use CMake in build-system/cmake.,
Greg Hogan <=
- [bug#70031] [core-updates PATCH 03/19] build-system/cmake: Add build., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 01/19] build-system/cmake: Parallelize tests using ctest., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 04/19] build-system/cmake: Add install., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 05/19] gnu: libmedfile: Disable parallel tests., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 07/19] gnu: fish: Fix tests., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 09/19] gnu: igraph: Move test target to check phase., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 02/19] build-system/cmake: Parameterize build system generator., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 06/19] gnu: srt: Disable parallel tests., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 10/19] gnu: inkscape: Move test target to check phase., Greg Hogan, 2024/03/27
- [bug#70031] [core-updates PATCH 11/19] gnu: vigra: Move test target to check phase., Greg Hogan, 2024/03/27