guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] gnu: cmake: Use our curl, zlib, expat, bzip2, and libarchive.


From: Eric Bavier
Subject: [PATCH] gnu: cmake: Use our curl, zlib, expat, bzip2, and libarchive.
Date: Wed, 08 Oct 2014 11:59:02 -0500
User-agent: mu4e 0.9.9.5; emacs 23.3.1

Sending this patch to the list, as it would likely cause a lot of
rebuilds.

>From c824d34faecc173bafc513d0b2052597a46dddfd Mon Sep 17 00:00:00 2001
From: Eric Bavier <address@hidden>
Date: Wed, 8 Oct 2014 11:55:40 -0500
Subject: [PATCH] gnu: cmake: Use our curl, zlib, expat, bzip2, and
 libarchive.

* gnu/packages/cmake.scm (cmake)[arguments]: Move sh-patching to new
  'patch-bin-sh phase.  New 'set-paths phase.
  [inputs]: Add curl, zlib, expat, bzip2, and libarchive.
  [description]: Fix space after end-of-sentence.
---
 gnu/packages/cmake.scm |   73 +++++++++++++++++++++++++++++++-----------------
 1 file changed, 47 insertions(+), 26 deletions(-)

diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 87a70de..2c20c73 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <address@hidden>
 ;;; Copyright © 2014 Mark H Weaver <address@hidden>
+;;; Copyright © 2014 Eric Bavier <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,12 +19,16 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (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 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 (gnu packages xml)
   #:use-module (srfi srfi-1))
 
 (define-public cmake
@@ -43,13 +48,12 @@
     (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"
@@ -62,29 +66,46 @@
                          "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)))
+                     (("/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 "CPATH"))))
+                  (alist-replace
+                   'configure
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let ((out (assoc-ref outputs "out")))
+                       (zero? (system*
+                               "./configure"
+                               (string-append "--prefix=" out)
+                               "--system-libs"
+                               ;; 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)))))
     (inputs
-     `(("file" ,file)))
+     `(("file"       ,file)
+       ("curl"       ,curl)
+       ("zlib"       ,zlib)
+       ("expat"      ,expat)
+       ("bzip2"      ,bzip2)
+       ("libarchive" ,libarchive)))
     (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)))
-- 
1.7.9.5

-- 
Eric Bavier

reply via email to

[Prev in Thread] Current Thread [Next in Thread]