mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
build(nix): change the pkgs to final, add new version of libvterm (#20410)
This commit is contained in:
@@ -8,61 +8,63 @@
|
|||||||
|
|
||||||
outputs = { self, nixpkgs, flake-utils }:
|
outputs = { self, nixpkgs, flake-utils }:
|
||||||
{
|
{
|
||||||
overlay = final: prev:
|
overlay = final: prev: rec {
|
||||||
let
|
neovim-unwrapped = prev.neovim-unwrapped.override ({
|
||||||
pkgs = nixpkgs.legacyPackages.${prev.system};
|
libvterm-neovim = prev.libvterm-neovim.overrideAttrs (old: {
|
||||||
in
|
version = "0.3";
|
||||||
rec {
|
src = builtins.fetchTarball {
|
||||||
neovim = pkgs.neovim-unwrapped.overrideAttrs (oa: {
|
url = "https://www.leonerd.org.uk/code/libvterm/libvterm-0.3.tar.gz";
|
||||||
version = "master";
|
sha256 = "0zg6sn5brwrnqaab883pdj0l2swk5askbbwbdam0zq55ikbrzgar";
|
||||||
src = ../.;
|
};
|
||||||
|
|
||||||
buildInputs = oa.buildInputs ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [
|
|
||||||
CoreServices
|
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
# a development binary to help debug issues
|
neovim = final.neovim-unwrapped.overrideAttrs (oa: {
|
||||||
neovim-debug =
|
version = "master";
|
||||||
let
|
src = ../.;
|
||||||
stdenv = if pkgs.stdenv.isLinux then pkgs.llvmPackages_latest.stdenv else pkgs.stdenv;
|
|
||||||
in
|
|
||||||
((neovim.override {
|
|
||||||
lua = pkgs.luajit;
|
|
||||||
inherit stdenv;
|
|
||||||
}).overrideAttrs (oa: {
|
|
||||||
|
|
||||||
dontStrip = true;
|
buildInputs = oa.buildInputs
|
||||||
NIX_CFLAGS_COMPILE = " -ggdb -Og";
|
++ final.lib.optionals final.stdenv.isDarwin
|
||||||
|
(with final.darwin.apple_sdk.frameworks; [ CoreServices ]);
|
||||||
|
});
|
||||||
|
|
||||||
cmakeBuildType = "Debug";
|
# a development binary to help debug issues
|
||||||
cmakeFlags = oa.cmakeFlags ++ [
|
neovim-debug = let
|
||||||
"-DMIN_LOG_LEVEL=0"
|
stdenv = if final.stdenv.isLinux then
|
||||||
];
|
final.llvmPackages_latest.stdenv
|
||||||
|
else
|
||||||
|
final.stdenv;
|
||||||
|
in ((neovim.override {
|
||||||
|
lua = final.luajit;
|
||||||
|
inherit stdenv;
|
||||||
|
}).overrideAttrs (oa: {
|
||||||
|
|
||||||
disallowedReferences = [ ];
|
dontStrip = true;
|
||||||
}));
|
NIX_CFLAGS_COMPILE = " -ggdb -Og";
|
||||||
|
|
||||||
# for neovim developers, beware of the slow binary
|
cmakeBuildType = "Debug";
|
||||||
neovim-developer =
|
cmakeFlags = oa.cmakeFlags ++ [ "-DMIN_LOG_LEVEL=0" ];
|
||||||
let
|
|
||||||
lib = nixpkgs.lib;
|
disallowedReferences = [ ];
|
||||||
luacheck = pkgs.luaPackages.luacheck;
|
}));
|
||||||
in
|
|
||||||
(neovim-debug.override ({ doCheck = pkgs.stdenv.isLinux; })).overrideAttrs (oa: {
|
# for neovim developers, beware of the slow binary
|
||||||
cmakeFlags = oa.cmakeFlags ++ [
|
neovim-developer = let luacheck = final.luaPackages.luacheck;
|
||||||
"-DLUACHECK_PRG=${luacheck}/bin/luacheck"
|
in (neovim-debug.override ({
|
||||||
"-DMIN_LOG_LEVEL=0"
|
doCheck = final.stdenv.isLinux;
|
||||||
"-DENABLE_LTO=OFF"
|
})).overrideAttrs (oa: {
|
||||||
] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [
|
cmakeFlags = oa.cmakeFlags ++ [
|
||||||
# https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
|
"-DLUACHECK_PRG=${luacheck}/bin/luacheck"
|
||||||
# https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
|
"-DMIN_LOG_LEVEL=0"
|
||||||
"-DCLANG_ASAN_UBSAN=ON"
|
"-DENABLE_LTO=OFF"
|
||||||
];
|
] ++ final.lib.optionals final.stdenv.isLinux [
|
||||||
});
|
# https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
|
||||||
};
|
# https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
|
||||||
} //
|
"-DCLANG_ASAN_UBSAN=ON"
|
||||||
flake-utils.lib.eachDefaultSystem (system:
|
];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
} // flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
overlays = [ self.overlay ];
|
overlays = [ self.overlay ];
|
||||||
@@ -75,26 +77,22 @@
|
|||||||
ps.msgpack
|
ps.msgpack
|
||||||
ps.flake8 # for 'make pylint'
|
ps.flake8 # for 'make pylint'
|
||||||
]);
|
]);
|
||||||
in
|
in {
|
||||||
rec {
|
|
||||||
|
|
||||||
packages = with pkgs; {
|
packages = with pkgs; {
|
||||||
default = neovim;
|
default = neovim;
|
||||||
inherit neovim neovim-debug neovim-developer;
|
inherit neovim neovim-debug neovim-developer;
|
||||||
};
|
};
|
||||||
|
|
||||||
checks = {
|
checks = {
|
||||||
pylint = pkgs.runCommandNoCC "pylint"
|
pylint = pkgs.runCommand "pylint" {
|
||||||
{
|
nativeBuildInputs = [ pythonEnv ];
|
||||||
nativeBuildInputs = [ pythonEnv ];
|
preferLocalBuild = true;
|
||||||
preferLocalBuild = true;
|
} "make -C ${./..} pylint > $out";
|
||||||
} "make -C ${./..} pylint > $out";
|
|
||||||
|
|
||||||
shlint = pkgs.runCommandNoCC "shlint"
|
shlint = pkgs.runCommand "shlint" {
|
||||||
{
|
nativeBuildInputs = [ pkgs.shellcheck ];
|
||||||
nativeBuildInputs = [ pkgs.shellcheck ];
|
preferLocalBuild = true;
|
||||||
preferLocalBuild = true;
|
} "make -C ${./..} shlint > $out";
|
||||||
} "make -C ${./..} shlint > $out";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# kept for backwards-compatibility
|
# kept for backwards-compatibility
|
||||||
@@ -103,17 +101,18 @@
|
|||||||
devShells = {
|
devShells = {
|
||||||
default = pkgs.neovim-developer.overrideAttrs (oa: {
|
default = pkgs.neovim-developer.overrideAttrs (oa: {
|
||||||
|
|
||||||
buildInputs = with pkgs; oa.buildInputs ++ [
|
buildInputs = with pkgs;
|
||||||
cmake
|
oa.buildInputs ++ [
|
||||||
lua.pkgs.luacheck
|
cmake
|
||||||
sumneko-lua-language-server
|
lua.pkgs.luacheck
|
||||||
pythonEnv
|
sumneko-lua-language-server
|
||||||
include-what-you-use # for scripts/check-includes.py
|
pythonEnv
|
||||||
jq # jq for scripts/vim-patch.sh -r
|
include-what-you-use # for scripts/check-includes.py
|
||||||
shellcheck # for `make shlint`
|
jq # jq for scripts/vim-patch.sh -r
|
||||||
doxygen # for script/gen_vimdoc.py
|
shellcheck # for `make shlint`
|
||||||
clang-tools # for clangd to find the correct headers
|
doxygen # for script/gen_vimdoc.py
|
||||||
];
|
clang-tools # for clangd to find the correct headers
|
||||||
|
];
|
||||||
|
|
||||||
shellHook = oa.shellHook + ''
|
shellHook = oa.shellHook + ''
|
||||||
export NVIM_PYTHON_LOG_LEVEL=DEBUG
|
export NVIM_PYTHON_LOG_LEVEL=DEBUG
|
||||||
|
Reference in New Issue
Block a user