From b6a64843c6d651903bf6bee4cd029f5ac48c0858 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Tue, 12 Mar 2013 04:40:00 +0100 Subject: [PATCH] gnu: Add cmake. * gnu/packages/cmake.scm: New file. * gnu/packages/patches/cmake-fix-tests.patch: New file. * Makefile.am: Add them. --- Makefile.am | 2 + gnu/packages/cmake.scm | 78 ++++++++++++++++++++++ gnu/packages/patches/cmake-fix-tests.patch | 45 +++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 gnu/packages/cmake.scm create mode 100644 gnu/packages/patches/cmake-fix-tests.patch diff --git a/Makefile.am b/Makefile.am index 8fac0d60c2..3229f16c92 100644 --- a/Makefile.am +++ b/Makefile.am @@ -67,6 +67,7 @@ MODULES = \ gnu/packages/bootstrap.scm \ gnu/packages/cdrom.scm \ gnu/packages/check.scm \ + gnu/packages/cmake.scm \ gnu/packages/compression.scm \ gnu/packages/cpio.scm \ gnu/packages/curl.scm \ @@ -187,6 +188,7 @@ dist_patch_DATA = \ gnu/packages/patches/automake-skip-amhello-tests.patch \ gnu/packages/patches/bigloo-gc-shebangs.patch \ gnu/packages/patches/binutils-ld-new-dtags.patch \ + gnu/packages/patches/cmake-fix-tests.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \ gnu/packages/patches/emacs-configure-sh.patch \ diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm new file mode 100644 index 0000000000..734f55f330 --- /dev/null +++ b/gnu/packages/cmake.scm @@ -0,0 +1,78 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Cyril Roelandt +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages cmake) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages file)) + +(define-public cmake + (package + (name "cmake") + (version "2.8.10.2") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.cmake.org/files/v" + (substring version 0 + (string-index version #\. (+ 1 (string-index version #\.)))) + "/cmake-" version ".tar.gz")) + (sha256 + (base32 "1c8fj6i2x9sb39wc9av2ighj415mw33cxfrlfpafcvm0knrlylnf")))) + (build-system gnu-build-system) + (arguments + '(#:test-target "test" + #:patches (list (assoc-ref %build-inputs "fix-tests")) + #:patch-flags '("-p0") + #: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* + '("Modules/CompilerId/Xcode-3.pbxproj.in" + "Modules/CompilerId/Xcode-1.pbxproj.in" + "Modules/CompilerId/Xcode-2.pbxproj.in" + "Modules/CPack.RuntimeScript.in" + "Source/cmakexbuild.cxx" + "Source/cmGlobalXCodeGenerator.cxx" + "Source/CTest/cmCTestBatchTestHandler.cxx" + "Source/cmLocalUnixMakefileGenerator3.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))))) + %standard-phases))) + (inputs + `(("file" ,file) + ("fix-tests" ,(search-patch "cmake-fix-tests.patch")))) + (home-page "http://www.cmake.org/") + (synopsis "A cross-platform, open-source 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 workspaces that can be used in the compiler environment of your choice.") + (license bsd-3))) diff --git a/gnu/packages/patches/cmake-fix-tests.patch b/gnu/packages/patches/cmake-fix-tests.patch new file mode 100644 index 0000000000..ae28ca336b --- /dev/null +++ b/gnu/packages/patches/cmake-fix-tests.patch @@ -0,0 +1,45 @@ +--- Tests/CMakeLists.txt 2013-03-20 22:57:13.000000000 +0100 ++++ Tests/CMakeLists.txt 2013-03-20 22:58:02.000000000 +0100 +@@ -1706,16 +1706,17 @@ + PASS_REGULAR_EXPRESSION "Could not find executable" + FAIL_REGULAR_EXPRESSION "SegFault") + +- configure_file( +- "${CMake_SOURCE_DIR}/Tests/CTestTestUpload/test.cmake.in" +- "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" +- @ONLY ESCAPE_QUOTES) +- add_test(CTestTestUpload ${CMAKE_CTEST_COMMAND} +- -S "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" -V +- --output-log "${CMake_BINARY_DIR}/Tests/CTestTestUpload/testOut.log" +- ) +- set_tests_properties(CTestTestUpload PROPERTIES +- PASS_REGULAR_EXPRESSION "Upload\\.xml") ++# This test requires network connectivity: skip it. ++# configure_file( ++# "${CMake_SOURCE_DIR}/Tests/CTestTestUpload/test.cmake.in" ++# "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" ++# @ONLY ESCAPE_QUOTES) ++# add_test(CTestTestUpload ${CMAKE_CTEST_COMMAND} ++# -S "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" -V ++# --output-log "${CMake_BINARY_DIR}/Tests/CTestTestUpload/testOut.log" ++# ) ++# set_tests_properties(CTestTestUpload PROPERTIES ++# PASS_REGULAR_EXPRESSION "Upload\\.xml") + + configure_file( + "${CMake_SOURCE_DIR}/Tests/CTestTestConfigFileInBuildDir/test1.cmake.in" +--- Utilities/cmcurl/CMakeLists.txt 2013-03-20 22:57:13.000000000 +0100 ++++ Utilities/cmcurl/CMakeLists.txt 2013-03-20 23:08:41.000000000 +0100 +@@ -729,8 +729,9 @@ + ADD_EXECUTABLE(LIBCURL Testing/curltest.c) + TARGET_LINK_LIBRARIES(LIBCURL cmcurl ${CMAKE_DL_LIBS}) + +-IF(CMAKE_CURL_TEST_URL) +- ADD_TEST(curl LIBCURL ${CMAKE_CURL_TEST_URL}) +-ENDIF(CMAKE_CURL_TEST_URL) ++# This test requires network connectivity: skip it. ++#IF(CMAKE_CURL_TEST_URL) ++# ADD_TEST(curl LIBCURL ${CMAKE_CURL_TEST_URL}) ++#ENDIF(CMAKE_CURL_TEST_URL) + + INSTALL(FILES COPYING DESTINATION ${CMake_DOC_DEST}/cmcurl)