aboutsummaryrefslogtreecommitdiff
path: root/pkgs/misc/vscode-extensions
diff options
context:
space:
mode:
authoroxalica <oxalicc@pm.me>2020-06-21 20:41:38 +0800
committerJon <jonringer@users.noreply.github.com>2020-09-22 09:13:53 -0700
commit11c36334bfebed78ee32b8de333938c57a703f15 (patch)
tree988f25971305b1e3b360525a6bd7a8b712eb4e96 /pkgs/misc/vscode-extensions
parentbd4805b659f5691010a1845e4f5c123ff4eb184a (diff)
vscode-extensions.vadimcn.vscode-lldb: init at 1.5.3
Diffstat (limited to 'pkgs/misc/vscode-extensions')
-rw-r--r--pkgs/misc/vscode-extensions/default.nix6
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json24
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch45
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/default.nix106
-rw-r--r--pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch11
5 files changed, 191 insertions, 1 deletions
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index 04eabef9ec3c..a0229f595d4e 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, callPackage, vscode-utils, llvmPackages_8 }:
+{ stdenv, callPackage, vscode-utils, llvmPackages_8, llvmPackages_latest }:
let
inherit (vscode-utils) buildVscodeMarketplaceExtension;
@@ -178,6 +178,10 @@ in
};
};
+ vadimcn.vscode-lldb = callPackage ./vscode-lldb {
+ lldb = llvmPackages_latest.lldb;
+ };
+
vscodevim.vim = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vim";
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json
new file mode 100644
index 000000000000..6e73ee446d86
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "vscode-lldb",
+ "version": "1.5.3",
+ "dependencies": {
+ "@types/json5": "^0.0.30",
+ "@types/mocha": "^7.0.1",
+ "@types/node": "^8.10.50",
+ "@types/vscode": "^1.31.0",
+ "@types/yauzl": "^2.9.0",
+ "json5": "^2.1.0",
+ "memory-streams": "^0.1.3",
+ "mocha": "^7.0.1",
+ "source-map-support": "^0.5.12",
+ "string-argv": "^0.3.1",
+ "ts-loader": "^6.2.1",
+ "typescript": "^3.7.0",
+ "vsce": "^1.73.0",
+ "vscode-debugadapter-testsupport": "^1.35.0",
+ "vscode-debugprotocol": "^1.35.0",
+ "webpack": "^4.39.1",
+ "webpack-cli": "^3.3.7",
+ "yauzl": "^2.10.0"
+ }
+}
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch b/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch
new file mode 100644
index 000000000000..db62552b913b
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch
@@ -0,0 +1,45 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -9,13 +9,6 @@ include(cmake/CopyFiles.cmake)
+ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_INSTALL_PREFIX $ENV{HOME}/.vscode/extensions/vscode-lldb CACHE PATH "Install location")
+
+-set(LLDB_ROOT $ENV{LLDB_ROOT} CACHE PATH "Root of LLDB build directory")
+-if (LLDB_ROOT)
+- message("Using LLDB from ${LLDB_ROOT}")
+-else()
+- message(FATAL_ERROR "LLDB_ROOT not set." )
+-endif()
+-
+ # General OS-specific definitions
+ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ set(DylibPrefix lib)
+@@ -64,8 +57,9 @@ set(UpdateFile ${CMAKE_COMMAND} -E copy_if_different)
+
+ # Adapter
+
+-add_subdirectory(adapter)
+-add_subdirectory(lldb)
++add_custom_target(adapter)
++add_custom_target(lldb)
++add_custom_target(codelldb)
+
+ # Extension package content
+
+@@ -74,16 +68,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
+ configure_file(webpack.config.js ${CMAKE_CURRENT_BINARY_DIR}/webpack.config.js @ONLY)
+ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+-# Run 'npm install'
+-execute_process(
+- COMMAND ${NPM} install
+- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+- RESULT_VARIABLE Result
+-)
+-if (NOT ${Result} EQUAL 0)
+- message(FATAL_ERROR "npm intall failed: ${Result}")
+-endif()
+-
+ # Copy it back, so we can commit the lock file.
+ file(COPY ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})
+ \ No newline at end of file
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix
new file mode 100644
index 000000000000..f22c9df36a1b
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix
@@ -0,0 +1,106 @@
+{ lib, stdenv, vscode-utils, fetchFromGitHub, rustPlatform, makeWrapper, jq
+, nodePackages, cmake, nodejs, unzip, python3, lldb, breakpointHook
+, setDefaultLldbPath ? true
+}:
+assert lib.versionAtLeast python3.version "3.5";
+let
+ publisher = "vadimcn";
+ name = "vscode-lldb";
+ version = "1.5.3";
+
+ dylibExt = stdenv.hostPlatform.extensions.sharedLibrary;
+
+ src = fetchFromGitHub {
+ owner = "vadimcn";
+ repo = "vscode-lldb";
+ rev = "v${version}";
+ sha256 = "1139945j3z0fxc3nlyvd81k0ypymqsj051idrbgbibwshpi86y93";
+ fetchSubmodules = true;
+ };
+
+ adapter = rustPlatform.buildRustPackage {
+ pname = "${name}-adapter";
+ inherit version src;
+
+ cargoSha256 = "0jl4msf2jcjxddwqkx8fr0c35wg4vwvg5c19mihri1v34i09zc5r";
+
+ # It will pollute the build environment of `buildRustPackage`.
+ cargoPatches = [ ./reset-cargo-config.patch ];
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ buildAndTestSubdir = "adapter";
+
+ # Hack: Need a nightly compiler.
+ RUSTC_BOOTSTRAP = 1;
+
+ # `adapter` expects a special hierarchy to resolve everything well.
+ postInstall = ''
+ mkdir -p $out/adapter
+ mv -t $out/adapter \
+ $out/bin/* \
+ $out/lib/* \
+ ./adapter/*.py \
+ ./formatters/*.py
+ rmdir $out/{bin,lib}
+ '';
+
+ postFixup = ''
+ wrapProgram $out/adapter/codelldb \
+ --prefix PATH : "${python3}/bin" \
+ --prefix LD_LIBRARY_PATH : "${python3}/lib"
+ '';
+ };
+
+ build-deps = nodePackages."vscode-lldb-build-deps-../../misc/vscode-extensions/vscode-lldb/build-deps";
+
+ vsix = stdenv.mkDerivation {
+ name = "${name}-${version}-vsix";
+ inherit src;
+
+ # Only build the extension. We handle `adapter` and `lldb` with nix.
+ patches = [ ./cmake-build-extension-only.patch ];
+
+ nativeBuildInputs = [ cmake nodejs unzip breakpointHook ];
+
+ postConfigure = ''
+ cp -r ${build-deps}/lib/node_modules/vscode-lldb/{node_modules,package-lock.json} .
+ '';
+
+ makeFlags = [ "vsix_bootstrap" ];
+
+ installPhase = ''
+ unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted
+ mv vsix-extracted/extension $out
+
+ ln -s ${adapter}/adapter $out
+ # Mark that adapter and lldb are installed.
+ touch $out/platform.ok
+ '';
+
+ dontStrip = true;
+ dontPatchELF = true;
+ };
+
+in vscode-utils.buildVscodeExtension {
+ inherit name;
+ src = vsix;
+
+ nativeBuildInputs = lib.optional setDefaultLldbPath jq;
+ postUnpack = lib.optionalString setDefaultLldbPath ''
+ jq '.contributes.configuration.properties."lldb.library".default = $s' \
+ --arg s "${lldb}/lib/liblldb.so" \
+ $sourceRoot/package.json >$sourceRoot/package.json.new
+ mv $sourceRoot/package.json.new $sourceRoot/package.json
+ '';
+
+ vscodeExtUniqueId = "${publisher}.${name}";
+
+ meta = with lib; {
+ description = "A native debugger extension for VSCode based on LLDB";
+ homepage = "https://github.com/vadimcn/vscode-lldb";
+ license = with licenses; [ mit ];
+ maintainers = with maintainers; [ oxalica ];
+ platforms = platforms.all;
+ };
+}
diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch b/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch
new file mode 100644
index 000000000000..300f8cd96ef9
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/vscode-lldb/reset-cargo-config.patch
@@ -0,0 +1,11 @@
+--- a/.cargo/config
++++ b/.cargo/config
+@@ -1,8 +0,0 @@
+-[build]
+-target-dir = "build/target"
+-
+-[target.armv7-unknown-linux-gnueabihf]
+-linker = "arm-linux-gnueabihf-gcc"
+-
+-[target.aarch64-unknown-linux-gnu]
+-linker = "aarch64-linux-gnu-gcc"