From f3022889189d90c5a4c85a07fd064d202c98ffc9 Mon Sep 17 00:00:00 2001 From: oxalica Date: Tue, 13 Oct 2020 03:05:09 +0800 Subject: vscode-extensions.vadimcn.vscode-lldb: 1.5.3 -> 1.6.1 and refactor --- pkgs/misc/vscode-extensions/default.nix | 6 +- .../vscode-lldb/build-deps/package.json | 44 ++++---- .../vscode-lldb/cmake-build-extension-only.patch | 39 +++---- .../misc/vscode-extensions/vscode-lldb/default.nix | 116 ++++++++++----------- pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix | 23 ++++ pkgs/misc/vscode-extensions/vscode-lldb/update.sh | 35 +++++++ 6 files changed, 151 insertions(+), 112 deletions(-) create mode 100644 pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix create mode 100755 pkgs/misc/vscode-extensions/vscode-lldb/update.sh (limited to 'pkgs/misc') diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix index 604a47e1ed45..0f25d5ff8f00 100644 --- a/pkgs/misc/vscode-extensions/default.nix +++ b/pkgs/misc/vscode-extensions/default.nix @@ -1,4 +1,4 @@ -{ config, lib, callPackage, vscode-utils, nodePackages,llvmPackages_8, llvmPackages_latest }: +{ config, lib, callPackage, vscode-utils, nodePackages,llvmPackages_8 }: let inherit (vscode-utils) buildVscodeMarketplaceExtension; @@ -689,9 +689,7 @@ let }; }; - vadimcn.vscode-lldb = callPackage ./vscode-lldb { - lldb = llvmPackages_latest.lldb; - }; + vadimcn.vscode-lldb = callPackage ./vscode-lldb {}; vincaslt.highlight-matching-tag = buildVscodeMarketplaceExtension { mktplcRef = { diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json index 6e73ee446d86..188fa67ede59 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json +++ b/pkgs/misc/vscode-extensions/vscode-lldb/build-deps/package.json @@ -1,24 +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" - } + "name": "vscode-lldb", + "version": "1.6.1", + "dependencies": { + "string-argv": "^0.3.1", + "yaml": "^1.10.0", + "yauzl": "^2.10.0", + "@types/vscode": "^1.31.0", + "@types/node": "^8.10.50", + "@types/mocha": "^7.0.1", + "@types/yauzl": "^2.9.0", + "@types/json5": "^0.0.30", + "typescript": "^3.7.0", + "mocha": "^7.0.1", + "source-map-support": "^0.5.12", + "memory-streams": "^0.1.3", + "vscode-debugprotocol": "^1.35.0", + "vscode-debugadapter-testsupport": "^1.35.0", + "vsce": "^1.73.0", + "webpack": "^4.39.1", + "webpack-cli": "^3.3.7", + "ts-loader": "^6.2.1" + } } 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 index db62552b913b..30ab3f9b21c2 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch +++ b/pkgs/misc/vscode-extensions/vscode-lldb/cmake-build-extension-only.patch @@ -1,35 +1,25 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 890abd4..157a8a1 100644 --- 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}") +@@ -16,13 +16,6 @@ endif() + set(VERSION "${VERSION}${VERSION_SUFFIX}") + message("Version ${VERSION}") + +-set(LLDB_PACKAGE $ENV{LLDB_PACKAGE} CACHE PATH "Zip archive containing LLDB files") +-if (LLDB_PACKAGE) +- message("Using LLDB_PACKAGE=${LLDB_PACKAGE}") -else() -- message(FATAL_ERROR "LLDB_ROOT not set." ) +- message(FATAL_ERROR "LLDB_PACKAGE not set." ) -endif() - + set(TEST_TIMEOUT 5000 CACHE STRING "Test timeout [ms]") + # 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) +@@ -87,16 +80,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 @@ -42,4 +32,3 @@ - # 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 index f22c9df36a1b..2b2da76fbad7 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix +++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix @@ -1,100 +1,94 @@ -{ lib, stdenv, vscode-utils, fetchFromGitHub, rustPlatform, makeWrapper, jq -, nodePackages, cmake, nodejs, unzip, python3, lldb, breakpointHook -, setDefaultLldbPath ? true +{ lib, stdenv, fetchFromGitHub, rustPlatform, makeWrapper, jq, callPackage +, nodePackages, cmake, nodejs, unzip, python3 }: assert lib.versionAtLeast python3.version "3.5"; let publisher = "vadimcn"; - name = "vscode-lldb"; - version = "1.5.3"; - - dylibExt = stdenv.hostPlatform.extensions.sharedLibrary; + pname = "vscode-lldb"; + version = "1.6.1"; src = fetchFromGitHub { owner = "vadimcn"; repo = "vscode-lldb"; rev = "v${version}"; - sha256 = "1139945j3z0fxc3nlyvd81k0ypymqsj051idrbgbibwshpi86y93"; + sha256 = "sha256-mi+AeHg9zO0vjF0OZCufPkliInqxTvDGV350wqAwe90="; fetchSubmodules = true; }; + lldb = callPackage ./lldb.nix {}; + adapter = rustPlatform.buildRustPackage { - pname = "${name}-adapter"; + pname = "${pname}-adapter"; inherit version src; - cargoSha256 = "0jl4msf2jcjxddwqkx8fr0c35wg4vwvg5c19mihri1v34i09zc5r"; - # It will pollute the build environment of `buildRustPackage`. cargoPatches = [ ./reset-cargo-config.patch ]; + cargoSha256 = "sha256-HPVbqYsst/iFrHn5wvmWtqeVHOHR7JT8lu+/xZq1lK0="; + 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" - ''; + cargoFlags = [ + "--lib" + "--bin=codelldb" + "--features=weak-linkage" + ]; + + # Tests are linked to liblldb but it is not available here. + doCheck = false; }; - build-deps = nodePackages."vscode-lldb-build-deps-../../misc/vscode-extensions/vscode-lldb/build-deps"; + nodeDeps = nodePackages."vscode-lldb-build-deps-../../misc/vscode-extensions/vscode-lldb/build-deps"; - vsix = stdenv.mkDerivation { - name = "${name}-${version}-vsix"; - inherit src; +in stdenv.mkDerivation rec { + name = "vscode-extension-${pname}"; + inherit src; + vscodeExtUniqueId = "${publisher}.${pname}"; + installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}"; - # Only build the extension. We handle `adapter` and `lldb` with nix. - patches = [ ./cmake-build-extension-only.patch ]; + nativeBuildInputs = [ cmake nodejs unzip makeWrapper ]; - nativeBuildInputs = [ cmake nodejs unzip breakpointHook ]; + patches = [ ./cmake-build-extension-only.patch ]; - postConfigure = '' - cp -r ${build-deps}/lib/node_modules/vscode-lldb/{node_modules,package-lock.json} . - ''; + postConfigure = '' + cp -r ${nodeDeps}/lib/node_modules/vscode-lldb/{node_modules,package-lock.json} . + ''; - makeFlags = [ "vsix_bootstrap" ]; + cmakeFlags = [ + # Do not append timestamp to version. + "-DVERSION_SUFFIX=" + ]; + makeFlags = [ "vsix_bootstrap" ]; - installPhase = '' - unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted - mv vsix-extracted/extension $out + installPhase = '' + ext=$out/$installPrefix + runHook preInstall - ln -s ${adapter}/adapter $out - # Mark that adapter and lldb are installed. - touch $out/platform.ok - ''; + unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted - dontStrip = true; - dontPatchELF = true; - }; + mkdir -p $ext/{adapter,formatters} + mv -t $ext vsix-extracted/extension/* + cp -t $ext/adapter ${adapter}/{bin,lib}/* ../adapter/*.py + cp -t $ext/formatters ../formatters/*.py + ln -s ${lldb} $ext/lldb + # Mark that all components are installed. + touch $ext/platform.ok -in vscode-utils.buildVscodeExtension { - inherit name; - src = vsix; + runHook postInstall + ''; - 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 + # `adapter` will find python binary and libraries at runtime. + fixupPhase = '' + wrapProgram $out/$installPrefix/adapter/codelldb \ + --prefix PATH : "${python3}/bin" \ + --prefix LD_LIBRARY_PATH : "${python3}/lib" ''; - vscodeExtUniqueId = "${publisher}.${name}"; + passthru = { + inherit lldb adapter; + }; meta = with lib; { description = "A native debugger extension for VSCode based on LLDB"; diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix b/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix new file mode 100644 index 000000000000..2ec90b1931e8 --- /dev/null +++ b/pkgs/misc/vscode-extensions/vscode-lldb/lldb.nix @@ -0,0 +1,23 @@ +# Patched lldb for Rust language support. +{ lldb_11, fetchFromGitHub }: +let + llvmSrc = fetchFromGitHub { + owner = "vadimcn"; + repo = "llvm-project"; + rev = "dd7efd9ea2d38e3227bc2e83a99772aceeb44242"; + sha256 = "sha256-XY8J8Ie1cWb6ok72Gju/KUxZ4fIFQVitYVnuCezGRKQ="; + }; +in lldb_11.overrideAttrs (oldAttrs: { + src = "${llvmSrc}/lldb"; + + passthru = (oldAttrs.passthru or {}) // { + inherit llvmSrc; + }; + + doInstallCheck = true; + postInstallCheck = (oldAttrs.postInstallCheck or "") + '' + versionOutput="$($out/bin/lldb --version)" + echo "'lldb --version' returns: $versionOutput" + echo "$versionOutput" | grep -q 'rust-enabled' + ''; +}) diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/update.sh b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh new file mode 100755 index 000000000000..75e645b04224 --- /dev/null +++ b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p git jq nix-prefetch +set -eo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" +if [[ $# -ne 1 ]]; then + echo "Usage: ./update.sh " + exit 1 +fi + +echo " +FIXME: This script doesn't update patched lldb. Please manually check branches +of https://github.com/vadimcn/llvm-project and update lldb with correct version of LLVM. +" + +nixpkgs=../../../.. +nixFile=./default.nix +owner=vadimcn +repo=vscode-lldb +version="$1" + +sed -E 's/\bversion = ".*?"/version = "'$version'"/' --in-place "$nixFile" +srcHash=$(nix-prefetch fetchFromGitHub --owner vadimcn --repo vscode-lldb --rev "v$version" --fetchSubmodules) +sed -E 's/\bsha256 = ".*?"/sha256 = "'$srcHash'"/' --in-place "$nixFile" +cargoHash=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).vscode-extensions.vadimcn.vscode-lldb.adapter.cargoDeps.overrideAttrs (_: { outputHash = sha256; })") +sed -E 's#\bcargoSha256 = ".*?"#cargoSha256 = "'$cargoHash'"#' --in-place "$nixFile" + +src="$(nix-build $nixpkgs -A vscode-extensions.vadimcn.vscode-lldb.src --no-out-link)" +jq '{ name, version: $version, dependencies: (.dependencies + .devDependencies) }' \ + --arg version "$version" \ + "$src/package.json" \ + > build-deps/package.json + +# Regenerate nodePackages. +cd "$nixpkgs/pkgs/development/node-packages" +exec ./generate.sh -- cgit 1.4.1 From 1646652b4a096887af87bca7cfbe2bcf6932070a Mon Sep 17 00:00:00 2001 From: oxalica Date: Fri, 5 Feb 2021 19:37:39 +0800 Subject: vscode-extensions.vadimcn.vscode-lldb: fix --- pkgs/misc/vscode-extensions/default.nix | 2 +- pkgs/misc/vscode-extensions/vscode-lldb/update.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'pkgs/misc') diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix index 0f25d5ff8f00..11f380476309 100644 --- a/pkgs/misc/vscode-extensions/default.nix +++ b/pkgs/misc/vscode-extensions/default.nix @@ -689,7 +689,7 @@ let }; }; - vadimcn.vscode-lldb = callPackage ./vscode-lldb {}; + vadimcn.vscode-lldb = callPackage ./vscode-lldb { }; vincaslt.highlight-matching-tag = buildVscodeMarketplaceExtension { mktplcRef = { diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/update.sh b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh index 75e645b04224..0f3e407ddde4 100755 --- a/pkgs/misc/vscode-extensions/vscode-lldb/update.sh +++ b/pkgs/misc/vscode-extensions/vscode-lldb/update.sh @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -p git jq nix-prefetch +#!nix-shell -i bash -p jq nix-prefetch set -eo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" if [[ $# -ne 1 ]]; then -- cgit 1.4.1 From 2cc65ccf6df69949ff9c83d209dde4f95ebb8fca Mon Sep 17 00:00:00 2001 From: oxalica Date: Sat, 6 Feb 2021 00:14:13 +0800 Subject: vscode-extensions.vadimcn.vscode-lldb: x86_64-linux only --- pkgs/misc/vscode-extensions/vscode-lldb/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'pkgs/misc') diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix index 2b2da76fbad7..6a10d54e2d66 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix +++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix @@ -95,6 +95,7 @@ in stdenv.mkDerivation rec { homepage = "https://github.com/vadimcn/vscode-lldb"; license = with licenses; [ mit ]; maintainers = with maintainers; [ oxalica ]; - platforms = platforms.all; + # Build failed on x86_64-darwin. + platforms = [ "x86_64-linux" ]; }; } -- cgit 1.4.1 From c5a82fbadbc71def3a04d95ba4d400d397bb0723 Mon Sep 17 00:00:00 2001 From: oxalica Date: Sat, 6 Feb 2021 10:41:36 +0800 Subject: vscode-extensions.vadimcn.vscode-lldb: mark as broken on darwin --- pkgs/misc/vscode-extensions/vscode-lldb/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pkgs/misc') diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix index 6a10d54e2d66..c4d228281038 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix +++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix @@ -95,7 +95,7 @@ in stdenv.mkDerivation rec { homepage = "https://github.com/vadimcn/vscode-lldb"; license = with licenses; [ mit ]; maintainers = with maintainers; [ oxalica ]; - # Build failed on x86_64-darwin. - platforms = [ "x86_64-linux" ]; + platforms = platforms.all; + broken = stdenv.isDarwin; # Build failed on x86_64-darwin currently. }; } -- cgit 1.4.1