From f37c7e01d551d111fc25e3a9a9f71d6654840941 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Fri, 30 Dec 2016 21:57:50 -0500 Subject: youcompleteme: fix compilation 1) Replace --system-libclang with an explicit setting for the path to nix libclang 3.9. Otherwise it will find system's libclang on darwin. 2) Remove clang/llvm from build inputs. This prevents ycm itself from being compiled by clang 3.9. stdenv's standard compiler (gcc or clang 3.7) will suffice. 3) Enable C++11 again as #16212 is caused by incopatibility between clang 3.9 and libc++ 3.7, but we don't compile YCM with clang 3.9, so this is not needed anymore. --- pkgs/misc/vim-plugins/default.nix | 12 +++++++----- .../vim-plugins/patches/youcompleteme/1-top-cmake.patch | 14 -------------- .../vim-plugins/vim2nix/additional-nix-code/youcompleteme | 12 +++++++----- 3 files changed, 14 insertions(+), 24 deletions(-) delete mode 100644 pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch (limited to 'pkgs/misc/vim-plugins') diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index 08cdb3465c82..b277f9268bca 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -1309,17 +1309,18 @@ rec { dependencies = []; buildInputs = [ python go cmake - (if stdenv.isDarwin then llvmPackages.clang else llvmPackages.clang-unwrapped) - llvmPackages.llvm ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa; propagatedBuildInputs = stdenv.lib.optional (!stdenv.isDarwin) rustracerd; patches = [ - ./patches/youcompleteme/1-top-cmake.patch ./patches/youcompleteme/2-ycm-cmake.patch ]; + # YCM requires path to external libclang 3.9 + # For explicit use and as env variable for ../third_party/ycmd/build.py + EXTRA_CMAKE_ARGS="-DEXTERNAL_LIBCLANG_PATH=${llvmPackages.clang.cc}/lib/libclang.${if stdenv.isDarwin then "dylib" else "so"}"; + buildPhase = '' patchShebangs . substituteInPlace plugin/youcompleteme.vim \ @@ -1327,9 +1328,10 @@ rec { mkdir build pushd build - cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON -DUSE_SYSTEM_LIBCLANG=ON + cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON \ + $EXTRA_CMAKE_ARGS make ycm_core -j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}} - ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer --system-libclang + ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer popd ''; diff --git a/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch b/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch deleted file mode 100644 index fddf91b1c57c..000000000000 --- a/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch +++ /dev/null @@ -1,14 +0,0 @@ - ---- ./third_party/ycmd/cpp/CMakeLists.txt -+++ ./third_party/ycmd/cpp/CMakeLists.txt -@@ -121,8 +121,8 @@ - set( CPP11_AVAILABLE true ) - endif() - elseif( COMPILER_IS_CLANG ) -- set( CPP11_AVAILABLE true ) -- set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" ) -+ #set( CPP11_AVAILABLE true ) -+ # set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" ) - set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" ) - endif() - diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme index 4b81be5205b8..8da267837fb7 100644 --- a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme +++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme @@ -1,16 +1,17 @@ buildInputs = [ python go cmake - (if stdenv.isDarwin then llvmPackages.clang else llvmPackages.clang-unwrapped) - llvmPackages.llvm ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa; propagatedBuildInputs = stdenv.lib.optional (!stdenv.isDarwin) rustracerd; patches = [ - ./patches/youcompleteme/1-top-cmake.patch ./patches/youcompleteme/2-ycm-cmake.patch ]; + # YCM requires path to external libclang 3.9 + # For explicit use and as env variable for ../third_party/ycmd/build.py + EXTRA_CMAKE_ARGS="-DEXTERNAL_LIBCLANG_PATH=${llvmPackages.clang.cc}/lib/libclang.${if stdenv.isDarwin then "dylib" else "so"}"; + buildPhase = '' patchShebangs . substituteInPlace plugin/youcompleteme.vim \ @@ -18,9 +19,10 @@ mkdir build pushd build - cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON -DUSE_SYSTEM_LIBCLANG=ON + cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON \ + $EXTRA_CMAKE_ARGS make ycm_core -j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}} - ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer --system-libclang + ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer popd ''; -- cgit 1.4.1