fix(build.zig): reunify parser install path

Both for tests and for system wide install, $PREFIX/lib/nvim/parser
is a valid path for tree-sitter parsers. This also brings the build.zig
behavior in line with how we set up the paths in CMakeLists.txt
This commit is contained in:
bfredl
2026-04-23 12:32:08 +02:00
parent a4ad469fb1
commit d50cca5b87
2 changed files with 13 additions and 32 deletions
+12 -30
View File
@@ -611,31 +611,28 @@ pub fn build(b: *std.Build) !void {
xxd_exe.root_module.addCSourceFile(.{ .file = b.path("src/xxd/xxd.c") });
test_deps.dependOn(&b.addInstallArtifact(xxd_exe, .{}).step);
const parser_deps = b.step("parsers", "build tree-sitter parsers");
test_runtime_install.step.dependOn(parser_deps);
install.dependOn(parser_deps);
const parser_c = b.dependency("treesitter_c", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize_ts));
const parser_markdown = b.dependency("treesitter_markdown", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize_ts, .install));
test_deps.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize_ts));
parser_deps.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize_ts));
const parser_vim = b.dependency("treesitter_vim", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize_ts));
const parser_vimdoc = b.dependency("treesitter_vimdoc", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize_ts));
const parser_lua = b.dependency("treesitter_lua", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize_ts));
const parser_query = b.dependency("treesitter_query", .{ .target = target, .optimize = optimize_ts });
test_deps.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize_ts, .test_));
install.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize_ts, .install));
parser_deps.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize_ts));
var unit_headers: ?[]const LazyPath = null;
if (support_unittests) {
@@ -693,7 +690,6 @@ pub fn add_ts_parser(
scanner: bool,
target: std.Build.ResolvedTarget,
optimize: std.builtin.OptimizeMode,
path: enum { test_, install },
) *std.Build.Step {
var root_module = b.createModule(.{
.target = target,
@@ -709,21 +705,7 @@ pub fn add_ts_parser(
if (scanner) root_module.addCSourceFile(.{ .file = parser_dir.path(b, "src/scanner.c") });
root_module.addIncludePath(parser_dir.path(b, "src"));
switch (path) {
.install => {
const parser_install = b.addInstallArtifact(parser, .{
.dest_dir = .{ .override = .{ .custom = "share/nvim/runtime/parser" } },
.dest_sub_path = b.fmt("{s}.so", .{name}),
});
return &parser_install.step;
},
.test_ => {
const parser_install = b.addInstallArtifact(parser, .{
.dest_sub_path = b.fmt("parser/{s}.so", .{name}),
});
return &parser_install.step;
},
}
return &b.addInstallArtifact(parser, .{ .dest_sub_path = b.fmt("nvim/parser/{s}.so", .{name}) }).step;
}
pub fn lua_version_info(b: *std.Build) []u8 {
+1 -2
View File
@@ -20,8 +20,7 @@ local sleep = uv.sleep
--- Functions executing in the current nvim session/process being tested.
local M = {}
local lib_path = t.paths.test_build_dir .. (t.is_zig_build() and '/lib' or '/lib/nvim')
M.runtime_set = 'set runtimepath^=' .. lib_path
M.runtime_set = 'set runtimepath^=' .. t.paths.test_build_dir .. '/lib/nvim'
M.nvim_prog = (os.getenv('NVIM_PRG') or t.paths.test_build_dir .. '/bin/nvim')
-- Default settings for the test session.