blob: cb94d9d457a5eafef26705e3f949234104eadcad (
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
inherit edo optfeature multiprocessing python-single-r1 toolchain-funcs xdg
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/kovidgoyal/kitty.git"
else
inherit verify-sig
SRC_URI="
https://github.com/kovidgoyal/kitty/releases/download/v${PV}/${P}.tar.xz
https://dev.gentoo.org/~ionen/distfiles/${P}-vendor.tar.xz
verify-sig? ( https://github.com/kovidgoyal/kitty/releases/download/v${PV}/${P}.tar.xz.sig )"
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/openpgp-keys/kovidgoyal.gpg"
KEYWORDS="~amd64 ~ppc64 ~riscv ~x86"
fi
DESCRIPTION="Fast, feature-rich, GPU-based terminal"
HOMEPAGE="https://sw.kovidgoyal.net/kitty/"
LICENSE="GPL-3 ZLIB"
LICENSE+=" Apache-2.0 BSD MIT" # go
SLOT="0"
IUSE="+X test wayland"
REQUIRED_USE="
${PYTHON_REQUIRED_USE}
|| ( X wayland )
test? ( X wayland )"
RESTRICT="!test? ( test )"
# dlopen: fontconfig,libglvnd
RDEPEND="
${PYTHON_DEPS}
dev-libs/openssl:=
media-libs/fontconfig
media-libs/harfbuzz:=
media-libs/lcms:2
media-libs/libglvnd[X?]
media-libs/libpng:=
net-libs/librsync:=
sys-apps/dbus
sys-libs/zlib:=
x11-libs/libxkbcommon[X?]
x11-misc/xkeyboard-config
~x11-terms/kitty-shell-integration-${PV}
~x11-terms/kitty-terminfo-${PV}
X? ( x11-libs/libX11 )
wayland? ( dev-libs/wayland )"
DEPEND="
${RDEPEND}
X? (
x11-base/xorg-proto
x11-libs/libXcursor
x11-libs/libXi
x11-libs/libXinerama
x11-libs/libXrandr
)
wayland? ( dev-libs/wayland-protocols )"
BDEPEND="
${PYTHON_DEPS}
>=dev-lang/go-1.19
sys-libs/ncurses
virtual/pkgconfig
test? ( $(python_gen_cond_dep 'dev-python/pillow[${PYTHON_USEDEP}]') )
wayland? ( dev-util/wayland-scanner )"
[[ ${PV} == 9999 ]] || BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-kovidgoyal )"
QA_FLAGS_IGNORED="usr/bin/kitten" # written in Go
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
cd "${S}" || die
edo go mod vendor
else
use verify-sig &&
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
default
fi
}
src_prepare() {
default
# sed unfortunately feels easier on maintenance than patches here
local sedargs=(
-e "/num_workers =/s/=.*/= $(makeopts_jobs)/"
-e "s/cflags.append.*-O3.*/pass/" -e 's/-O3//'
-e "s/ld_flags.append('-[sw]')/pass/"
)
# kitty is often popular on wayland-only setups, try to allow this
use !X && sedargs+=( -e '/gl_libs =/s/=.*/= []/' ) #857918
use !X || use !wayland &&
sedargs+=( -e "s/'x11 wayland'/'$(usex X x11 wayland)'/" )
# skip docs for live version, missing dependencies
[[ ${PV} == 9999 ]] && sedargs+=( -e '/exists.*_build/,/docs(ddir)/d' )
sed -i setup.py "${sedargs[@]}" || die
local skiptests=(
# relies on 'who' command which doesn't detect users with pid-sandbox
kitty_tests/utmp.py
# may fail/hang depending on environment and shell initialization
kitty_tests/{shell_integration,ssh}.py
# relies on /proc/self/fd and gets confused when ran from here
tools/utils/tpmfile_test.go
)
use !test || rm "${skiptests[@]}" || die
}
src_compile() {
tc-export CC
local -x GOFLAGS="-buildmode=pie -v -x"
local -x PKGCONFIG_EXE=$(tc-getPKG_CONFIG)
local conf=(
--disable-link-time-optimization
--ignore-compiler-warnings
--libdir-name=$(get_libdir)
--shell-integration="enabled no-rc"
--update-check-interval=0
--verbose
)
edo "${EPYTHON}" setup.py linux-package "${conf[@]}"
use test && edo "${EPYTHON}" setup.py build-launcher "${conf[@]}"
[[ ${PV} == 9999 ]] || mv linux-package/share/doc/{${PN},${PF}} || die
rm -r linux-package/share/terminfo || die
}
src_test() {
KITTY_CONFIG_DIRECTORY=${T} ./test.py || die # shebang is kitty
}
src_install() {
edo mv linux-package "${ED}"/usr
}
pkg_postinst() {
xdg_pkg_postinst
optfeature "audio-based terminal bell support" media-libs/libcanberra
optfeature "opening links from the terminal" x11-misc/xdg-utils
}
|