Skip to content
Draft
50 changes: 50 additions & 0 deletions common/build-style/tree-sitter.sh
Original file line number Diff line number Diff line change
@@ -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 <lang>.so in a specific
# directory, some expect libtree-sitter-<lang>.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
}
3 changes: 3 additions & 0 deletions common/environment/build-style/tree-sitter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
lib32disabled=yes
hostmakedepends+=" jq"
checkdepends+=" tree-sitter-cli"
50 changes: 8 additions & 42 deletions srcpkgs/neovim/template
Original file line number Diff line number Diff line change
@@ -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 <tranzystorek.io@protonmail.com>"
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"
Expand All @@ -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

Expand All @@ -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"
}
15 changes: 15 additions & 0 deletions srcpkgs/tree-sitter-bash/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
}
15 changes: 15 additions & 0 deletions srcpkgs/tree-sitter-c/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
}
1 change: 1 addition & 0 deletions srcpkgs/tree-sitter-cli
15 changes: 15 additions & 0 deletions srcpkgs/tree-sitter-lua/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
}
30 changes: 30 additions & 0 deletions srcpkgs/tree-sitter-markdown/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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"
}
11 changes: 11 additions & 0 deletions srcpkgs/tree-sitter-query/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
15 changes: 15 additions & 0 deletions srcpkgs/tree-sitter-rust/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
}
15 changes: 15 additions & 0 deletions srcpkgs/tree-sitter-vim/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
}
11 changes: 11 additions & 0 deletions srcpkgs/tree-sitter-vimdoc/template
Original file line number Diff line number Diff line change
@@ -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 <void@placeviolette.net>"
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
10 changes: 8 additions & 2 deletions srcpkgs/tree-sitter/template
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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
}
}
Loading