mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-08 00:10:15 +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>
292 lines
7.7 KiB
Bash
292 lines
7.7 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 eapi9-ver flag-o-matic meson 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.xz"
|
|
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:3=[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="
|
|
>=dev-build/meson-1.8
|
|
doc? (
|
|
$(python_gen_any_dep '
|
|
dev-python/sphinx[${PYTHON_USEDEP}]
|
|
dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
|
|
')
|
|
)
|
|
virtual/pkgconfig
|
|
${PYTHON_DEPS}
|
|
"
|
|
|
|
python_check_deps() {
|
|
use doc || return 0;
|
|
python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" \
|
|
"dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]"
|
|
}
|
|
|
|
pkg_setup() {
|
|
python_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
# Fix up all doc paths, whether or not we are installing full set of docs
|
|
sed -e "s:'doc/kea':'doc/${PF}':" \
|
|
-i meson.build || die
|
|
sed -e "s:'share/doc/kea':'share/doc/${PF}':" \
|
|
-i doc/meson.build || die
|
|
sed -e "s:'doc/kea':'doc/${PF}':" \
|
|
-i doc/sphinx/meson.build || die
|
|
sed -e "s:share/doc/kea/:share/doc/${PF}/:" \
|
|
-i doc/sphinx/arm/install.rst || die
|
|
sed -e "s:share/doc/kea/examples:share/doc/${PF}/examples:" \
|
|
-i doc/sphinx/arm/config.rst || die
|
|
|
|
# set shebang before meson whether or not we are installing the shell
|
|
sed -e 's:^#!@PYTHON@:#!/usr/bin/env python3:' \
|
|
-i src/bin/shell/kea-shell.in || die
|
|
|
|
# Don't allow meson to install shell, we shall do that if required
|
|
sed -e 's:install\: true:install\: false:' \
|
|
-i src/bin/shell/meson.build || die
|
|
|
|
# do not create /run
|
|
sed -e '/^install_emptydir(RUNSTATEDIR)$/d' \
|
|
-i meson.build || die
|
|
}
|
|
|
|
src_configure() {
|
|
# https://bugs.gentoo.org/861617
|
|
# https://gitlab.isc.org/isc-projects/kea/-/issues/3946
|
|
#
|
|
# Kea Devs say no to LTO
|
|
filter-lto
|
|
|
|
if use !openssl; then
|
|
append-cxxflags -std=c++20
|
|
fi
|
|
|
|
local emesonargs=(
|
|
--localstatedir="${EPREFIX}/var"
|
|
-Drunstatedir="${EPREFIX}/run"
|
|
-Dkrb5=disabled
|
|
-Dnetconf=disabled
|
|
-Dcrypto=$(usex openssl openssl botan)
|
|
$(meson_feature mysql)
|
|
$(meson_feature postgres postgresql)
|
|
$(meson_feature test tests)
|
|
)
|
|
if use debug; then
|
|
emesonargs+=(
|
|
--debug
|
|
)
|
|
fi
|
|
meson_src_configure
|
|
}
|
|
|
|
src_compile() {
|
|
meson_src_compile
|
|
|
|
# Note: If you want man pages doc use has to be set. This may change
|
|
# in the future and be like 2.6.3 where man pages were part of the release tarball
|
|
use doc && meson_src_compile doc
|
|
}
|
|
|
|
src_test() {
|
|
# Get list of all test suites into an associative array
|
|
# the meson test --list returns either "kea / test_suite", "kea:shell-tests / test_suite" or
|
|
# "kea:python-tests / test_suite"
|
|
# Discard the shell tests as we can't run shell tests in sandbox
|
|
|
|
pushd "${BUILD_DIR}" || die
|
|
local -A TEST_SUITES
|
|
while IFS=" / " read -r subsystem test_suite ; do
|
|
if [[ ${subsystem} != "kea:shell-tests" ]]; then
|
|
TEST_SUITES["$test_suite"]=1
|
|
fi
|
|
done < <(meson test --list || die)
|
|
popd
|
|
|
|
# Some other tests will fail for interface access restrictions, we have to remove the test suites those tests
|
|
# belong to
|
|
local SKIP_TESTS=(
|
|
dhcp-radius-tests
|
|
kea-log-buffer_logger_test.sh
|
|
kea-log-console_test.sh
|
|
dhcp-lease-query-tests
|
|
kea-dhcp6-tests
|
|
kea-dhcp-tests
|
|
)
|
|
|
|
# skip shell tests that require a running instance of MySQL
|
|
if use mysql; then
|
|
SKIP_TESTS+=(
|
|
kea-mysql-tests
|
|
dhcp-mysql-lib-tests
|
|
dhcp-forensic-log-libloadtests
|
|
kea-dhcp4-tests
|
|
)
|
|
fi
|
|
|
|
# skip shell tests that require a running instance of PgSQL
|
|
if use postgres; then
|
|
SKIP_TESTS+=(
|
|
kea-pgsql-tests
|
|
dhcp-pgsql-lib-tests
|
|
dhcp-forensic-log-libloadtests
|
|
kea-dhcp4-tests
|
|
)
|
|
fi
|
|
|
|
if [[ $(tc-get-ptr-size) -eq 4 ]]; then
|
|
# see https://bugs.gentoo.org/958171 for reason for skipping these tests
|
|
SKIP_TESTS+=(
|
|
kea-util-tests
|
|
kea-dhcp4-tests
|
|
kea-dhcpsrv-tests
|
|
dhcp-ha-lib-tests
|
|
kea-d2-tests
|
|
)
|
|
fi
|
|
|
|
for SKIP in ${SKIP_TESTS[@]}; do
|
|
unset TEST_SUITES["${SKIP}"]
|
|
done
|
|
|
|
meson_src_test ${!TEST_SUITES[@]}
|
|
}
|
|
|
|
install_shell() {
|
|
python_domodule ${ORIG_BUILD_DIR}/src/bin/shell/*.py
|
|
python_doscript ${ORIG_BUILD_DIR}/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() {
|
|
meson_install
|
|
|
|
# Tidy up
|
|
rm -r "${ED}"/usr/share/kea/meson-info || die
|
|
if use !mysql; then
|
|
rm -r "${ED}"/usr/share/kea/scripts/mysql || die
|
|
fi
|
|
if use !postgres; then
|
|
rm -r "${ED}"/usr/share/kea/scripts/pgsql || die
|
|
fi
|
|
|
|
# No easy way to control how meson_install sets permissions in meson < 1.9
|
|
# So make sure permissions are same as in previous versions of kea
|
|
# To avoid any differences between an update vers first time install
|
|
fperms -R 0755 /usr/sbin
|
|
fperms -R 0755 /usr/bin
|
|
fperms -R 0755 /usr/$(get_libdir)
|
|
|
|
if use shell; then
|
|
python_moduleinto ${PN}
|
|
ORIG_BUILD_DIR=${BUILD_DIR} python_foreach_impl install_shell
|
|
fi
|
|
|
|
# We don't use keactrl.conf so move to reduce confusion
|
|
mv "${ED}"/etc/${PN}/keactrl.conf "${ED}"/usr/share/doc/${PF}/examples/keactrl.conf || die
|
|
|
|
fowners -R root:dhcp /etc/${PN}
|
|
|
|
# Install a conf per service and a linked init script per service
|
|
newinitd "${FILESDIR}"/${PN}-initd-r3 ${PN}
|
|
local svc
|
|
for svc in dhcp4 dhcp6 dhcp-ddns ctrl-agent; do
|
|
newconfd "${FILESDIR}"/${PN}-confd-r3 kea-${svc}
|
|
sed -e "s:@KEA_SVC@:${svc}:g" \
|
|
-i "${ED}"/etc/conf.d/kea-${svc} || die
|
|
dosym kea "${EPREFIX}"/etc/init.d/kea-${svc}
|
|
done
|
|
|
|
systemd_newunit "${FILESDIR}"/${PN}-ctrl-agent.service-r2 ${PN}-ctrl-agent.service
|
|
systemd_newunit "${FILESDIR}"/${PN}-dhcp-ddns.service-r2 ${PN}-dhcp-ddns.service
|
|
systemd_newunit "${FILESDIR}"/${PN}-dhcp4.service-r2 ${PN}-dhcp4.service
|
|
systemd_newunit "${FILESDIR}"/${PN}-dhcp6.service-r2 ${PN}-dhcp6.service
|
|
|
|
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}
|
|
}
|
|
|
|
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 ver_replacing -lt 3.0; then
|
|
ewarn "If using openrc;"
|
|
ewarn " There are now separate conf.d scripts and associated init.d per daemon!"
|
|
ewarn " Each Daemon needs to be launched separately, i.e. the daemons are"
|
|
ewarn " kea-dhcp4"
|
|
ewarn " kea-dhcp6"
|
|
ewarn " kea-dhcp-ddns"
|
|
ewarn " kea-ctrl"
|
|
ewarn "Please adjust your service startups appropriately"
|
|
fi
|
|
|
|
if ! has_version net-misc/kea; then
|
|
elog "See examples of config files in:"
|
|
elog " ${EROOT}/usr/share/doc/${PF}/examples"
|
|
fi
|
|
}
|