mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-07 00:05:47 +03:00
Update done using: ``` git grep -l sys-libs/zlib net-* | xargs sed -i -e s@sys-libs/zlib@virtual/zlib@g git diff --name-only | xargs copybump git diff --name-only | xargs grep -l PYTHON_COMPAT | xargs gpy-impl -@dead pkgcheck scan --commits -c SourcingCheck,VisibilityCheck --exit error ``` Followed by revert in net-misc/turbovnc. Signed-off-by: Michał Górny <mgorny@gentoo.org>
270 lines
6.8 KiB
Bash
270 lines
6.8 KiB
Bash
# Copyright 1999-2025 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
PYTHON_COMPAT=( python3_{11..14} )
|
|
inherit autotools eapi9-ver flag-o-matic python-r1 systemd tmpfiles toolchain-funcs
|
|
|
|
DESCRIPTION="High-performance production grade DHCPv4 & DHCPv6 server"
|
|
HOMEPAGE="https://www.isc.org/kea/"
|
|
|
|
if [[ ${PV} == *9999* ]]; then
|
|
inherit git-r3
|
|
EGIT_REPO_URI="https://gitlab.isc.org/isc-projects/kea.git"
|
|
else
|
|
SRC_URI="https://downloads.isc.org/isc/kea/${PV}/${P}.tar.gz"
|
|
KEYWORDS="amd64 arm arm64 ~x86"
|
|
fi
|
|
|
|
LICENSE="MPL-2.0"
|
|
SLOT="0"
|
|
IUSE="debug doc mysql +openssl postgres shell test"
|
|
|
|
REQUIRED_USE="shell? ( ${PYTHON_REQUIRED_USE} )"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
COMMON_DEPEND="
|
|
>=dev-libs/boost-1.66:=
|
|
dev-libs/log4cplus:=
|
|
mysql? (
|
|
app-arch/zstd:=
|
|
dev-db/mysql-connector-c:=
|
|
dev-libs/openssl:=
|
|
virtual/zlib:=
|
|
)
|
|
!openssl? ( dev-libs/botan:2=[boost] )
|
|
openssl? ( dev-libs/openssl:0= )
|
|
postgres? ( dev-db/postgresql:* )
|
|
shell? ( ${PYTHON_DEPS} )
|
|
"
|
|
DEPEND="${COMMON_DEPEND}
|
|
test? ( dev-cpp/gtest )
|
|
"
|
|
RDEPEND="${COMMON_DEPEND}
|
|
acct-group/dhcp
|
|
acct-user/dhcp
|
|
"
|
|
BDEPEND="
|
|
doc? (
|
|
$(python_gen_any_dep '
|
|
dev-python/sphinx[${PYTHON_USEDEP}]
|
|
dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
|
|
')
|
|
)
|
|
virtual/pkgconfig
|
|
"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-2.2.0-openssl-version.patch
|
|
"${FILESDIR}"/${P}-boost-1.89.patch
|
|
)
|
|
|
|
python_check_deps() {
|
|
use doc || return 0;
|
|
python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" \
|
|
"dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]"
|
|
}
|
|
|
|
pkg_setup() {
|
|
if use doc || use shell; then
|
|
python_setup
|
|
fi
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
# set shebang before autotools
|
|
if use shell; then
|
|
sed -e 's:^#!@PYTHON@:#!/usr/bin/env python3:' \
|
|
-i src/bin/shell/kea-shell.in || die
|
|
fi
|
|
|
|
# fix gtest detection
|
|
sed -e "s:dir/lib/:dir/$(get_libdir)/:" \
|
|
-i m4macros/ax_gtest.m4 || die
|
|
|
|
# skip shell tests that fail to launch daemon in sandbox
|
|
# may fail to find a suitable interface for generating a DUID-LLT
|
|
sed -e '/TESTS += $(SHTESTS)$/d' \
|
|
-i src/bin/dhcp4/tests/Makefile.am \
|
|
-i src/bin/dhcp6/tests/Makefile.am || die
|
|
sed -e '/TESTS = $(SHTESTS)$/d' \
|
|
-i src/bin/keactrl/tests/Makefile.am || die
|
|
|
|
# skip shell tests that require a running instance of MySQL
|
|
if use mysql; then
|
|
sed -e "/SHTESTS += mysql_tests.sh$/d" \
|
|
-i src/bin/admin/tests/Makefile.am || die
|
|
fi
|
|
|
|
# skip shell tests that require a running instance of PgSQL
|
|
if use postgres; then
|
|
sed -e "/SHTESTS += pgsql_tests.sh$/d" \
|
|
-i src/bin/admin/tests/Makefile.am || die
|
|
fi
|
|
|
|
# do not create /run
|
|
sed -e '/$(DESTDIR)${runstatedir}/d' \
|
|
-i Makefile.am || die
|
|
|
|
eautoreconf
|
|
}
|
|
|
|
src_configure() {
|
|
# -Werror=odr
|
|
# https://bugs.gentoo.org/861617
|
|
#
|
|
# I would truly love to submit an upstream bug but their self-hosted gitlab
|
|
# won't let me sign up. -- Eli
|
|
filter-lto
|
|
|
|
local myeconfargs=(
|
|
--disable-install-configurations
|
|
--disable-rpath
|
|
# manually installed
|
|
--disable-shell
|
|
--disable-static
|
|
--enable-generate-messages
|
|
--enable-logger-checks
|
|
--enable-perfdhcp
|
|
--localstatedir="${EPREFIX}/var"
|
|
--runstatedir="${EPREFIX}/run"
|
|
--without-werror
|
|
--with-log4cplus
|
|
$(use_enable debug)
|
|
$(use_enable doc generate-docs)
|
|
$(use_with mysql)
|
|
$(use_with openssl)
|
|
$(use_with postgres pgsql)
|
|
$(usev test --with-gtest="${EPREFIX}/usr")
|
|
)
|
|
econf "${myeconfargs[@]}"
|
|
}
|
|
|
|
src_test() {
|
|
local GTEST_SKIP_TESTS=(
|
|
# may fail when checking addresses on detected interfaces
|
|
IfaceMgrTest*
|
|
|
|
# may fail to find a suitable interface for generating a DUID-LLT
|
|
JSONFileBackendTest*
|
|
CtrlChannelDhcpv6SrvTest*
|
|
|
|
# require srv_config_marker_file.txt similarly generated by a disabled test
|
|
LoadUnloadDhcpv6SrvTest*
|
|
)
|
|
|
|
# tests that require a running instance of MySQL
|
|
use mysql && GTEST_SKIP_TESTS+=(
|
|
*MySql*
|
|
*MySQL*
|
|
# conditional tests for MySQL
|
|
Dhcpv*SrvTest.checkConfigFiles
|
|
)
|
|
|
|
# tests that require a running instance of PgSQL
|
|
use postgres && GTEST_SKIP_TESTS+=(
|
|
*PgSql*
|
|
*PgSQL*
|
|
# conditional tests for PgSQL
|
|
Dhcpv*SrvTest.checkConfigFiles
|
|
)
|
|
|
|
if [ $(tc-get-ptr-size) -eq 4 ]; then
|
|
# see https://bugs.gentoo.org/958171 for reason for skipping these tests
|
|
GTEST_SKIP_TESTS+=(
|
|
BigintTest.int128
|
|
BigintTest.uint128
|
|
ThreadPoolTest.wait
|
|
LibDhcpTest.splitOptionNoBufferMultiThreading
|
|
LibDhcpTest.splitOptionOneByteLeftBufferMultiThreading
|
|
LibDhcpTest.splitOptionWithSuboptionAtLimitMultiThreading
|
|
LibDhcpTest.splitLongOptionMultiThreading
|
|
LibDhcpTest.splitOptionWithSuboptionWhichOverflowMultiThreading
|
|
LibDhcpTest.splitLongOptionWithLongSuboptionMultiThreading
|
|
)
|
|
fi
|
|
|
|
local -x GTEST_FILTER
|
|
[[ -n ${GTEST_SKIP_TESTS[*]} ]] && GTEST_FILTER+="-$( IFS=':'; echo "${GTEST_SKIP_TESTS[*]}")"
|
|
|
|
default
|
|
}
|
|
|
|
install_shell() {
|
|
python_domodule src/bin/shell/*.py
|
|
python_doscript src/bin/shell/kea-shell
|
|
|
|
# fix path to import kea modules
|
|
sed -e "/^sys.path.append/s|(.*)|('$(python_get_sitedir)/${PN}')|" \
|
|
-i "${ED}"/usr/lib/python-exec/${EPYTHON}/kea-shell || die
|
|
}
|
|
|
|
src_install() {
|
|
emake -j1 install DESTDIR="${D}"
|
|
|
|
if use shell; then
|
|
python_moduleinto ${PN}
|
|
python_foreach_impl install_shell
|
|
fi
|
|
|
|
dodoc -r doc/examples
|
|
|
|
rm -f "${ED}"/usr/share/doc/${P}/COPYING
|
|
|
|
diropts -m 0750 -o root -g dhcp
|
|
dodir /etc/kea
|
|
insopts -m 0640 -o root -g dhcp
|
|
insinto /etc/kea
|
|
newins doc/examples/agent/comments.json kea-ctrl-agent.conf.sample
|
|
newins doc/examples/kea6/simple.json kea-dhcp6.conf.sample
|
|
newins doc/examples/kea4/single-subnet.json kea-dhcp4.conf.sample
|
|
newins doc/examples/ddns/comments.json kea-dhcp-ddns.conf.sample
|
|
|
|
# set log to syslog by default
|
|
sed -e 's/"output": "stdout"/"output": "syslog"/' \
|
|
-i "${ED}"/etc/kea/*.conf.sample || die
|
|
|
|
newconfd "${FILESDIR}"/${PN}-confd-r2 ${PN}
|
|
newinitd "${FILESDIR}"/${PN}-initd-r2 ${PN}
|
|
|
|
systemd_dounit "${FILESDIR}"/${PN}-ctrl-agent.service-r2
|
|
systemd_dounit "${FILESDIR}"/${PN}-dhcp-ddns.service-r2
|
|
systemd_dounit "${FILESDIR}"/${PN}-dhcp4.service-r2
|
|
systemd_dounit "${FILESDIR}"/${PN}-dhcp6.service-r2
|
|
|
|
newtmpfiles "${FILESDIR}"/${PN}.tmpfiles.conf ${PN}.conf
|
|
|
|
keepdir /var/lib/${PN} /var/log/${PN}
|
|
fowners -R dhcp:dhcp /var/lib/${PN} /var/log/${PN}
|
|
fperms 750 /var/lib/${PN} /var/log/${PN}
|
|
|
|
find "${ED}" -type f -name "*.la" -delete || die
|
|
}
|
|
|
|
pkg_postinst() {
|
|
tmpfiles_process ${PN}.conf
|
|
|
|
if ver_replacing -lt 2.6; then
|
|
ewarn "Several changes have been made for daemons:"
|
|
ewarn " To comply with common practices for this package,"
|
|
ewarn " config paths by default has been changed as below:"
|
|
ewarn " /etc/kea/kea-dhcp4.conf"
|
|
ewarn " /etc/kea/kea-dhcp6.conf"
|
|
ewarn " /etc/kea/kea-dhcp-ddns.conf"
|
|
ewarn " /etc/kea/kea-ctrl-agent.conf"
|
|
ewarn
|
|
ewarn " Daemons are launched by default with the unprivileged user 'dhcp'"
|
|
ewarn
|
|
ewarn "Please check your configuration!"
|
|
fi
|
|
|
|
if ! has_version net-misc/kea; then
|
|
elog "See config files in:"
|
|
elog " ${EROOT}/etc/kea/*.sample"
|
|
elog " ${EROOT}/usr/share/doc/${PF}/examples"
|
|
fi
|
|
}
|