about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEdmund Wu <fangkazuto@gmail.com>2019-02-03 20:02:18 -0500
committerEdmund Wu <fangkazuto@gmail.com>2019-07-07 21:12:46 -0400
commita8b31a14b1abdbb992e6fe46f6f11f29baabab6e (patch)
treee58299cecc8f3cbaf86dde7169014cef81ceab0a /pkgs
parentc4b2a3f92ad0e18f23fed5747bd0a0475b0fbd68 (diff)
downloadnixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar.gz
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar.bz2
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar.lz
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar.xz
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.tar.zst
nixlib-a8b31a14b1abdbb992e6fe46f6f11f29baabab6e.zip
vscode-extensions.ms-python.python: 2018.12.1 -> 2019.6.22090
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/misc/vscode-extensions/default.nix4
-rw-r--r--pkgs/misc/vscode-extensions/python/default.nix58
-rw-r--r--pkgs/misc/vscode-extensions/python/extract-nuget.nix15
-rw-r--r--pkgs/misc/vscode-extensions/vscode-utils.nix10
4 files changed, 74 insertions, 13 deletions
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index ec513c5a7b92..c47422531206 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -62,7 +62,9 @@ rec {
 
   ms-vscode.cpptools = callPackage ./cpptools {};
 
-  ms-python.python = callPackage ./python {};
+  ms-python.python = callPackage ./python {
+    extractNuGet = callPackage ./python/extract-nuget.nix { };
+  };
 
   vscodevim.vim = buildVscodeMarketplaceExtension {
     mktplcRef = {
diff --git a/pkgs/misc/vscode-extensions/python/default.nix b/pkgs/misc/vscode-extensions/python/default.nix
index 65130da9095b..f05afcc19289 100644
--- a/pkgs/misc/vscode-extensions/python/default.nix
+++ b/pkgs/misc/vscode-extensions/python/default.nix
@@ -1,5 +1,5 @@
-{ lib, vscode-utils
-
+{ lib, stdenv, fetchurl, vscode-utils, extractNuGet
+, icu, curl, openssl, lttng-ust, autoPatchelfHook
 , pythonUseFixed ? false, python  # When `true`, the python default setting will be fixed to specified.
                                   # Use version from `PATH` for default setting otherwise.
                                   # Defaults to `false` as we expect it to be project specific most of the time.
@@ -14,16 +14,48 @@ assert ctagsUseFixed -> null != ctags;
 let
   pythonDefaultsTo = if pythonUseFixed then "${python}/bin/python" else "python";
   ctagsDefaultsTo = if ctagsUseFixed then "${ctags}/bin/ctags" else "ctags";
-in
 
-vscode-utils.buildVscodeMarketplaceExtension {
+  # The arch tag comes from 'PlatformName' defined here:
+  # https://github.com/Microsoft/vscode-python/blob/master/src/client/activation/types.ts
+  arch =
+    if stdenv.isLinux && stdenv.isx86_64 then "linux-x64"
+    else if stdenv.isDarwin then "osx-x64"
+    else throw "Only x86_64 Linux and Darwin are supported.";
+
+  languageServerSha256 = {
+    "linux-x64" = "0mqjl3l1zk1zd7n0rrb2vdsrx6czhl4irdm4j5jishg9zp03gkkd";
+    "osx-x64" = "1csq8q8fszv9xk9qiabg12zybxnzn8y2jsnvjrlg4b8kvm63sz40";
+  }."${arch}";
+
+  # version is languageServerVersion in the package.json
+  languageServer = extractNuGet rec {
+    name = "Python-Language-Server";
+    version = "0.2.82";
+
+    src = fetchurl {
+      url = "https://pvsc.azureedge.net/python-language-server-stable/${name}-${arch}.${version}.nupkg";
+      sha256 = languageServerSha256;
+    };
+  };
+in vscode-utils.buildVscodeMarketplaceExtension {
   mktplcRef = {
     name = "python";
     publisher = "ms-python";
-    version = "2018.12.1";
-    sha256 = "1cf3yll2hfililcwq6avscgi35caccv8m8fdsvzqdfrggn5h41h4";
+    version = "2019.6.22090";
+    sha256 = "11q4ac7acp946h43myjmp2f2vh10m1c4hn1n0s5pqgjvn0i6bi3i";
   };
 
+  buildInputs = [
+    icu
+    curl
+    openssl
+    lttng-ust
+  ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
+
   postPatch = ''
     # Patch `packages.json` so that nix's *python* is used as default value for `python.pythonPath`.
     substituteInPlace "./package.json" \
@@ -34,8 +66,14 @@ vscode-utils.buildVscodeMarketplaceExtension {
       --replace "\"default\": \"ctags\"" "\"default\": \"${ctagsDefaultsTo}\""
   '';
 
-    meta = with lib; {
-      license = licenses.mit;
-      maintainers = [ maintainers.jraygauthier ];
-    };
+  postInstall = ''
+    mkdir -p "$out/$installPrefix/languageServer.${languageServer.version}"
+    cp -R --no-preserve=ownership ${languageServer}/* "$out/$installPrefix/languageServer.${languageServer.version}"
+    chmod -R +wx "$out/$installPrefix/languageServer.${languageServer.version}"
+  '';
+
+  meta = with lib; {
+    license = licenses.mit;
+    maintainers = [ maintainers.jraygauthier ];
+  };
 }
diff --git a/pkgs/misc/vscode-extensions/python/extract-nuget.nix b/pkgs/misc/vscode-extensions/python/extract-nuget.nix
new file mode 100644
index 000000000000..e4d3b6a0ed1b
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/python/extract-nuget.nix
@@ -0,0 +1,15 @@
+{ stdenv, unzip }:
+{ name, version, src, ... }:
+
+stdenv.mkDerivation {
+  inherit name version src;
+
+  buildInputs = [ unzip ];
+  dontBuild = true;
+  unpackPhase = "unzip $src";
+  installPhase = ''
+    mkdir -p "$out"
+    chmod -R +w .
+    find . -mindepth 1 -maxdepth 1 | xargs cp -a -t "$out"
+  '';
+}
diff --git a/pkgs/misc/vscode-extensions/vscode-utils.nix b/pkgs/misc/vscode-extensions/vscode-utils.nix
index 82d39dbfec63..2216e4258973 100644
--- a/pkgs/misc/vscode-extensions/vscode-utils.nix
+++ b/pkgs/misc/vscode-extensions/vscode-utils.nix
@@ -33,11 +33,17 @@ let
     inherit vscodeExtUniqueId;
     inherit configurePhase buildPhase dontPatchELF dontStrip;
 
+    installPrefix = "share/${extendedPkgName}/extensions/${vscodeExtUniqueId}";
+
     buildInputs = [ unzip ] ++ buildInputs;
 
     installPhase = ''
-      mkdir -p "$out/share/${extendedPkgName}/extensions/${vscodeExtUniqueId}"
-      find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/share/${extendedPkgName}/extensions/${vscodeExtUniqueId}/"
+      runHook preInstall
+
+      mkdir -p "$out/$installPrefix"
+      find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/$installPrefix/"
+
+      runHook postInstall
     '';
 
   });