summaryrefslogtreecommitdiff
path: root/www-servers/vinyl-cache/vinyl-cache-9.1.0.ebuild
blob: cd28abde14c634f53959e75ee82737c0e2ea8a45 (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
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{13..14} )

inherit autotools systemd python-r1

DESCRIPTION="A high-performance caching HTTP reverse proxy"
HOMEPAGE="https://vinyl-cache.org/"
SRC_URI="https://vinyl-cache.org/downloads/${P}.tgz"

LICENSE="BSD-2 GPL-2"
SLOT="0/9"
KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
IUSE="jit selinux static-libs unwind"

COMMON_DEPEND="
	sys-libs/readline:=
	dev-libs/libedit
	dev-libs/libpcre2[jit?]
	sys-libs/ncurses:=
	unwind? ( sys-libs/libunwind:= )
"

# varnish compiles stuff at run time
RDEPEND="
	${PYTHON_DEPS}
	${COMMON_DEPEND}
	acct-user/vinyl
	acct-group/vinyl
	sys-devel/gcc
	selinux? ( sec-policy/selinux-varnishd )
"
DEPEND="
	${COMMON_DEPEND}
	dev-python/docutils
	dev-python/sphinx
	virtual/pkgconfig
"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

# Upstream acknowledge that a small number of tests fail sporadically, including on their
# test boxes. We SKIP problematic tests here.  Check https://vinyl-cache.org/vtest/
SKIP_TESTS=(
	"u00021.vtc" # Commit: 83d9fbb2961c
	"r02686.vtc" # Bug: 880627
	"r02990.vtc" # Bug: 880627
	"u00008.vtc" # Bug: 880627
	"u00009.vtc" # Bug: 880627
	"t02014.vtc" # Bug: 964041
	"r03996.vtc" # Bug: 982112
)

src_prepare() {
	default

	# Fix python shebangs for python-exec[-native-symlinks], #909330
	# skip vmodtool, as that gets installed by python_replicate_script later
	local shebangs=($(grep -rl "#!/usr/bin/env python3"|grep -v vmodtool || die))
	python_setup
	python_fix_shebang -q ${shebangs[*]}

	# SKIP unreliable tests
	local t
	for t in ${SKIP_TESTS[*]}; do
		sed -i -e '/^vtest.*$/a feature cmd false' bin/vinyltest/tests/${t} || die
	done

	# Remove -Werror bug #528354
	sed -i -e 's/-Werror\([^=]\)/\1/g' configure.ac || die

	# Upstream doesn't put vinyl.m4 in the m4/ directory
	# We link because the Makefiles look for the file in
	# the original location
	ln -sf ../vinyl.m4 m4/vinyl.m4 || die

	eautoreconf
}

src_configure() {
	local myeconfargs=(
		--with-contrib
		$(use_enable static-libs static)
		$(use_enable jit pcre2-jit)
		$(use_with unwind)
		--without-jemalloc
		--with-statedir="/var/lib/${PN}"
	)
	econf "${myeconfargs[@]}"
}

src_install() {
	emake DESTDIR="${D}" install

	python_replicate_script "${D}/usr/share/vinyl-cache/vmodtool.py"

	newinitd "${FILESDIR}"/vinyllog.initd vinyllog
	newconfd "${FILESDIR}"/vinyllog.confd vinyllog

	newinitd "${FILESDIR}"/vinylncsa.initd vinylncsa
	newconfd "${FILESDIR}"/vinylncsa.confd vinylncsa

	newinitd "${FILESDIR}"/vinyld.initd vinyld
	newconfd "${FILESDIR}"/vinyld.confd vinyld

	insinto /etc/logrotate.d/
	newins "${FILESDIR}/vinyld.logrotate" vinyld

	diropts -m750

	keepdir /var/lib/vinyl-cache
	keepdir /var/log/vinyl-cache

	systemd_dounit "${FILESDIR}/vinyld.service"

	insinto /etc/vinyl-cache/
	doins vmod/vmod_*.vcc
	doins etc/example.vcl

	dodoc README.md
	dodoc doc/changes.rst

	fowners root:vinyl /etc/vinyl-cache/
	fowners vinyl:vinyl /var/lib/vinyl-cache/
	fperms 0750 /var/lib/vinyl-cache/ /etc/vinyl-cache/

	find "${ED}" -name "*.la" -delete || die
}