summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViolet Purcell <vimproved@inventati.org>2024-06-15 16:54:21 -0400
committerJoonas Niilola <juippis@gentoo.org>2024-07-27 08:46:47 +0300
commitc0ab3c616987b055cf0240fb09aab33e2ee49ba7 (patch)
tree16cdbee52946b7008db8547f88a175b0a7e38c64 /app-editors
parentdev-libs/tree-sitter-query: add 0.3.0 (diff)
downloadgentoo-c0ab3c616987b055cf0240fb09aab33e2ee49ba7.tar.gz
gentoo-c0ab3c616987b055cf0240fb09aab33e2ee49ba7.tar.bz2
gentoo-c0ab3c616987b055cf0240fb09aab33e2ee49ba7.zip
app-editors/neovim: depend on and symlink required treesitter parsers
In 0.10.0, neovim made a small subset of tree-sitter parsers (bash, c, lua, python, query, vim, vimdoc) required and load automatically upon opening their respective filetypes. However, this change was missed and was not properly reflected in the 0.10.0 bump, leading to errors upon opening any file of those filetypes (includig running :help). Those parsers have now been added to tree, so this commit adds the correct dependencies and symlinks the parsers to their correct locations in /usr/share/nvim/runtime/parser. Closes: https://bugs.gentoo.org/933833 Signed-off-by: Violet Purcell <vimproved@inventati.org> Closes: https://github.com/gentoo/gentoo/pull/37178 Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'app-editors')
-rw-r--r--app-editors/neovim/neovim-0.10.0-r1.ebuild129
-rw-r--r--app-editors/neovim/neovim-9999.ebuild15
2 files changed, 144 insertions, 0 deletions
diff --git a/app-editors/neovim/neovim-0.10.0-r1.ebuild b/app-editors/neovim/neovim-0.10.0-r1.ebuild
new file mode 100644
index 000000000000..399df8c4faf1
--- /dev/null
+++ b/app-editors/neovim/neovim-0.10.0-r1.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# RelWithDebInfo sets -Og -g
+CMAKE_BUILD_TYPE=Release
+LUA_COMPAT=( lua5-{1..2} luajit )
+inherit cmake lua-single optfeature xdg
+
+DESCRIPTION="Vim-fork focused on extensibility and agility"
+HOMEPAGE="https://neovim.io"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/neovim/neovim.git"
+else
+ SRC_URI="https://github.com/neovim/neovim/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="Apache-2.0 vim"
+SLOT="0"
+IUSE="+nvimpager test"
+
+# Upstream say the test library needs LuaJIT
+# https://github.com/neovim/neovim/blob/91109ffda23d0ce61cec245b1f4ffb99e7591b62/CMakeLists.txt#L377
+REQUIRED_USE="${LUA_REQUIRED_USE} test? ( lua_single_target_luajit )"
+# TODO: Get tests running
+RESTRICT="!test? ( test ) test"
+
+# Upstream build scripts invoke the Lua interpreter
+BDEPEND="${LUA_DEPS}
+ >=dev-util/gperf-3.1
+ >=sys-devel/gettext-0.20.1
+ virtual/libiconv
+ virtual/libintl
+ virtual/pkgconfig
+"
+# Check https://github.com/neovim/neovim/blob/master/third-party/CMakeLists.txt for
+# new dependency bounds and so on on bumps (obviously adjust for right branch/tag).
+# List of required tree-sitter parsers is taken from cmake.deps/deps.txt
+DEPEND="${LUA_DEPS}
+ >=dev-lua/luv-1.45.0[${LUA_SINGLE_USEDEP}]
+ $(lua_gen_cond_dep '
+ dev-lua/lpeg[${LUA_USEDEP}]
+ dev-lua/mpack[${LUA_USEDEP}]
+ ')
+ $(lua_gen_cond_dep '
+ dev-lua/LuaBitOp[${LUA_USEDEP}]
+ ' lua5-{1,2})
+ >=dev-libs/libuv-1.46.0:=
+ >=dev-libs/libvterm-0.3.3
+ >=dev-libs/msgpack-3.0.0:=
+ >=dev-libs/tree-sitter-0.20.9:=
+ =dev-libs/tree-sitter-bash-0.21*
+ =dev-libs/tree-sitter-c-0.21*
+ =dev-libs/tree-sitter-lua-0.1*
+ =dev-libs/tree-sitter-markdown-0.2*
+ =dev-libs/tree-sitter-python-0.21*
+ =dev-libs/tree-sitter-query-0.3*
+ =dev-libs/tree-sitter-vim-0.4*
+ =dev-libs/tree-sitter-vimdoc-2*
+ >=dev-libs/unibilium-2.0.0:0=
+"
+RDEPEND="
+ ${DEPEND}
+ app-eselect/eselect-vi
+"
+BDEPEND+="
+ test? (
+ $(lua_gen_cond_dep 'dev-lua/busted[${LUA_USEDEP}]')
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.9.0-cmake_lua_version.patch"
+ "${FILESDIR}/${PN}-9999-cmake-darwin.patch"
+)
+
+src_prepare() {
+ # Use our system vim dir
+ sed -e "/^# define SYS_VIMRC_FILE/s|\$VIM|${EPREFIX}/etc/vim|" \
+ -i src/nvim/globals.h || die
+
+ # https://forums.gentoo.org/viewtopic-p-8750050.html
+ xdg_environment_reset
+ cmake_src_prepare
+}
+
+src_configure() {
+ ln -s "${BROOT}"/usr/bin/luajit "${BUILD_DIR}"/luajit || die
+ # TODO: Investigate USE_BUNDLED, doesn't seem to be needed right now
+ local mycmakeargs=(
+ # appends -flto
+ -DENABLE_LTO=OFF
+ -DPREFER_LUA=$(usex lua_single_target_luajit no "$(lua_get_version)")
+ -DLUA_PRG="${ELUA}"
+ )
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # install a default configuration file
+ insinto /etc/vim
+ doins "${FILESDIR}"/sysinit.vim
+
+ # symlink tree-sitter parsers
+ dodir /usr/share/nvim/runtime
+ for parser in bash c lua markdown python query vim vimdoc; do
+ dosym ../../../../$(get_libdir)/libtree-sitter-${parser}.so /usr/share/nvim/runtime/parser/${parser}.so
+ done
+
+ # conditionally install a symlink for nvimpager
+ if use nvimpager; then
+ dosym ../share/nvim/runtime/macros/less.sh /usr/bin/nvimpager
+ fi
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature "clipboard support" x11-misc/xsel x11-misc/xclip gui-apps/wl-clipboard
+ optfeature "Python plugin support" dev-python/pynvim
+ optfeature "Ruby plugin support" dev-ruby/neovim-ruby-client
+ optfeature "remote/nvr support" dev-python/neovim-remote
+}
diff --git a/app-editors/neovim/neovim-9999.ebuild b/app-editors/neovim/neovim-9999.ebuild
index c10fff1c4d66..e2bab5a8ceb9 100644
--- a/app-editors/neovim/neovim-9999.ebuild
+++ b/app-editors/neovim/neovim-9999.ebuild
@@ -39,6 +39,7 @@ BDEPEND="${LUA_DEPS}
"
# Check https://github.com/neovim/neovim/blob/master/third-party/CMakeLists.txt for
# new dependency bounds and so on on bumps (obviously adjust for right branch/tag).
+# List of required tree-sitter parsers is taken from cmake.deps/deps.txt
DEPEND="${LUA_DEPS}
>=dev-lua/luv-1.45.0[${LUA_SINGLE_USEDEP}]
$(lua_gen_cond_dep '
@@ -52,6 +53,14 @@ DEPEND="${LUA_DEPS}
>=dev-libs/libvterm-0.3.3
>=dev-libs/msgpack-3.0.0:=
>=dev-libs/tree-sitter-0.22.6:=
+ =dev-libs/tree-sitter-bash-0.21*
+ =dev-libs/tree-sitter-c-0.21*
+ =dev-libs/tree-sitter-lua-0.1*
+ =dev-libs/tree-sitter-markdown-0.2*
+ =dev-libs/tree-sitter-python-0.21*
+ =dev-libs/tree-sitter-query-0.3*
+ =dev-libs/tree-sitter-vim-0.4*
+ =dev-libs/tree-sitter-vimdoc-2*
>=dev-libs/unibilium-2.0.0:0=
>=dev-libs/libutf8proc-2.9.0:=
"
@@ -99,6 +108,12 @@ src_install() {
insinto /etc/vim
newins "${FILESDIR}"/sysinit.vim-r1 sysinit.vim
+ # symlink tree-sitter parsers
+ dodir /usr/share/nvim/runtime
+ for parser in bash c lua markdown python query vim vimdoc; do
+ dosym ../../../../$(get_libdir)/libtree-sitter-${parser}.so /usr/share/nvim/runtime/parser/${parser}.so
+ done
+
# conditionally install a symlink for nvimpager
if use nvimpager; then
dosym ../share/nvim/runtime/macros/less.sh /usr/bin/nvimpager