diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/adapter.nix b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/adapter.nix index 11d60d8a10b8..726703c99c51 100644 --- a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/adapter.nix +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/adapter.nix @@ -4,10 +4,14 @@ makeWrapper, rustPlatform, stdenv, + codelldb-launch, pname, src, version, + + cargoHash, + standalone ? false, }: let # debugservers on macOS require the 'com.apple.security.cs.debugger' @@ -24,17 +28,19 @@ rustPlatform.buildRustPackage { pname = "${pname}-adapter"; inherit version src; - cargoHash = "sha256-Nh4YesgWa1JR8tLfrIRps9TBdsAfilXu6G2/kB08co8="; + inherit cargoHash; # Environment variables, based on # The LLDB_* variables are used in adapter/lldb/build.rs. "CC_${LLVM_TRIPLE}" = "${stdenv.cc}/bin/cc"; "CXX_${LLVM_TRIPLE}" = "${stdenv.cc}/bin/c++"; + LLDB_DYLIB = "${lib.getLib lldb}/lib/liblldb${stdenv.hostPlatform.extensions.sharedLibrary}"; LLDB_INCLUDE = "${lib.getDev lldb}/include"; - LLDB_LINK_LIB = "lldb"; - LLDB_LINK_SEARCH = "${lib.getLib lldb}/lib"; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ + makeWrapper + ] + ++ lib.optional standalone codelldb-launch; buildAndTestSubdir = "adapter"; @@ -54,6 +60,10 @@ rustPlatform.buildRustPackage { ln -s ${lib.getLib lldb} $out/share/lldb makeWrapper $out/share/adapter/codelldb $out/bin/codelldb \ --set-default LLDB_DEBUGSERVER_PATH "${lldbServer}" + + ${lib.optionalString standalone '' + cp ${codelldb-launch}/bin/codelldb-launch $out/share/adapter/codelldb-launch + ''} ''; # Tests fail to build (as of version 1.11.4). diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-launch.nix b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-launch.nix new file mode 100644 index 000000000000..1ad83bc6d4fc --- /dev/null +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-launch.nix @@ -0,0 +1,22 @@ +{ + makeBinaryWrapper, + rustPlatform, + pname, + src, + version, + + cargoHash, +}: +rustPlatform.buildRustPackage { + pname = "${pname}-codelldb-launch"; + inherit version src cargoHash; + + nativeBuildInputs = [ makeBinaryWrapper ]; + + cargoBuildFlags = [ + "--package=codelldb-launch" + ]; + + # Tests fail to build (as of version 1.12.0). + doCheck = false; +} diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-types.nix b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-types.nix new file mode 100644 index 000000000000..2527acd7fb16 --- /dev/null +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/codelldb-types.nix @@ -0,0 +1,22 @@ +{ + makeWrapper, + rustPlatform, + pname, + src, + version, + + cargoHash, +}: +rustPlatform.buildRustPackage { + pname = "${pname}-codelldb-types"; + inherit version src cargoHash; + + nativeBuildInputs = [ makeWrapper ]; + + cargoBuildFlags = [ + "--package=codelldb-types" + ]; + + # Tests fail to build (as of version 1.12.0). + doCheck = false; +} diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix index 4fc5c6892461..b17bc1d76708 100644 --- a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix @@ -10,14 +10,13 @@ nodejs, python3, rustc, - stdenv, unzip, }: assert lib.versionAtLeast python3.version "3.5"; let publisher = "vadimcn"; pname = "vscode-lldb"; - version = "1.11.4"; + version = "1.12.1"; vscodeExtUniqueId = "${publisher}.${pname}"; vscodeExtPublisher = publisher; @@ -27,10 +26,13 @@ let owner = "vadimcn"; repo = "codelldb"; rev = "v${version}"; - hash = "sha256-+Pe7ij5ukF5pLgwvr+HOHjIv1TQDiPOEeJtkpIW9XWI="; + hash = "sha256-B8iCy4NXG7IzJVncbYm5VoAMfhMfxGF+HW7M5sVn5b0="; }; lldb = llvmPackages_19.lldb; + stdenv = llvmPackages_19.libcxxStdenv; + + cargoHash = "sha256-fuUTLdavMiYfpyxctXes2GJCsNZd5g1d4B/v+W/Rnu8="; adapter = ( callPackage ./adapter.nix { @@ -38,15 +40,16 @@ let # based on the provided CMake toolchain files. # rustPlatform = makeRustPlatform { - stdenv = llvmPackages_19.libcxxStdenv; - inherit cargo rustc; + inherit stdenv cargo rustc; }; - stdenv = llvmPackages_19.libcxxStdenv; inherit pname src version + stdenv + cargoHash + codelldb-launch ; } ); @@ -61,6 +64,36 @@ let } ); + codelldb-types = ( + callPackage ./codelldb-types.nix { + rustPlatform = makeRustPlatform { + inherit stdenv cargo rustc; + }; + + inherit + pname + src + version + cargoHash + ; + } + ); + + codelldb-launch = ( + callPackage ./codelldb-launch.nix { + rustPlatform = makeRustPlatform { + inherit stdenv cargo rustc; + }; + + inherit + pname + src + version + cargoHash + ; + } + ); + in stdenv.mkDerivation { pname = "vscode-extension-${publisher}-${pname}"; @@ -79,6 +112,8 @@ stdenv.mkDerivation { makeWrapper nodejs unzip + codelldb-types + codelldb-launch ]; patches = [ ./patches/cmake-build-extension-only.patch ]; @@ -118,6 +153,11 @@ stdenv.mkDerivation { wrapProgram $ext/adapter/codelldb \ --prefix LD_LIBRARY_PATH : "$ext/lldb/lib" \ --set-default LLDB_DEBUGSERVER_PATH "${adapter.lldbServer}" + + # Used by VSCode + mkdir -p $ext/bin + cp ${codelldb-launch}/bin/codelldb-launch $ext/bin/codelldb-launch + # Mark that all components are installed. touch $ext/platform.ok @@ -132,7 +172,8 @@ stdenv.mkDerivation { ''; passthru = { - inherit lldb adapter; + inherit lldb; + adapter = adapter.override { standalone = true; }; updateScript = ./update.sh; }; diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/node_deps.nix b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/node_deps.nix index d9ab939c5dac..7b4b082988be 100644 --- a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/node_deps.nix +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/node_deps.nix @@ -16,7 +16,7 @@ buildNpmPackage { pname = "${pname}-node-deps"; inherit version src; - npmDepsHash = "sha256-Efeun7AFMAnoNXLbTGH7OWHaBHT2tO9CodfjKrIYw40="; + npmDepsHash = "sha256-TCeIBrlsNuphW2gVsX97+Wu1lOG5gDwS7559YA1d10M="; nativeBuildInputs = [ python3 diff --git a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/patches/cmake-build-extension-only.patch b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/patches/cmake-build-extension-only.patch index da71f77a45c6..023fb34ef6cf 100644 --- a/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/patches/cmake-build-extension-only.patch +++ b/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/patches/cmake-build-extension-only.patch @@ -1,5 +1,5 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 5cab8b1..0b500d5 100644 +index 3e4f955..2ca59d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,13 +16,6 @@ endif() @@ -13,27 +13,32 @@ index 5cab8b1..0b500d5 100644 - message(FATAL_ERROR "LLDB_PACKAGE not set." ) -endif() - - if (CMAKE_SYSROOT) - set(CMAKE_C_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_CXX_FLAGS}") -@@ -116,16 +109,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY) - configure_file(webpack.config.js ${CMAKE_CURRENT_BINARY_DIR}/webpack.config.js) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + set(CMAKE_CTEST_ARGUMENTS "--output-on-failure" CACHE INTERNAL "CTest arguments") + set(TEST_TIMEOUT 5000 CACHE STRING "Test timeout [ms]") +@@ -120,12 +113,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY) + # We still need to resolve codelldb schema $ref's in it, but we'll do this during the build. + file(COPY_FILE ${CMAKE_CURRENT_BINARY_DIR}/package.json ${CMAKE_CURRENT_BINARY_DIR}/package.pre.json) + file(COPY_FILE ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json) -# Install node_modules -execute_process( -- COMMAND ${NPM} --loglevel verbose ci # like install, but actually respects package-lock file. +- COMMAND ${NPM} install - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -- RESULT_VARIABLE Result +- COMMAND_ERROR_IS_FATAL ANY -) --if (NOT ${Result} EQUAL 0) -- message(FATAL_ERROR "npm install failed: ${Result}") --endif() -- - # Resolve $refs - execute_process( - COMMAND ${WithEnv} NODE_PATH=${CMAKE_CURRENT_BINARY_DIR}/node_modules node ${CMAKE_CURRENT_SOURCE_DIR}/tools/prep-package.js ${CMAKE_CURRENT_BINARY_DIR}/package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json -@@ -183,6 +166,7 @@ add_custom_target(adapter_tests + # So we can commit any changes + file(COPY_FILE ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json) + +@@ -133,7 +120,7 @@ file(COPY_FILE ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json ${CMAKE_CURRENT_SOU + add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/package.json ${CMAKE_BINARY_DIR}/generated/codelldb.ts + DEPENDS ${CMAKE_SOURCE_DIR}/package.json ${CMAKE_SOURCE_DIR}/src/codelldb-types/src/lib.rs +- COMMAND cargo run --package codelldb-types -- ${CMAKE_BINARY_DIR}/codelldb.schema.json ++ COMMAND codelldb-types ${CMAKE_BINARY_DIR}/codelldb.schema.json + COMMAND ${WithEnv} NODE_PATH=${CMAKE_CURRENT_BINARY_DIR}/node_modules node ${CMAKE_CURRENT_SOURCE_DIR}/tools/prep-package.js + ${CMAKE_CURRENT_BINARY_DIR}/package.pre.json ${CMAKE_CURRENT_BINARY_DIR}/package.json + COMMAND ${NPM} run json2ts -- ${CMAKE_BINARY_DIR}/codelldb.schema.json ${CMAKE_BINARY_DIR}/generated/codelldb.ts +@@ -158,6 +145,7 @@ add_custom_target(update_lockfiles add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}/README.md) add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md ${CMAKE_CURRENT_BINARY_DIR}/CHANGELOG.md) @@ -41,7 +46,7 @@ index 5cab8b1..0b500d5 100644 add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/lldb.png ${CMAKE_CURRENT_BINARY_DIR}/images/lldb.png) add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/user.svg ${CMAKE_CURRENT_BINARY_DIR}/images/user.svg) add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/users.svg ${CMAKE_CURRENT_BINARY_DIR}/images/users.svg) -@@ -199,6 +183,7 @@ add_custom_target(dev_debugging +@@ -174,6 +162,7 @@ add_custom_target(dev_debugging set(PackagedFilesBootstrap README.md CHANGELOG.md