summaryrefslogtreecommitdiff
path: root/net-analyzer/icinga2/icinga2-2.14.5.ebuild
blob: 0715e3ed4825d77bee640fb475b81dee14a213ff (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
152
153
154
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake eapi9-ver

if [[ ${PV} != 9999 ]]; then
	SRC_URI="https://github.com/Icinga/icinga2/archive/v${PV}.tar.gz -> ${P}.tar.gz"
	KEYWORDS="~amd64 ~arm64 ~x86"
else
	inherit git-r3
	EGIT_REPO_URI="https://github.com/Icinga/icinga2.git"
fi

DESCRIPTION="Distributed, general purpose, network monitoring engine"
HOMEPAGE="https://icinga.com/"

LICENSE="GPL-2"
SLOT="0"
IUSE="console jumbo-build mail mariadb minimal +mysql +plugins postgres systemd"

# Add accounts to DEPEND because of fowners in src_install
DEPEND="
	dev-libs/openssl:=
	dev-libs/boost:=[context]
	console? ( dev-libs/libedit )
	mariadb? ( dev-db/mariadb-connector-c:= )
	mysql? ( dev-db/mysql-connector-c:= )
	postgres? ( dev-db/postgresql:= )
	dev-libs/yajl:=
	acct-user/icinga
	acct-group/icinga
	acct-group/icingacmd
"
BDEPEND="
	app-alternatives/yacc
	app-alternatives/lex
"
RDEPEND="
	${DEPEND}
	acct-group/nagios
	plugins? ( || (
		net-analyzer/monitoring-plugins
		net-analyzer/nagios-plugins
	) )
	mail? ( virtual/mailx )
"

REQUIRED_USE="!minimal? ( || ( mariadb mysql postgres ) )"

PATCHES=(
	"${FILESDIR}"/${PN}-2.14.5-boost-1.87.patch
)

src_configure() {
	local mycmakeargs=(
		-DICINGA2_UNITY_BUILD=$(usex jumbo-build)
		-DCMAKE_INSTALL_SYSCONFDIR=/etc
		-DCMAKE_INSTALL_LOCALSTATEDIR=/var
		-DICINGA2_SYSCONFIGFILE=/etc/conf.d/icinga2
		-DICINGA2_PLUGINDIR="/usr/$(get_libdir)/nagios/plugins"
		-DICINGA2_USER=icinga
		-DICINGA2_GROUP=icingacmd
		-DICINGA2_COMMAND_GROUP=icingacmd
		-DICINGA2_RUNDIR=/run
		-DINSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT=ON
		-DUSE_SYSTEMD=$(usex systemd)
		-DLOGROTATE_HAS_SU=ON
		# only appends -flto
		-DICINGA2_LTO_BUILD=OFF
	)

	# default to off if minimal, allow the flags to be set otherwise
	if use minimal; then
		mycmakeargs+=(
			-DICINGA2_WITH_MYSQL=OFF
			-DICINGA2_WITH_PGSQL=OFF
		)
	else
		mycmakeargs+=(
			-DICINGA2_WITH_PGSQL=$(usex postgres)
			-DICINGA2_WITH_MYSQL=$(usex mysql yes $(usex mariadb))
		)
	fi

	cmake_src_configure
}

src_install() {
	cmake_src_install

	newinitd "${FILESDIR}"/icinga2.initd-3 icinga2

	if use mysql || use mariadb; then
		docinto schema
		newdoc "${WORKDIR}"/icinga2-${PV}/lib/db_ido_mysql/schema/mysql.sql mysql.sql
		docinto schema/upgrade
		dodoc "${WORKDIR}"/icinga2-${PV}/lib/db_ido_mysql/schema/upgrade/*
	fi
	if use postgres; then
		docinto schema
		newdoc "${WORKDIR}"/icinga2-${PV}/lib/db_ido_pgsql/schema/pgsql.sql pgsql.sql
		docinto schema/upgrade
		dodoc "${WORKDIR}"/icinga2-${PV}/lib/db_ido_pgsql/schema/upgrade/*
	fi

	# See messiness in bug #638686
	keepdir /etc/icinga2
	keepdir /var/lib/icinga2/api/log
	keepdir /var/lib/icinga2/api/repository
	keepdir /var/lib/icinga2/api/zones
	keepdir /var/lib/icinga2/api/zones-stage
	keepdir /var/lib/icinga2/certificate-requests
	keepdir /var/lib/icinga2/certs
	keepdir /var/log/icinga2
	keepdir /var/log/icinga2/compat
	keepdir /var/log/icinga2/compat/archives
	keepdir /var/log/icinga2/crash
	keepdir /var/spool/icinga2/perfdata
	keepdir /var/spool/icinga2/tmp

	rm -r "${D}/run" || die "failed to remove /run"
	rm -r "${D}/var/cache" || die "failed to remove /var/cache"

	fowners -R icinga:icinga /etc/icinga2
	fperms 0750 /etc/icinga2
	fowners icinga:icinga /var/lib/icinga2
	fowners -R icinga:icingacmd /var/lib/icinga2/api
	fowners -R icinga:icingacmd /var/lib/icinga2/certificate-requests
	fowners -R icinga:icingacmd /var/lib/icinga2/certs
	fowners icinga:icinga /var/spool/icinga2
	fowners icinga:icinga /var/spool/icinga2/perfdata
	fowners icinga:icingacmd /var/log/icinga2

	fperms ug+rwX,o-rwx /etc/icinga2
	fperms ug+rwX,o-rwx /var/lib/icinga2
	fperms ug+rwX,o-rwx /var/spool/icinga2
	fperms ug+rwX,o-rwx /var/log/icinga2

	insinto /usr/share/vim/vimfiles
	doins -r "${WORKDIR}"/${P}/tools/syntax/vim/ftdetect
	doins -r "${WORKDIR}"/${P}/tools/syntax/vim/syntax

	insinto /usr/share/nano
	doins "${WORKDIR}"/${P}/tools/syntax/nano/icinga2.nanorc
}

pkg_postinst() {
	if [[ "${PV}" != 9999 ]] && ver_replacing -lt "${PV}"; then
		elog "DB IDO schema upgrade may be required."
		elog "https://www.icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/"
	fi
}