X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/1eefbb2693f0f29f8f095af9f067240b85e735aa..fc1adab1487e5ea3c5f6341263df14414ba4e784:/gnu/packages/cmake.scm diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 87a70decc7..1cb1e06993 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -1,6 +1,9 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014 Ian Denhardt +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,38 +21,40 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages cmake) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:select (bsd-3)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages backup) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) #:use-module (gnu packages file) - #:use-module (srfi srfi-1)) + #:use-module (gnu packages xml)) (define-public cmake (package (name "cmake") - (version "2.8.12") + (version "3.3.2") (source (origin (method url-fetch) - (uri (string-append - "http://www.cmake.org/files/v" - (string-join (take (string-split version #\.) 2) - ".") - "/cmake-" version ".tar.gz")) + (uri (string-append "https://www.cmake.org/files/v" + (version-major+minor version) + "/cmake-" version ".tar.gz")) (sha256 - (base32 "11q21vyrr6c6smyjy81k2k07zmn96ggjia9im9cxwvj0n88bm1fq")) - (patches (list (search-patch "cmake-fix-tests.patch"))))) + (base32 + "08pwy9ip9cgwgynhn5vrjw8drw29gijy1rmziq22n65zds6ifnp7")) + (patches (search-patches "cmake-fix-tests.patch")))) (build-system gnu-build-system) (arguments `(#:test-target "test" - #:phases (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Replace "/bin/sh" by the right path in... a lot of - ;; files. - (substitute* + #:phases (alist-cons-before + 'configure 'patch-bin-sh + (lambda _ + ;; Replace "/bin/sh" by the right path in... a lot of + ;; files. + (substitute* '("Modules/CompilerId/Xcode-3.pbxproj.in" "Modules/CompilerId/Xcode-1.pbxproj.in" "Modules/CompilerId/Xcode-2.pbxproj.in" @@ -58,33 +63,59 @@ "Source/cmGlobalXCodeGenerator.cxx" "Source/CTest/cmCTestBatchTestHandler.cxx" "Source/cmLocalUnixMakefileGenerator3.cxx" + "Source/cmExecProgramCommand.cxx" "Utilities/cmbzip2/Makefile-libbz2_so" "Utilities/Release/release_cmake.cmake" - "Utilities/cmlibarchive/libarchive/archive_write_set_format_shar.c" - "Tests/CMakeLists.txt") - (("/bin/sh") (which "sh"))) - (zero? (system* - "./configure" - (string-append "--prefix=" out) - ;; By default, the man pages and other docs land - ;; in PREFIX/man and PREFIX/doc, but we want them - ;; in share/{man,doc}. Note that unlike - ;; autoconf-generated configure scripts, cmake's - ;; configure prepends "PREFIX/" to what we pass - ;; to --mandir and --docdir. - "--mandir=share/man" - ,(string-append - "--docdir=share/doc/cmake-" - (string-join (take (string-split version #\.) 2) - ".")))))) - %standard-phases))) + "Utilities/cmlibarchive/libarchive/\ +archive_write_set_format_shar.c" + "Tests/CMakeLists.txt" + "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") + (("/bin/sh") (which "sh")))) + (alist-cons-before + 'configure 'set-paths + (lambda _ + ;; Help cmake's bootstrap process to find system libraries + (begin + (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) + (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH")) + ;; Get verbose output from failed tests + (setenv "CTEST_OUTPUT_ON_FAILURE" "TRUE"))) + (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? (system* + "./configure" + (string-append "--prefix=" out) + "--system-libs" + "--no-system-jsoncpp" ; not packaged yet + ;; By default, the man pages and other docs land + ;; in PREFIX/man and PREFIX/doc, but we want them + ;; in share/{man,doc}. Note that unlike + ;; autoconf-generated configure scripts, cmake's + ;; configure prepends "PREFIX/" to what we pass + ;; to --mandir and --docdir. + "--mandir=share/man" + ,(string-append + "--docdir=share/doc/cmake-" + (version-major+minor version)))))) + %standard-phases))))) (inputs - `(("file" ,file))) + `(("file" ,file) + ("curl" ,curl) + ("zlib" ,zlib) + ("expat" ,expat) + ("bzip2" ,bzip2) + ("libarchive" ,libarchive))) + (native-search-paths + (list (search-path-specification + (variable "CMAKE_PREFIX_PATH") + (files '(""))))) (home-page "http://www.cmake.org/") (synopsis "Cross-platform build system") (description "CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform -and compiler independent configuration files. CMake generates native makefiles +and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.") (license bsd-3)))