summaryrefslogtreecommitdiff
blob: 8ddebf68c9c2f4461802a3280f82e9ac949b3a43 (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
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

LUA_COMPAT=( lua5-{1..4} luajit )

PYTHON_COMPAT=( python3_{11..14} )

WEBAPP_MANUAL_SLOT="yes"

inherit flag-o-matic lua-single python-single-r1 tmpfiles toolchain-funcs webapp git-r3

[[ -z "${CGIT_CACHEDIR}" ]] && CGIT_CACHEDIR="/var/cache/${PN}/"

GIT_V="2.46.0"

DESCRIPTION="A fast web-interface for Git repositories"
HOMEPAGE="https://git.zx2c4.com/cgit/about"
if [[ ${PV} =~ 9999* ]]; then
	EGIT_REPO_URI="https://git.zx2c4.com/cgit"
else
	SRC_URI="https://www.kernel.org/pub/software/scm/git/git-${GIT_V}.tar.xz
		https://git.zx2c4.com/cgit/snapshot/${P}.tar.xz"
fi

LICENSE="GPL-2"
SLOT="0"
KEYWORDS=""
IUSE="doc +highlight +lua test"
REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} ) ${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"

RDEPEND="
	${PYTHON_DEPS}
	acct-group/cgit
	acct-user/cgit
	dev-libs/openssl:0=
	dev-vcs/git
	highlight? (
		$(python_gen_cond_dep '
			dev-python/docutils[${PYTHON_USEDEP}]
			dev-python/markdown[${PYTHON_USEDEP}]
			dev-python/pygments[${PYTHON_USEDEP}]
		')
		sys-apps/groff
	)
	lua? ( ${LUA_DEPS} )
	virtual/zlib:=
	virtual/httpd-cgi
"
# ebuilds without WEBAPP_MANUAL_SLOT="yes" are broken
DEPEND="${RDEPEND}"
BDEPEND="
	doc? (
		app-text/docbook-xsl-stylesheets
		>=app-text/asciidoc-8.5.1
	)
"

PATCHES=( "${FILESDIR}"/${PN}-highlight.patch )

pkg_setup() {
	python_setup
	webapp_pkg_setup
	use lua && lua-single_pkg_setup
}

src_configure() {
	if ! [[ ${PV} =~ 9999* ]]; then
		rmdir git || die
		mv "${WORKDIR}"/git-"${GIT_V}" git || die
	fi

	# bug #951555
	append-cflags -std=gnu17

	echo "prefix = ${EPREFIX}/usr" >> cgit.conf || die "echo prefix failed"
	echo "libdir = ${EPREFIX}/usr/$(get_libdir)" >> cgit.conf || die "echo libdir failed"
	echo "CGIT_SCRIPT_PATH = ${MY_CGIBINDIR}" >> cgit.conf || die "echo CGIT_SCRIPT_PATH failed"
	echo "CGIT_DATA_PATH = ${MY_HTDOCSDIR}" >> cgit.conf || die "echo CGIT_DATA_PATH failed"
	echo "CACHE_ROOT = ${CGIT_CACHEDIR}" >> cgit.conf || die "echo CACHE_ROOT failed"
	if use lua; then
		echo "LUA_PKGCONFIG = ${ELUA}" >> cgit.conf || die "echo LUA_PKGCONFIG failed"
	else
		echo "NO_LUA = 1" >> cgit.conf || die "echo NO_LUA failed"
	fi
}

src_compile() {
	emake V=1 AR="$(tc-getAR)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
	use doc && emake V=1 doc-man
}

src_install() {
	webapp_src_preinst

	emake V=1 AR="$(tc-getAR)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" DESTDIR="${D}" install

	insinto /etc
	doins "${FILESDIR}"/cgitrc

	dodoc README
	use doc && doman cgitrc.5

	webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt
	webapp_src_install

	cat > cgit.conf <<-EOT || die
		d ${CGIT_CACHEDIR} 0700 cgit cgit -
	EOT
	dotmpfiles cgit.conf

	python_fix_shebang .
}

src_test() {
	emake V=1 AR="$(tc-getAR)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" test
}

pkg_postinst() {
	webapp_pkg_postinst
	tmpfiles_process cgit.conf
	ewarn "The cgit cache is enabled using the cache-size setting in cgitrc."
	ewarn "If enabling the cache and running cgit using the web server's user"
	ewarn "you should copy ${EROOT}/usr/lib/tmpfiles.d/cgit.conf"
	ewarn "to ${EROOT}/etc/tmpfiles.d/ and edit, changing the ownership fields."
	ewarn "If you use the cache-root setting in cgitrc to specify a cache directory"
	ewarn "other than ${CGIT_CACHEDIR} edit the path in cgit.conf."
}