commit:     09940bb9388d1b01cdd8ffd6bd03d338ff581665
Author:     Peter Leese <inbox <AT> peterleese <DOT> org>
AuthorDate: Sat Jul 19 20:34:34 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jul 26 21:32:17 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=09940bb9

net-misc/kea: add 2.6.4

Bug: https://bugs.gentoo.org/960312
Signed-off-by: Peter Leese <inbox <AT> peterleese.org>
Part-of: https://github.com/gentoo/gentoo/pull/43074
Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-misc/kea/Manifest         |   1 +
 net-misc/kea/kea-2.6.4.ebuild | 253 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 254 insertions(+)

diff --git a/net-misc/kea/Manifest b/net-misc/kea/Manifest
index a52653a425a3..c96e0d961979 100644
--- a/net-misc/kea/Manifest
+++ b/net-misc/kea/Manifest
@@ -1,2 +1,3 @@
 DIST kea-2.4.1.tar.gz 10487415 BLAKE2B 
21037d28f812ebbc65ae34f5151a209e9c74f6aa005e96ed7cbbf6e4250e6c40eecf5d257b852bf01663a0982b5401008dd6a51a16d861b30a83549f827538b6
 SHA512 
b8a3b6f2cae213fd9826c37568c71d3458f52eed973dbe437a1d0974dafa026635a730d828c6ff03b32e030be57d75a7914a8ca313833e91d9996b6a05b2b224
 DIST kea-2.6.3.tar.gz 10498882 BLAKE2B 
7a8549ceb86dccaa2ca8d541cbfd27618ccf8aeedfb8ff26f9d0e10cfd8a103efd70320a55dc318a84094a7764c560c100cf6e10421ae6d40e6c62891570c604
 SHA512 
d7781c0b95529bfe89c19615c1dd5952fd4c4b60274e187a641992dad81ef5af921dfb15050ec43169a0c2ad267639642b2e294c5d43405f85a5fb11bb1a939a
+DIST kea-2.6.4.tar.gz 10498705 BLAKE2B 
491a73dd0d4f7ffc068642d14a597158b70a5e6042967fd1f367f3269dd84bc4f1526b4158c7da8a474e385528b74985ac542c1591c458c6a0df42fc627b612d
 SHA512 
f4dce03a30ba5c0a1a0d97730d7cccc0876188fb7d165e8f67cf4df906cdf157049d651d0a38b3a01f33e5b0ac7b9e8b5b479543e06c89da197d6ef9d0937a18

diff --git a/net-misc/kea/kea-2.6.4.ebuild b/net-misc/kea/kea-2.6.4.ebuild
new file mode 100644
index 000000000000..b52c810909cc
--- /dev/null
+++ b/net-misc/kea/kea-2.6.4.ebuild
@@ -0,0 +1,253 @@
+# 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
+
+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 ~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:=
+               sys-libs/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
+)
+
+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
+       )
+
+       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
+}

Reply via email to