From 03fab291466efa22e52f5fe504705500cd1ad1cb Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 15:40:36 -0400 Subject: [PATCH 01/11] tree-sitter: split binary into -tools subpackage --- srcpkgs/tree-sitter-cli | 1 + srcpkgs/tree-sitter/template | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 120000 srcpkgs/tree-sitter-cli diff --git a/srcpkgs/tree-sitter-cli b/srcpkgs/tree-sitter-cli new file mode 120000 index 00000000000000..80b8bba47cab27 --- /dev/null +++ b/srcpkgs/tree-sitter-cli @@ -0,0 +1 @@ +tree-sitter \ No newline at end of file diff --git a/srcpkgs/tree-sitter/template b/srcpkgs/tree-sitter/template index b979353f869091..249667350ac912 100644 --- a/srcpkgs/tree-sitter/template +++ b/srcpkgs/tree-sitter/template @@ -1,7 +1,7 @@ # Template file for 'tree-sitter' pkgname=tree-sitter version=0.25.10 -revision=1 +revision=2 build_style=cargo make_install_args="--path=cli" short_desc="Parser generator tool and incremental parsing library" @@ -29,10 +29,16 @@ tree-sitter-devel_package() { short_desc+=" - development files" depends="${sourcepkg}>=${version}_${revision}" pkg_install() { - vmove usr/bin vmove usr/include vmove "usr/lib/*.a" vmove "usr/lib/*.so" vmove usr/lib/pkgconfig } } + +tree-sitter-cli_package() { + short_desc+=" - command-line tools" + pkg_install() { + vmove usr/bin + } +} From 7426f8ebe66dc3c30d30215034fd8d3b6a6617b6 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 15:41:33 -0400 Subject: [PATCH 02/11] common/build-style: add build-style for building tree-sitter grammmars --- common/build-style/tree-sitter.sh | 50 +++++++++++++++++++ common/environment/build-style/tree-sitter.sh | 3 ++ 2 files changed, 53 insertions(+) create mode 100644 common/build-style/tree-sitter.sh create mode 100644 common/environment/build-style/tree-sitter.sh diff --git a/common/build-style/tree-sitter.sh b/common/build-style/tree-sitter.sh new file mode 100644 index 00000000000000..382b8798c31fe0 --- /dev/null +++ b/common/build-style/tree-sitter.sh @@ -0,0 +1,50 @@ +# +# This helper is for templates using building tree-sitter grammars. +# +do_build() { + : "${treesitter_src:=./src}" + CFLAGS="-fPIC -Wall -I ./ -std=c99 $CFLAGS" + CXXFLAGS="-fPIC -Wall -I ./ -fno-exceptions $CXXFLAGS" + LDFLAGS="-shared $LDFLAGS" + + if [ -z "${treesitter_lang}" ]; then + treesitter_lang="$(jq -re '.name' "${treesitter_src}/grammar.json")" + fi + + cd "$treesitter_src" + + $CC $CFLAGS -c ./*.c + if compgen -G "./*.cc"; then + $CXX $CXXFLAGS -c ./*.cc + $CXX $LDFLAGS -o "$treesitter_lang.so" ./*.o + else + $CC $LDFLAGS -o "$treesitter_lang.so" ./*.o + fi + unset treesitter_lang +} + +do_check() { + tree-sitter test +} + +do_install() { + : "${treesitter_src:=./src}" "${treesitter_queries:=./queries}" + + if [ -z "${treesitter_lang}" ]; then + treesitter_lang="$(jq -re '.name' "${treesitter_src}/grammar.json")" + fi + + # Some programs expect grammar libs as .so in a specific + # directory, some expect libtree-sitter-.so on the library path. + vinstall "${treesitter_src}/${treesitter_lang}.so" 755 "usr/lib/tree-sitter" + ln -s "tree-sitter/${treesitter_lang}.so" "${DESTDIR}/usr/lib/libtree-sitter-${treesitter_lang}.so" + + if [ -d "${treesitter_queries}" ] && compgen -G "./${treesitter_queries}/*.scm"; then + vmkdir "usr/share/tree-sitter/queries/${treesitter_lang}" + vcopy "${treesitter_queries}/*.scm" "usr/share/tree-sitter/queries/${treesitter_lang}" + elif [ -d "${treesitter_queries}/${treesitter_lang}" ] && compgen -G "./${treesitter_queries}/${treesitter_lang}/*.scm"; then + vmkdir "usr/share/tree-sitter/queries/${treesitter_lang}" + vcopy "${treesitter_queries}/${treesitter_lang}/*.scm" "usr/share/tree-sitter/queries/${treesitter_lang}" + fi + unset treesitter_lang +} diff --git a/common/environment/build-style/tree-sitter.sh b/common/environment/build-style/tree-sitter.sh new file mode 100644 index 00000000000000..260cb11a19f52d --- /dev/null +++ b/common/environment/build-style/tree-sitter.sh @@ -0,0 +1,3 @@ +lib32disabled=yes +hostmakedepends+=" jq" +checkdepends+=" tree-sitter-cli" From 7ef3699707757ea6614ed65269df07f9d004905a Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:14 -0400 Subject: [PATCH 03/11] New package: tree-sitter-c-0.24.1 --- srcpkgs/tree-sitter-c/template | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 srcpkgs/tree-sitter-c/template diff --git a/srcpkgs/tree-sitter-c/template b/srcpkgs/tree-sitter-c/template new file mode 100644 index 00000000000000..bab35251beb98a --- /dev/null +++ b/srcpkgs/tree-sitter-c/template @@ -0,0 +1,15 @@ +# Template file for 'tree-sitter-c' +pkgname=tree-sitter-c +version=0.24.1 +revision=1 +build_style=tree-sitter +short_desc="C grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter/tree-sitter-c" +distfiles="https://github.com/tree-sitter/tree-sitter-c/archive/refs/tags/v${version}.tar.gz" +checksum=25dd4bb3dec770769a407e0fc803f424ce02c494a56ce95fedc525316dcf9b48 + +post_install() { + vlicense LICENSE +} From 659d830df4070a8fec27bd73f464cca34cab88ea Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:22 -0400 Subject: [PATCH 04/11] New package: tree-sitter-lua-0.5.0 --- srcpkgs/tree-sitter-lua/template | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 srcpkgs/tree-sitter-lua/template diff --git a/srcpkgs/tree-sitter-lua/template b/srcpkgs/tree-sitter-lua/template new file mode 100644 index 00000000000000..881986edd3b24a --- /dev/null +++ b/srcpkgs/tree-sitter-lua/template @@ -0,0 +1,15 @@ +# Template file for 'tree-sitter-lua' +pkgname=tree-sitter-lua +version=0.5.0 +revision=1 +build_style=tree-sitter +short_desc="Lua grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter-grammars/tree-sitter-lua" +distfiles="https://github.com/tree-sitter-grammars/tree-sitter-lua/archive/refs/tags/v${version}.tar.gz" +checksum=cf01b93f4b61b96a6d27942cf28eeda4cbce7d503c3bef773a8930b3d778a2d9 + +post_install() { + vlicense LICENSE.md +} From 42258d4ca3ee3b93f5b3c42f723ca28dfdee63f2 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:30 -0400 Subject: [PATCH 05/11] New package: tree-sitter-markdown-0.5.3 --- srcpkgs/tree-sitter-markdown/template | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 srcpkgs/tree-sitter-markdown/template diff --git a/srcpkgs/tree-sitter-markdown/template b/srcpkgs/tree-sitter-markdown/template new file mode 100644 index 00000000000000..9c8b84a03ec2f0 --- /dev/null +++ b/srcpkgs/tree-sitter-markdown/template @@ -0,0 +1,30 @@ +# Template file for 'tree-sitter-markdown' +pkgname=tree-sitter-markdown +version=0.5.3 +revision=1 +build_style=tree-sitter +build_wrksrc="tree-sitter-markdown" +short_desc="Markdown grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter-grammars/tree-sitter-markdown" +distfiles=""https://github.com/tree-sitter-grammars/tree-sitter-markdown/archive/refs/tags/v${version}.tar.gz +checksum=df845b1ab7c7c163ec57d7fa17170c92b04be199bddab02523636efec5224ab6 + +post_build() { + cd "${wrksrc}/tree-sitter-markdown-inline" + do_build +} + +# XXX: currently fails +# post_check() { +# cd "${wrksrc}/tree-sitter-markdown-inline" +# do_check +# } + +post_install() { + cd "${wrksrc}/tree-sitter-markdown-inline" + do_install + + vlicense "${wrksrc}/LICENSE" +} From 4f98430e555ae68c1881120573c9579c4903717a Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:37 -0400 Subject: [PATCH 06/11] New package: tree-sitter-query-0.8.0 --- srcpkgs/tree-sitter-query/template | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 srcpkgs/tree-sitter-query/template diff --git a/srcpkgs/tree-sitter-query/template b/srcpkgs/tree-sitter-query/template new file mode 100644 index 00000000000000..85adff08cb23d2 --- /dev/null +++ b/srcpkgs/tree-sitter-query/template @@ -0,0 +1,11 @@ +# Template file for 'tree-sitter-query' +pkgname=tree-sitter-query +version=0.8.0 +revision=1 +build_style=tree-sitter +short_desc="TS query grammar for tree-sitter" +maintainer="classabbyamp " +license="Apache-2.0" +homepage="https://github.com/tree-sitter-grammars/tree-sitter-query" +distfiles="https://github.com/tree-sitter-grammars/tree-sitter-query/archive/refs/tags/v${version}.tar.gz" +checksum=c2b23b9a54cffcc999ded4a5d3949daf338bebb7945dece229f832332e6e6a7d From 3ea9a1cdb0d87a4fbee99f7922657843ed2c534a Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:54 -0400 Subject: [PATCH 07/11] New package: tree-sitter-vim-0.8.1 --- srcpkgs/tree-sitter-vim/template | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 srcpkgs/tree-sitter-vim/template diff --git a/srcpkgs/tree-sitter-vim/template b/srcpkgs/tree-sitter-vim/template new file mode 100644 index 00000000000000..d6ff0827e351ed --- /dev/null +++ b/srcpkgs/tree-sitter-vim/template @@ -0,0 +1,15 @@ +# Template file for 'tree-sitter-vim' +pkgname=tree-sitter-vim +version=0.8.1 +revision=1 +build_style=tree-sitter +short_desc="Vimscript grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter-grammars/tree-sitter-vim" +distfiles="https://github.com/tree-sitter-grammars/tree-sitter-vim/archive/refs/tags/v${version}.tar.gz" +checksum=93cafb9a0269420362454ace725a118ff1c3e08dcdfdc228aa86334b54d53c2a + +post_install() { + vlicense LICENSE +} From 27e94bf60268d8ca419488f781d351ab57d61fbe Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:44:57 -0400 Subject: [PATCH 08/11] New package: tree-sitter-vimdoc-4.1.0 --- srcpkgs/tree-sitter-vimdoc/template | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 srcpkgs/tree-sitter-vimdoc/template diff --git a/srcpkgs/tree-sitter-vimdoc/template b/srcpkgs/tree-sitter-vimdoc/template new file mode 100644 index 00000000000000..ac1b081ccdda92 --- /dev/null +++ b/srcpkgs/tree-sitter-vimdoc/template @@ -0,0 +1,11 @@ +# Template file for 'tree-sitter-vimdoc' +pkgname=tree-sitter-vimdoc +version=4.1.0 +revision=1 +build_style=tree-sitter +short_desc="Tree-sitter parser for Vim help files" +maintainer="classabbyamp " +license="Apache-2.0" +homepage="https://github.com/neovim/tree-sitter-vimdoc" +distfiles="https://github.com/neovim/tree-sitter-vimdoc/archive/refs/tags/v${version}.tar.gz" +checksum=020e8f117f648c8697fca967995c342e92dbd81dab137a115cc7555207fbc84f From 6d30e2be3754bb96cdb95dae42d1e2c9d7139bc8 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:45:35 -0400 Subject: [PATCH 09/11] neovim: devendor tree-sitter grammars --- srcpkgs/neovim/template | 50 +++++++---------------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/srcpkgs/neovim/template b/srcpkgs/neovim/template index 8209ada148d856..b0393806455f1a 100644 --- a/srcpkgs/neovim/template +++ b/srcpkgs/neovim/template @@ -1,47 +1,22 @@ # Template file for 'neovim' pkgname=neovim version=0.12.1 -revision=1 -# as per https://github.com/neovim/neovim/blob/master/cmake.deps/deps.txt -_treesitter_c_version=0.24.1 -_treesitter_lua_version=0.5.0 -_treesitter_vim_version=0.8.1 -_treesitter_vimdoc_version=4.1.0 -_treesitter_query_version=0.8.0 -_treesitter_markdown_version=0.5.3 +revision=2 build_style=cmake build_helper="qemu" configure_args="-DCOMPILE_LUA=OFF -DENABLE_TRANSLATIONS=ON -DPREFER_LUA=$(vopt_if luajit OFF ON)" hostmakedepends="gettext patchelf" makedepends="libuv-devel libluv-devel libutf8proc-devel tree-sitter-devel unibilium-devel lua51-lpeg $(vopt_if luajit LuaJIT-devel lua51-devel)" +depends="tree-sitter-c tree-sitter-lua tree-sitter-markdown tree-sitter-query + tree-sitter-vim tree-sitter-vimdoc" short_desc="Fork of Vim aiming to improve user experience, plugins and GUIs" maintainer="tranzystorekk " license="Apache-2.0 AND Vim" homepage="https://neovim.io" changelog="https://github.com/neovim/neovim/releases" -distfiles="https://github.com/neovim/neovim/archive/refs/tags/v${version}.tar.gz - https://github.com/tree-sitter/tree-sitter-c/archive/refs/tags/v${_treesitter_c_version}.tar.gz>treesitter_c_${_treesitter_c_version}.tar.gz - https://github.com/tree-sitter-grammars/tree-sitter-lua/archive/refs/tags/v${_treesitter_lua_version}.tar.gz>treesitter_lua_${_treesitter_lua_version}.tar.gz - https://github.com/tree-sitter-grammars/tree-sitter-vim/archive/refs/tags/v${_treesitter_vim_version}.tar.gz>treesitter_vim_${_treesitter_vim_version}.tar.gz - https://github.com/neovim/tree-sitter-vimdoc/archive/refs/tags/v${_treesitter_vimdoc_version}.tar.gz>treesitter_vimdoc_${_treesitter_vimdoc_version}.tar.gz - https://github.com/tree-sitter-grammars/tree-sitter-query/archive/refs/tags/v${_treesitter_query_version}.tar.gz>treesitter_query_${_treesitter_query_version}.tar.gz - https://github.com/tree-sitter-grammars/tree-sitter-markdown/archive/refs/tags/v${_treesitter_markdown_version}.tar.gz>treesitter_markdown_${_treesitter_markdown_version}.tar.gz" -checksum="41898a5073631bc8fd9ac43476b811c05fb3b88ffb043d4fbb9e75e478457336 - 25dd4bb3dec770769a407e0fc803f424ce02c494a56ce95fedc525316dcf9b48 - cf01b93f4b61b96a6d27942cf28eeda4cbce7d503c3bef773a8930b3d778a2d9 - 93cafb9a0269420362454ace725a118ff1c3e08dcdfdc228aa86334b54d53c2a - 020e8f117f648c8697fca967995c342e92dbd81dab137a115cc7555207fbc84f - c2b23b9a54cffcc999ded4a5d3949daf338bebb7945dece229f832332e6e6a7d - df845b1ab7c7c163ec57d7fa17170c92b04be199bddab02523636efec5224ab6" - -skip_extraction=" - treesitter_c_${_treesitter_c_version}.tar.gz - treesitter_lua_${_treesitter_lua_version}.tar.gz - treesitter_vim_${_treesitter_vim_version}.tar.gz - treesitter_vimdoc_${_treesitter_vimdoc_version}.tar.gz - treesitter_query_${_treesitter_query_version}.tar.gz - treesitter_markdown_${_treesitter_markdown_version}.tar.gz" +distfiles="https://github.com/neovim/neovim/archive/refs/tags/v${version}.tar.gz" +checksum=41898a5073631bc8fd9ac43476b811c05fb3b88ffb043d4fbb9e75e478457336 build_options="luajit" build_options_default="luajit" @@ -57,18 +32,6 @@ alternatives=" # They want assertion CFLAGS=-UNDEBUG -post_extract() { - for _distfile in ${skip_extraction}; do - vsrcextract -C .deps/build/src/${_distfile%_*} ${_distfile} - done -} - -pre_configure() { - # build bundled treesitter parsers - cmake -S cmake.deps -B .deps -G Ninja -DUSE_EXISTING_SRC_DIR=ON -DUSE_BUNDLED=OFF -DUSE_BUNDLED_TS_PARSERS=ON - cmake --build .deps -} - post_install() { vlicense LICENSE.txt @@ -77,4 +40,7 @@ post_install() { ${XBPS_CROSS_BASE}/usr/lib/lua/5.1/lpeg.so /usr/lib/lua/5.1/lpeg.so \ ${DESTDIR}/usr/bin/nvim fi + + # put system-provided tree-sitter grammars on runtimepath + ln -s "../../../lib/tree-sitter" "${DESTDIR}/usr/share/nvim/runtime/parser" } From e0e8157ba33e78548953ed806fed846a6c884b9b Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 16:45:07 -0400 Subject: [PATCH 10/11] New package: tree-sitter-bash-0.25.1 --- srcpkgs/tree-sitter-bash/template | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 srcpkgs/tree-sitter-bash/template diff --git a/srcpkgs/tree-sitter-bash/template b/srcpkgs/tree-sitter-bash/template new file mode 100644 index 00000000000000..f509e032abc523 --- /dev/null +++ b/srcpkgs/tree-sitter-bash/template @@ -0,0 +1,15 @@ +# Template file for 'tree-sitter-bash' +pkgname=tree-sitter-bash +version=0.25.1 +revision=1 +build_style=tree-sitter +short_desc="Bash grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter/tree-sitter-bash" +distfiles="https://github.com/tree-sitter/tree-sitter-bash/archive/refs/tags/v${version}.tar.gz" +checksum=2e785a761225b6c433410ef9c7b63cfb0a4e83a35a19e0f2aec140b42c06b52d + +post_install() { + vlicense LICENSE +} From 8ecc244daffd24615f1f159670a2c2ed36ad4d36 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sun, 12 Apr 2026 15:42:33 -0400 Subject: [PATCH 11/11] New package: tree-sitter-rust-0.24.2 --- srcpkgs/tree-sitter-rust/template | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 srcpkgs/tree-sitter-rust/template diff --git a/srcpkgs/tree-sitter-rust/template b/srcpkgs/tree-sitter-rust/template new file mode 100644 index 00000000000000..674f36a124a9ac --- /dev/null +++ b/srcpkgs/tree-sitter-rust/template @@ -0,0 +1,15 @@ +# Template file for 'tree-sitter-rust' +pkgname=tree-sitter-rust +version=0.24.2 +revision=1 +build_style=tree-sitter +short_desc="Rust grammar for tree-sitter" +maintainer="classabbyamp " +license="MIT" +homepage="https://github.com/tree-sitter/tree-sitter-rust" +distfiles="https://github.com/tree-sitter/tree-sitter-rust/archive/refs/tags/v${version}.tar.gz" +checksum=061e90a539a55a6aa65dceb0ad6425c50ab1a6e3e6d4ba430e2795ed4550f10e + +post_install() { + vlicense LICENSE +}