commit:     ab70a56eee4301f470273a6044bd7a01ee7e2b70
Author:     Itai Ferber <itai <AT> itaiferber <DOT> net>
AuthorDate: Fri Sep 19 19:22:40 2025 +0000
Commit:     Itai Ferber <itai <AT> itaiferber <DOT> net>
CommitDate: Fri Sep 19 19:23:09 2025 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ab70a56e

net-dns/technitium-dns: new package, add 13.6

Signed-off-by: Itai Ferber <itai <AT> itaiferber.net>

 net-dns/technitium-dns/Manifest                    |  3 +
 .../technitium-dns/files/technitium-dns-13.6.initd | 10 +++
 .../files/technitium-dns-13.6.service              | 12 +++
 net-dns/technitium-dns/metadata.xml                | 11 +++
 net-dns/technitium-dns/technitium-dns-13.6.ebuild  | 87 ++++++++++++++++++++++
 5 files changed, 123 insertions(+)

diff --git a/net-dns/technitium-dns/Manifest b/net-dns/technitium-dns/Manifest
new file mode 100644
index 0000000000..9f9f142d58
--- /dev/null
+++ b/net-dns/technitium-dns/Manifest
@@ -0,0 +1,3 @@
+DIST BouncyCastle.Cryptography.2.5.1.nupkg 8231681 BLAKE2B 
0e532828def85261e703d09e8a5ef0b86e91e96f7ab5b69ff84a3dc4411c6a71dcdf3c25ba6427311dd4c033aa5058e56f6bc0932c245d9d849ebd44184f14b2
 SHA512 
cc12d715a7a3acda0e51b6804ae10e1c3e9543009c108485ae6c4ebe8773dee57642f8be291dc2cadcd14a086a0237d925298997ded8a01a4d5a781c7b67ab3d
+DIST TechnitiumDnsServer-13.6.0.tar.gz 1627685 BLAKE2B 
21e42c61d0817402583f15d8e6ec851e9b28660e1ef66ef6bae284e9fefb6a2158648ba92f10af6403820a8d7d5d743a7aa028362cf44b32d9cecf66897287a9
 SHA512 
f8ca95d0865095ead6ddfc4270b95ca9c1869b3fc2bfa4891ab3ffbd8655ca70c7436fd022e56819399eef1b80156d071a4302034431eb96cc2e3d714562ebf5
+DIST TechnitiumLibrary-13.6.0.tar.gz 246457 BLAKE2B 
271dd51d477cae14ffea3c22136b8a4a5077af9f5fab35eaee0baed731f01265341a9a64d30e32e940bd77ccf6714d9859b58f6de2851117d9dbbe0f55beb045
 SHA512 
2b8f1f9a86c418a1c5260a180399d0f67c1b3b63406ef0f6e70c0e069b0e84c4f8f51aeca1ee278195603c435e606a76a15917ae4a2b35ed5b4ca67e10a00528

diff --git a/net-dns/technitium-dns/files/technitium-dns-13.6.initd 
b/net-dns/technitium-dns/files/technitium-dns-13.6.initd
new file mode 100644
index 0000000000..143cad09d8
--- /dev/null
+++ b/net-dns/technitium-dns/files/technitium-dns-13.6.initd
@@ -0,0 +1,10 @@
+#!/sbin/openrc-run
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+supervisor="supervise-daemon"
+command="/usr/bin/technitium-dns"
+command_args="/etc/dns"
+
+# The server responds to SIGINT instead of SIGTERM.
+retry="SIGINT/5"

diff --git a/net-dns/technitium-dns/files/technitium-dns-13.6.service 
b/net-dns/technitium-dns/files/technitium-dns-13.6.service
new file mode 100644
index 0000000000..e9bbe19f97
--- /dev/null
+++ b/net-dns/technitium-dns/files/technitium-dns-13.6.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Technitium DNS Server
+
+[Service]
+ExecStart=/usr/bin/technitium-dns /etc/dns
+KillSignal=SIGINT
+Restart=always
+RestartSec=10
+SyslogIdentifier=technitium-dns
+
+[Install]
+WantedBy=multi-user.target

diff --git a/net-dns/technitium-dns/metadata.xml 
b/net-dns/technitium-dns/metadata.xml
new file mode 100644
index 0000000000..8d907970b1
--- /dev/null
+++ b/net-dns/technitium-dns/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <email>[email protected]</email>
+    <name>Itai Ferber</name>
+  </maintainer>
+  <upstream>
+    <remote-id type="github">TechnitiumSoftware/DnsServer</remote-id>
+  </upstream>
+</pkgmetadata>

