summaryrefslogtreecommitdiff
path: root/app-editors/neovim/neovim-0.8.0-r1.ebuild
blob: fe675b291f831ee917a43855cedcc06762a88279 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright 1999-2022 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 ~arm ~arm64 ~riscv ~x86 ~x64-macos"
fi

LICENSE="Apache-2.0 vim"
SLOT="0"
IUSE="+lto +nvimpager test +tui"

REQUIRED_USE="${LUA_REQUIRED_USE}"
# Upstream say the test library needs LuaJIT
# https://github.com/neovim/neovim/blob/91109ffda23d0ce61cec245b1f4ffb99e7591b62/CMakeLists.txt#L377
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).
DEPEND="${LUA_DEPS}
	>=dev-lua/luv-1.44.2[${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.44.2:=
	>=dev-libs/libvterm-0.3
	>=dev-libs/msgpack-3.0.0:=
	>=dev-libs/tree-sitter-0.20.2:=
	tui? (
		>=dev-libs/libtermkey-0.22
		>=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=()

if [[ ${PV} == 9999 ]]; then
	PATCHES+=(
		"${FILESDIR}/${PN}-9999-cmake_lua_version.patch"
		"${FILESDIR}/${PN}-9999-cmake-release-type.patch"
		"${FILESDIR}/${PN}-9999-cmake-darwin.patch"
	)
else
	PATCHES+=(
		"${FILESDIR}/${PN}-9999-cmake_lua_version.patch"
		"${FILESDIR}/${PN}-9999-cmake-release-type.patch"
		"${FILESDIR}/${PN}-9999-cmake-darwin.patch"
	)
fi

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() {
	# Upstream default to LTO on non-debug builds
	# Let's expose it as a USE flag because upstream
	# have preferences for how we should use LTO
	# if we want it on (not just -flto)
	# ... but allow turning it off.
	# TODO: Investigate USE_BUNDLED, doesn't seem to be needed right now
	local mycmakeargs=(
		-DENABLE_LTO=$(usex lto)
		-DFEAT_TUI=$(usex tui)
		-DPREFER_LUA=$(usex lua_single_target_luajit no "$(lua_get_version)")
		-DLUA_PRG="${ELUA}"
		-DMIN_LOG_LEVEL=3
	)
	cmake_src_configure
}

src_install() {
	cmake_src_install

	# install a default configuration file
	insinto /etc/vim
	doins "${FILESDIR}"/sysinit.vim

	# 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
}