summaryrefslogtreecommitdiff
path: root/gnu/packages/cmake.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/cmake.scm')
-rw-r--r--gnu/packages/cmake.scm184
1 files changed, 56 insertions, 128 deletions
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 65580c9ff7..68d215da93 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -109,7 +109,6 @@ using the CMake build system.")
"Source/cmGlobalXCodeGenerator.cxx"
"Source/cmLocalUnixMakefileGenerator3.cxx"
"Source/cmExecProgramCommand.cxx"
- "Utilities/Release/release_cmake.cmake"
"Tests/CMakeLists.txt"
"Tests/RunCMake/File_Generate/RunCMakeTest.cmake")
(("/bin/sh") (which "sh")))
@@ -122,20 +121,24 @@ using the CMake build system.")
;; This test requires network access.
"CTestTestUpload"
;; This test requires 'ldconfig' which is not available in Guix.
- "RunCMake.install"))
+ "RunCMake.install"
+ ;; This test fails for unknown reason.
+ "RunCMake.file-GET_RUNTIME_DEPENDENCIES"))
(define %preserved-third-party-files
'(;; 'Source/cm_getdate.c' includes archive_getdate.c wholesale, so it must
;; be available along with the required headers.
"Utilities/cmlibarchive/libarchive/archive_getdate.c"
- "Utilities/cmlibarchive/libarchive/archive_getdate.h"))
+ "Utilities/cmlibarchive/libarchive/archive_getdate.h"
+ ;; CMake header wrappers.
+ "Utilities/cm3p"))
;;; The "bootstrap" CMake. It is used to build 'cmake-minimal' below, as well
;;; as any dependencies that need cmake-build-system.
(define-public cmake-bootstrap
(package
(name "cmake-bootstrap")
- (version "3.16.5")
+ (version "3.20.2")
(source (origin
(method url-fetch)
(uri (string-append "https://cmake.org/files/v"
@@ -143,49 +146,7 @@ using the CMake build system.")
"/cmake-" version ".tar.gz"))
(sha256
(base32
- "1z4bb8z6b4dvq5hrvajrf1hyybqay3xybyimf71w1jgcp180nxjz"))
- (modules '((guix build utils)
- (ice-9 ftw)))
- (snippet
- `(begin
- ;; CMake bundles its dependencies in the "Utilities" directory.
- ;; Delete those to ensure the system libraries are used.
- (define preserved-files
- '(,@%preserved-third-party-files
- ;; 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"))
-
- (file-system-fold (lambda (dir stat result) ;enter?
- (or (string=? "Utilities" dir) ;init
- ;; The bundled dependencies are
- ;; distinguished by having a "cm"
- ;; prefix to their upstream names.
- (and (string-prefix? "Utilities/cm" dir)
- (not (member dir preserved-files)))))
- (lambda (file stat result) ;leaf
- (unless (or (member file preserved-files)
- ;; Preserve top-level files.
- (string=? "Utilities"
- (dirname file)))
- (delete-file file)))
- (const #t) ;down
- (lambda (dir stat result) ;up
- (when (equal? (scandir dir) '("." ".."))
- (rmdir dir)))
- (const #t) ;skip
- (lambda (file stat errno result)
- (format (current-error-port)
- "warning: failed to delete ~a: ~a~%"
- file (strerror errno)))
- #t
- "Utilities"
- lstat)
- #t))
+ "0kjlb7sxbwg8z4027c3jjcmyjh9d36p0r9d4nqxynyaijz5nxkxf"))
(patches (search-patches "cmake-curl-certificates.patch"))))
(build-system gnu-build-system)
(arguments
@@ -241,14 +202,13 @@ using the CMake build system.")
(apply invoke "./configure" configure-flags))))))
(inputs
`(("bzip2" ,bzip2)
- ("curl" ,curl-minimal)
+ ("curl" ,curl)
("expat" ,expat)
("file" ,file)
("libarchive" ,libarchive)
,@(if (hurd-target?)
'()
`(("libuv" ,libuv))) ;not supported on the Hurd
- ("ncurses" ,ncurses) ;required for ccmake
("rhash" ,rhash)
("zlib" ,zlib)))
(native-search-paths
@@ -286,17 +246,41 @@ and workspaces that can be used in the compiler environment of your choice.")
(name "cmake-minimal")
(source (origin
(inherit (package-source cmake-bootstrap))
+ ;; Purge CMakes bundled dependencies as they are no longer needed.
+ (modules '((ice-9 ftw)))
(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))
- exp))))))
+ `(begin
+ (define preserved-files ',%preserved-third-party-files)
+
+ (file-system-fold (lambda (dir stat result) ;enter?
+ (or (string=? "Utilities" dir) ;init
+ ;; The bundled dependencies are
+ ;; distinguished by having a "cm"
+ ;; prefix to their upstream names.
+ (and (string-prefix? "Utilities/cm" dir)
+ (not (member dir preserved-files)))))
+ (lambda (file stat result) ;leaf
+ (unless (or (member file preserved-files)
+ ;; Preserve top-level files.
+ (string=? "Utilities"
+ (dirname file)))
+ (delete-file file)))
+ (const #t) ;down
+ (lambda (dir stat result) ;up
+ (when (equal? (scandir dir) '("." ".."))
+ (rmdir dir)))
+ (const #t) ;skip
+ (lambda (file stat errno result)
+ (format (current-error-port)
+ "warning: failed to delete ~a: ~a~%"
+ file (strerror errno)))
+ #t
+ "Utilities"
+ lstat)
+ #t))))
(inputs
- `(("curl" ,curl)
- ("jsoncpp" ,jsoncpp)
- ,@(alist-delete "curl" (package-inputs cmake-bootstrap))))
+ `(("jsoncpp" ,jsoncpp)
+ ,@(package-inputs cmake-bootstrap)))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
@@ -311,6 +295,15 @@ and workspaces that can be used in the compiler environment of your choice.")
#:phases
(modify-phases %standard-phases
,@%common-build-phases
+ (add-after 'install 'delete-help-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (delete-file-recursively
+ (string-append (assoc-ref outputs "out")
+ "/share/cmake-"
+ ,(version-major+minor
+ (package-version cmake-bootstrap))
+ "/Help"))
+ #t))
(replace 'check
(lambda* (#:key tests? parallel-tests? #:allow-other-keys)
(let ((skipped-tests (list ,@%common-disabled-tests
@@ -334,39 +327,6 @@ 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.
@@ -388,42 +348,7 @@ 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)))
+ (delete 'delete-help-documentation)
(add-after 'install 'move-html-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@@ -436,6 +361,9 @@ and workspaces that can be used in the compiler environment of your choice.")
(string-append doc html))
(delete-file-recursively (string-append out html))
#t)))))))
+ (inputs
+ `(("ncurses" ,ncurses) ;required for ccmake
+ ,@(package-inputs cmake-minimal)))
;; Extra inputs required to build the documentation.
(native-inputs
`(,@(package-native-inputs cmake-minimal)