aboutsummaryrefslogtreecommitdiff
path: root/pkgs/development/tools/misc/ycmd/default.nix
diff options
context:
space:
mode:
authorCharles Strahan <charles@cstrahan.com>2017-02-09 23:39:16 -0500
committerCharles Strahan <charles@cstrahan.com>2017-02-10 01:01:22 -0500
commit53a5117cde14e1905cbe67e294f9b2b974dbe09a (patch)
tree42c8d546e18c9dfce2c819c6d12749044a637661 /pkgs/development/tools/misc/ycmd/default.nix
parentb27edc45374309fb30b6b7454b4115e4923b17bf (diff)
ycmd: use vendored python libs
YouCompleteMe needs the packages to be available in ycmd's third_party directory, and things start getting pretty complicated when we try to use our package libs instead of the vendored ones. We can revisit this at a later time, but we'll need to ensure that we don't break the vim plugin. Tested in vim.
Diffstat (limited to '')
-rw-r--r--pkgs/development/tools/misc/ycmd/default.nix43
1 files changed, 20 insertions, 23 deletions
diff --git a/pkgs/development/tools/misc/ycmd/default.nix b/pkgs/development/tools/misc/ycmd/default.nix
index 2153305953ed..9ac227ac0063 100644
--- a/pkgs/development/tools/misc/ycmd/default.nix
+++ b/pkgs/development/tools/misc/ycmd/default.nix
@@ -1,16 +1,13 @@
-{ stdenv, lib, fetchgit, cmake, llvmPackages, boost, python2Packages
+{ stdenv, lib, fetchgit, cmake, llvmPackages, boost, python
, gocode ? null
, godef ? null
, rustracerd ? null
+, Cocoa ? null
}:
-let
- inherit (python2Packages) python mkPythonDerivation waitress frozendict bottle future argparse requests;
- pathFixup = "import os; os.environ['PATH'] = ('{0}:{1}' if os.getenv('PATH', '') != '' else '{1}').format('$program_PATH', os.getenv('PATH', ''))";
-in mkPythonDerivation rec {
+stdenv.mkDerivation rec {
name = "ycmd-${version}";
version = "2017-02-03";
- namePrefix = "";
src = fetchgit {
url = "git://github.com/Valloric/ycmd.git";
@@ -18,30 +15,32 @@ in mkPythonDerivation rec {
sha256 = "0rzxgqqqmmrv9r4k2ji074iprhw6sb0jkvh84wvi45yfyphsh0xi";
};
- buildInputs = [ cmake boost ];
-
- propagatedBuildInputs = [ waitress frozendict bottle future argparse requests ];
+ buildInputs = [ cmake boost ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
buildPhase = ''
export EXTRA_CMAKE_ARGS=-DPATH_TO_LLVM_ROOT=${llvmPackages.clang-unwrapped}
${python.interpreter} build.py --clang-completer --system-boost
'';
+ patches = [ ./2-ycm-cmake.patch ];
+
configurePhase = ":";
# remove the tests
#
- # make __main__.py executable so mkPythonDerivation's postFixup modifies the
- # executable (e.g. fixup PYTHONPATH)
+ # make __main__.py executable and add shebang
#
- # add a shebang (will be rewritten by postFixup)
+ # copy over third-party libs
+ # note: if we switch to using our packaged libs, we'll need to symlink them
+ # into the same spots, as YouCompleteMe (the vim plugin) expects those paths
+ # to be available
#
# symlink completion backends where ycmd expects them
installPhase = ''
rm -rf ycmd/tests
chmod +x ycmd/__main__.py
- sed -i "1i #!/usr/bin/env python\
+ sed -i "1i #!${python.interpreter}\
" ycmd/__main__.py
mkdir -p $out/lib/ycmd
@@ -51,7 +50,12 @@ in mkPythonDerivation rec {
ln -s $out/lib/ycmd/ycmd/__main__.py $out/bin/ycmd
mkdir -p $out/lib/ycmd/third_party/{gocode,godef,racerd/target/release}
- cp -r third_party/JediHTTP/ $out/lib/ycmd/third_party
+
+ cp -r third_party/JediHTTP $out/lib/ycmd/third_party
+ for p in waitress frozendict bottle python-future argparse requests; do
+ cp -r third_party/$p $out/lib/ycmd/third_party
+ done
+
'' + lib.optionalString (gocode != null) ''
ln -s ${gocode}/bin/gocode $out/lib/ycmd/third_party/gocode
'' + lib.optionalString (godef != null) ''
@@ -60,16 +64,9 @@ in mkPythonDerivation rec {
ln -s ${rustracerd}/bin/racerd $out/lib/ycmd/third_party/racerd/target/release
'';
- # mkPythonDerivation will attempt to create a wrapper script (written in bash)
- # but we don't want the indirection as several editor plugins want to invoke
- # ycmd as `python path/to/ycmd`, which will obviously fail in that case -
- # so we move the original file back over
- #
- # also fixup the argv[0] and replace __file__ with the corresponding path so
+ # fixup the argv[0] and replace __file__ with the corresponding path so
# python won't be thrown off by argv[0]
postFixup = ''
- mv $out/lib/ycmd/ycmd/{.__main__.py-wrapped,__main__.py}
-
substituteInPlace $out/lib/ycmd/ycmd/__main__.py \
--replace $out/lib/ycmd/ycmd/__main__.py \
$out/bin/ycmd \
@@ -81,7 +78,7 @@ in mkPythonDerivation rec {
description = "A code-completion and comprehension server";
homepage = https://github.com/Valloric/ycmd;
license = licenses.gpl3;
- maintainers = with maintainers; [ rasendubi ];
+ maintainers = with maintainers; [ rasendubi cstrahan ];
platforms = platforms.all;
};
}