X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/030f6f489fe9544f35ebaf95135acd1dd67ce63f..03c3fd62dfdccf23b019a4135ee6eaddf24f32c7:/gnu/packages/cmake.scm diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index cf3bc406bc..65580c9ff7 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -7,8 +7,8 @@ ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2017, 2018, 2020 Marius Bakke ;;; Copyright © 2018 Arun Isaac -;;; Copyright © 2018 Tobias Geerinckx-Rice -;;; Copyright © 2019 Maxim Cournoyer +;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2019, 2020 Maxim Cournoyer ;;; Copyright © 2019 Pierre-Moana Levesque ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; @@ -31,6 +31,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix deprecation) #:use-module (guix build-system gnu) @@ -43,6 +44,7 @@ #:use-module (gnu packages curl) #:use-module (gnu packages file) #:use-module (gnu packages hurd) + #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libevent) #:use-module (gnu packages ncurses) #:use-module (gnu packages serialization) @@ -52,6 +54,41 @@ #:use-module (ice-9 match) #:use-module (srfi srfi-1)) +(define-public cmake-shared + (let ((commit "8122f2b96c8da38ea41b653cf69958e75fe2129d") + (revision "32")) + (package + (name "cmake-shared") + (version + (git-version "1.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lirios/cmake-shared.git") + (commit commit))) + (file-name + (git-file-name name version)) + (sha256 + (base32 "05avwzqcnliwx9h7qi1kl0iz4smqmxc4vkavyjbmlc6h2b97i58g")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) + (snippet + `(begin + (delete-file-recursively "3rdparty"))))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules))) + (synopsis "Shared CMake functions and macros") + (description "CMake-Shared are shared functions and macros for projects +using the CMake build system.") + (home-page "https://github.com/lirios/cmake-shared/") + (license license:bsd-3)))) + ;;; Build phases shared between 'cmake-bootstrap' and the later variants ;;; that use cmake-build-system. (define %common-build-phases @@ -101,7 +138,7 @@ (version "3.16.5") (source (origin (method url-fetch) - (uri (string-append "https://www.cmake.org/files/v" + (uri (string-append "https://cmake.org/files/v" (version-major+minor version) "/cmake-" version ".tar.gz")) (sha256 @@ -297,6 +334,39 @@ and workspaces that can be used in the compiler environment of your choice.") (package (inherit cmake-minimal) (name "cmake") + (version "3.19.2") + ;; TODO: Move the following source field to the cmake-bootstrap package in + ;; the next rebuild cycle. + (source (origin + (inherit (package-source cmake-bootstrap)) + (uri (string-append "https://cmake.org/files/v" + (version-major+minor version) + "/cmake-" version ".tar.gz")) + (sha256 + (base32 + "1w67w0ak6vf37501dlz9yhnzlvvpw1w10n2nm3hi7yxp4cxzvq73")) + (snippet + (match (origin-snippet (package-source cmake-bootstrap)) + ((_ _ exp ...) + ;; Now we can delete the remaining software bundles. + (append `(begin + (define preserved-files + '(,@%preserved-third-party-files + ;; TODO: Move this file to the + ;; %preserved-third-party-files variable in + ;; the next rebuild cycle. + "Utilities/cm3p" ;CMake header wrappers + ;; Use the bundled JsonCpp during bootstrap + ;; to work around a circular dependency. + ;; TODO: JsonCpp can be built with Meson + ;; instead of CMake, but meson-build-system + ;; currently does not support + ;; cross-compilation. + "Utilities/cmjsoncpp" + ;; LibUV is required to bootstrap the initial + ;; build system. + "Utilities/cmlibuv"))) + exp)))))) (arguments (substitute-keyword-arguments (package-arguments cmake-minimal) ;; Use cmake-minimal this time. @@ -318,6 +388,42 @@ and workspaces that can be used in the compiler environment of your choice.") ,flags)) ((#:phases phases) `(modify-phases ,phases + ;; TODO: Remove this override in the next rebuild cycle and adjust + ;; the %common-build-phases variable instead: the + ;; Utilities/Release/release_cmake.cmake file no longer exists in + ;; version 3.19.0. + (replace 'patch-bin-sh + (lambda _ + ;; Replace "/bin/sh" by the right path in... a lot of + ;; files. + (substitute* + '("Modules/CompilerId/Xcode-3.pbxproj.in" + "Modules/Internal/CPack/CPack.RuntimeScript.in" + "Source/cmGlobalXCodeGenerator.cxx" + "Source/cmLocalUnixMakefileGenerator3.cxx" + "Source/cmExecProgramCommand.cxx" + "Tests/CMakeLists.txt" + "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") + (("/bin/sh") (which "sh"))) + #t)) + ;; TODO: Remove this override in the next rebuild cycle and adjust + ;; the %common-disabled-tests variable instead. + (replace 'check + (lambda* (#:key tests? parallel-tests? #:allow-other-keys) + (let ((skipped-tests (list ,@%common-disabled-tests + ;; This test fails for unknown reason. + "RunCMake.file-GET_RUNTIME_DEPENDENCIES" + ;; This test requires the bundled libuv. + "BootstrapTest"))) + (if tests? + (begin + (invoke "ctest" "-j" (if parallel-tests? + (number->string (parallel-job-count)) + "1") + "--exclude-regex" + (string-append "^(" (string-join skipped-tests "|") ")$"))) + (format #t "test suite not run~%")) + #t))) (add-after 'install 'move-html-doc (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))