diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 5515bf288e83..45311ee0e3cc 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +args: with args; stdenv.mkDerivation { name = "cmake-2.4.7"; setupHook = ./setup-hook.sh; @@ -8,15 +8,11 @@ stdenv.mkDerivation { sha256 = "0mkx23s7zq48hzzzw3vbzsfzfz3rjsiwgf3i00xawcxrjjrgxm9g"; }; - buildInputs = []; + propagatedBuildInputs = [replace]; - preConfigure="find Modules -type f -name '*.cmake' | - xargs sed -e 's@/usr@/FOO@g' -e 's@ /\\(bin\\|sbin\\|lib\\)@ /FOO@g' -i"; + postUnpack = "source \${setupHook}; fixCmakeFiles \${sourceRoot}"; - postInstall="find \$out/share -type f -name '*.cmake' | - xargs sed -e 's@/usr@/FOO@g' -e 's@ /\\(bin\\|sbin\\|lib\\)@ /FOO@g' -i; - ensureDir \$out/nix-support; - cp -p $setupHook \$out/nix-support/setup-hook"; + postInstall="fixCmakeFiles \$out/share"; meta = { description = "Cross-Platform Makefile Generator"; diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index 8765599d67d7..6ad5349a6a78 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -12,17 +12,13 @@ addCMakeParamsLibs() fi } -fixCmake() -{ - echo "fixing Cmake file $i" - sed -e 's@/usr@/FOO@g' -e 's@ /\(bin\|sbin\|lib\)@ /FOO@g' -i $i -} - fixCmakeFiles() { - for i in $(find $1 -type f -name "*.cmake"); do - fixCmake $i; - done; + local replaceArgs; + echo "Fixing cmake files" + replaceArgs="-e -f -L -T /usr /FOO" + replaceArgs="${replaceArgs} -a NO_DEFAULT_PATH \"\" -a NO_SYSTEM_PATH \"\"" + find $1 -type f -name "*.cmake" | xargs replace ${replaceArgs} } cmakePostUnpack() @@ -34,21 +30,19 @@ cmakePostUnpack() if [ -z "$dontFixCmake" ]; then fixCmakeFiles . fi -} -cmakeTweaks() -{ - postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}" - if [ -z "$configureScript" ]; then - dontAddPrefix=1 configureScript="cmake .." + fi + if [ -z "$dontAddPrefix" ]; then + dontAddPrefix=1 configureFlags="-DCMAKE_INSTALL_PREFIX=$out $configureFlags" fi } + if [ -z "$noCmakeTewaks" ]; then - cmakeTweaks + postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}" fi; envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index afaf86b764ce..42c7ac59dcc9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1190,7 +1190,7 @@ rec { }; cmake = import ../development/tools/build-managers/cmake { - inherit fetchurl stdenv; + inherit fetchurl stdenv replace; }; elfutils = import ../development/tools/misc/elfutils {