diff --git a/net-dns/technitium-dns/technitium-dns-13.6.ebuild 
b/net-dns/technitium-dns/technitium-dns-13.6.ebuild
new file mode 100644
index 0000000000..3f8bbc1aca
--- /dev/null
+++ b/net-dns/technitium-dns/technitium-dns-13.6.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_PKG_COMPAT=8.0
+NUGETS="[email protected]"
+inherit dotnet-pkg systemd
+
+MYPV="${PV}.0"
+DESCRIPTION="Open-source, self-hosted authoritative and recursive DNS+DHCP 
server."
+HOMEPAGE="https://technitium.com/dns/";
+SRC_URI="
+       
https://github.com/TechnitiumSoftware/DnsServer/archive/refs/tags/v${MYPV}.tar.gz
 -> TechnitiumDnsServer-${MYPV}.tar.gz
+       
https://github.com/TechnitiumSoftware/TechnitiumLibrary/archive/refs/tags/dns-server-v${MYPV}.tar.gz
 -> TechnitiumLibrary-${MYPV}.tar.gz
+       ${NUGET_URIS}
+"
+
+S="${WORKDIR}"
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="-* ~amd64"
+
+RDEPEND=">=dev-libs/icu-70"
+
+DOTNET_PKG_PROJECTS=(
+       
"${S}/TechnitiumLibrary-dns-server-v${MYPV}/TechnitiumLibrary.ByteTree/TechnitiumLibrary.ByteTree.csproj"
+       
"${S}/TechnitiumLibrary-dns-server-v${MYPV}/TechnitiumLibrary.Net/TechnitiumLibrary.Net.csproj"
+       "${S}/DnsServer-${MYPV}/DnsServerApp/DnsServerApp.csproj"
+)
+
+src_prepare() {
+       default
+       dotnet-pkg_src_prepare
+
+       # The DnsServer project expects to find TechnitiumLibrary DLLs in a
+       # directory sibling to the root of the project, so has `HintPath`
+       # directives to point to that relative path (e.g.,
+       # '..\..\TechnitiumLibrary\bin\TechnitiumLibrary.dll'). Because we're
+       # explicitly building into `DOTNET_PKG_OUTPUT`, we'll need to point 
there
+       # instead for the DLLs to be located.
+       local 
replace_hintpaths="s|<HintPath>(\\.\\.\\\\)*TechnitiumLibrary\\\\bin|<HintPath>${DOTNET_PKG_OUTPUT}|g"
+       grep -ErlZ 'HintPath.*TechnitiumLibrary' "${S}/DnsServer-${MYPV}" \
+               | xargs -0 sed -E -i "${replace_hintpaths}" \
+               || die
+}
+
+src_install() {
+       default
+
+       # dotnet-pkg will create a wrapper script around an executable at the 
root
+       # of `DOTNET_PKG_OUTPUT` matching `${PN}`, so we can link to
+       # `DnsServerApp`.
+       cd "${DOTNET_PKG_OUTPUT}" && ln -rs 'DnsServerApp' "${PN}" || die
+
+       # The included `systemd.service` file has hard-coded paths we'd need to
+       # adjust; we'll install our own.
+       rm "${DOTNET_PKG_OUTPUT}/systemd.service"
+
+       dotnet-pkg_src_install
+
+       newinitd "${FILESDIR}/${PF}.initd" "${PN}"
+       systemd_newunit "${FILESDIR}/${PF}.service" "${PN}.service"
+}
+
+pkg_postinst() {
+       if [[ -z ${REPLACING_VERSIONS} ]]; then
+               elog 'To start Technitium DNS:'
+               elog '* OpenRC: rc-update add technitium-dns boot'
+               elog '          rc-service technitium-dns start'
+               elog '  OR'
+               elog '* systemd: systemctl enable technitium-dns'
+               elog '           systemctl start technitium-dns'
+               elog
+               elog 'After starting the service,'
+               elog '1. Technitium DNS configuration files can be found in'
+               elog "   \"${ROOT}/etc/dns\""
+               elog '2. The Technetium web server can be accessed at 
localhost:5380. This port'
+               elog '   can be adjusted in settings'
+       fi
+}
+
+pkg_postrm() {
+       if [[ -d "${ROOT}/etc/dns" ]]; then
+               elog "Technitium DNS config files may still be present in 
\"${ROOT}/etc/dns\""
+       fi
+}

Reply via email to