From 489d1be9186d1954bf16c6efd9290e6057cf2159 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 21 Jul 2011 18:21:38 +0000 Subject: [PATCH] * Cmake updated to 2.8.5. Also added a patch that prevents Cmake from looking in /usr and similar locations. However, it *will* now look in the Nixpkgs Glibc lib and include directories. This ensures that find_library can find libraries in Glibc. svn path=/nixpkgs/branches/kde-4.7/; revision=27884 --- .../tools/build-managers/cmake/default.nix | 34 +++++-- .../build-managers/cmake/search-path.patch | 95 +++++++++++++++++++ 2 files changed, 119 insertions(+), 10 deletions(-) create mode 100644 pkgs/development/tools/build-managers/cmake/search-path.patch diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index bc6677496255..081313972df4 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -1,14 +1,16 @@ -{fetchurl, stdenv, replace, curl, expat, zlib, bzip2, libarchive +{ fetchurl, stdenv, replace, curl, expat, zlib, bzip2, libarchive , useNcurses ? false, ncurses, useQt4 ? false, qt4 -, darwinInstallNameToolUtility}: +, darwinInstallNameToolUtility }: + +with stdenv.lib; let os = stdenv.lib.optionalString; - inherit (stdenv.lib) optional; majorVersion = "2.8"; - minorVersion = "4"; + minorVersion = "5"; version = "${majorVersion}.${minorVersion}"; in + stdenv.mkDerivation rec { name = "cmake-${os useNcurses "cursesUI-"}${os useQt4 "qt4UI-"}${version}"; @@ -16,26 +18,38 @@ stdenv.mkDerivation rec { src = fetchurl { url = "${meta.homepage}files/v${majorVersion}/cmake-${version}.tar.gz"; - sha256 = "1k2kjaj3vfifb329ff7fr4hcbpbaqb66l97pshq70h7m0zwajznr"; + sha256 = "148bxnn5msl1zg366cdgxy2inzjj0n4jlhakymj6qr81bzvvy62y"; }; + patches = + # Don't search in non-Nix locations such as /usr, but do search in + # Nixpkgs' Glibc. + optional (stdenv ? glibc) ./search-path.patch; + buildInputs = [ curl expat zlib bzip2 libarchive ] ++ optional stdenv.isDarwin darwinInstallNameToolUtility ++ optional useNcurses ncurses ++ optional useQt4 qt4; CMAKE_PREFIX_PATH = stdenv.lib.concatStringsSep ":" buildInputs; + configureFlags = "--docdir=/share/doc/${name} --mandir=/share/man --system-libs" + stdenv.lib.optionalString useQt4 " --qt-gui"; setupHook = ./setup-hook.sh; - postUnpack = '' - dontUseCmakeConfigure=1 - source $setupHook - fixCmakeFiles $sourceRoot - ''; + postUnpack = + '' + dontUseCmakeConfigure=1 + source $setupHook + fixCmakeFiles $sourceRoot + ''; + + preConfigure = optionalString (stdenv ? glibc) + '' + substituteInPlace Modules/Platform/UnixPaths.cmake --subst-var-by glibc ${stdenv.glibc} + ''; meta = { homepage = http://www.cmake.org/; diff --git a/pkgs/development/tools/build-managers/cmake/search-path.patch b/pkgs/development/tools/build-managers/cmake/search-path.patch new file mode 100644 index 000000000000..ef8a9eef7c18 --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/search-path.patch @@ -0,0 +1,95 @@ +diff -ru -x '*~' cmake-2.8.5-orig/Modules/Platform/Linux.cmake cmake-2.8.5/Modules/Platform/Linux.cmake +--- cmake-2.8.5-orig/Modules/Platform/Linux.cmake 2011-07-08 14:21:44.000000000 +0200 ++++ cmake-2.8.5/Modules/Platform/Linux.cmake 2011-07-21 19:45:00.000000000 +0200 +@@ -36,13 +36,13 @@ + # checking the platform every time. This option is advanced enough + # that only package maintainers should need to adjust it. They are + # capable of providing a setting on the command line. +- IF(EXISTS "/etc/debian_version") +- SET(CMAKE_INSTALL_SO_NO_EXE 1 CACHE INTERNAL +- "Install .so files without execute permission.") +- ELSE(EXISTS "/etc/debian_version") ++ #IF(EXISTS "/etc/debian_version") ++ # SET(CMAKE_INSTALL_SO_NO_EXE 1 CACHE INTERNAL ++ # "Install .so files without execute permission.") ++ #ELSE(EXISTS "/etc/debian_version") + SET(CMAKE_INSTALL_SO_NO_EXE 0 CACHE INTERNAL + "Install .so files without execute permission.") +- ENDIF(EXISTS "/etc/debian_version") ++ #ENDIF(EXISTS "/etc/debian_version") + ENDIF(DEFINED CMAKE_INSTALL_SO_NO_EXE) + + # Match multiarch library directory names. +@@ -52,6 +52,6 @@ + + # Debian has lib64 paths only for compatibility so they should not be + # searched. +-IF(EXISTS "/etc/debian_version") +- SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) +-ENDIF(EXISTS "/etc/debian_version") ++#IF(EXISTS "/etc/debian_version") ++# SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) ++#ENDIF(EXISTS "/etc/debian_version") +diff -ru -x '*~' cmake-2.8.5-orig/Modules/Platform/UnixPaths.cmake cmake-2.8.5/Modules/Platform/UnixPaths.cmake +--- cmake-2.8.5-orig/Modules/Platform/UnixPaths.cmake 2011-07-08 14:21:44.000000000 +0200 ++++ cmake-2.8.5/Modules/Platform/UnixPaths.cmake 2011-07-21 19:50:52.000000000 +0200 +@@ -33,55 +33,18 @@ + # search types. + LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH + # Standard +- /usr/local /usr / +- +- # CMake install location +- "${_CMAKE_INSTALL_DIR}" +- +- # Project install destination. +- "${CMAKE_INSTALL_PREFIX}" +- ) +- +-# List common include file locations not under the common prefixes. +-LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH +- # Windows API on Cygwin +- /usr/include/w32api +- +- # X11 +- /usr/X11R6/include /usr/include/X11 +- +- # Other +- /usr/pkg/include +- /opt/csw/include /opt/include +- /usr/openwin/include +- ) +- +-LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH +- # Windows API on Cygwin +- /usr/lib/w32api +- +- # X11 +- /usr/X11R6/lib /usr/lib/X11 +- +- # Other +- /usr/pkg/lib +- /opt/csw/lib /opt/lib +- /usr/openwin/lib +- ) +- +-LIST(APPEND CMAKE_SYSTEM_PROGRAM_PATH +- /usr/pkg/bin ++ "@glibc@" + ) + + LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES +- /lib /usr/lib /usr/lib32 /usr/lib64 ++ "@glibc@/lib" + ) + + LIST(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES +- /usr/include ++ "@glibc@/include" + ) + LIST(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES +- /usr/include ++ "@glibc@/include" + ) + + # Enable use of lib64 search path variants by default.