Files
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

147 lines
3.1 KiB
Nix

{
callPackage,
cargo,
cmake,
fetchFromGitHub,
lib,
llvmPackages_19,
makeRustPlatform,
makeWrapper,
nodejs,
python3,
rustc,
stdenv,
unzip,
}:
assert lib.versionAtLeast python3.version "3.5";
let
publisher = "vadimcn";
pname = "vscode-lldb";
version = "1.11.4";
vscodeExtUniqueId = "${publisher}.${pname}";
vscodeExtPublisher = publisher;
vscodeExtName = pname;
src = fetchFromGitHub {
owner = "vadimcn";
repo = "codelldb";
rev = "v${version}";
hash = "sha256-+Pe7ij5ukF5pLgwvr+HOHjIv1TQDiPOEeJtkpIW9XWI=";
};
lldb = llvmPackages_19.lldb;
adapter = (
callPackage ./adapter.nix {
# The adapter is meant to be compiled with clang++,
# based on the provided CMake toolchain files.
# <https://github.com/vadimcn/codelldb/tree/master/cmake>
rustPlatform = makeRustPlatform {
stdenv = llvmPackages_19.libcxxStdenv;
inherit cargo rustc;
};
stdenv = llvmPackages_19.libcxxStdenv;
inherit
pname
src
version
;
}
);
nodeDeps = (
callPackage ./node_deps.nix {
inherit
pname
src
version
;
}
);
in
stdenv.mkDerivation {
pname = "vscode-extension-${publisher}-${pname}";
inherit
src
version
vscodeExtUniqueId
vscodeExtPublisher
vscodeExtName
;
installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}";
nativeBuildInputs = [
cmake
makeWrapper
nodejs
unzip
];
patches = [ ./patches/cmake-build-extension-only.patch ];
# Make devDependencies available to tools/prep-package.js
preConfigure = ''
cp -r ${nodeDeps}/lib/node_modules .
'';
postConfigure = ''
cp -r ${nodeDeps}/lib/node_modules .
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
export HOME="$TMPDIR/home"
mkdir $HOME
'';
cmakeFlags = [
# Do not append timestamp to version.
"-DVERSION_SUFFIX="
];
makeFlags = [ "vsix_bootstrap" ];
preBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
export HOME=$TMPDIR
'';
installPhase = ''
ext=$out/$installPrefix
runHook preInstall
unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted
mkdir -p $ext/adapter
mv -t $ext vsix-extracted/extension/*
cp -t $ext/ -r ${adapter}/share/*
wrapProgram $ext/adapter/codelldb \
--prefix LD_LIBRARY_PATH : "$ext/lldb/lib" \
--set-default LLDB_DEBUGSERVER_PATH "${adapter.lldbServer}"
# Mark that all components are installed.
touch $ext/platform.ok
runHook postInstall
'';
# `adapter` will find python binary and libraries at runtime.
postFixup = ''
wrapProgram $out/$installPrefix/adapter/codelldb \
--prefix PATH : "${python3}/bin" \
--prefix LD_LIBRARY_PATH : "${python3}/lib"
'';
passthru = {
inherit lldb adapter;
updateScript = ./update.sh;
};
meta = {
description = "Native debugger extension for VSCode based on LLDB";
homepage = "https://github.com/vadimcn/vscode-lldb";
license = [ lib.licenses.mit ];
maintainers = [ lib.maintainers.r4v3n6101 ];
platforms = lib.platforms.all;
};
}