summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc')
-rw-r--r--net-misc/dibbler/dibbler-1.0.1-r4.ebuild66
-rw-r--r--net-misc/dibbler/files/dibbler-1.0.1-clang-16-musl-fix.patch74
2 files changed, 140 insertions, 0 deletions
diff --git a/net-misc/dibbler/dibbler-1.0.1-r4.ebuild b/net-misc/dibbler/dibbler-1.0.1-r4.ebuild
new file mode 100644
index 000000000000..b6fa854d515d
--- /dev/null
+++ b/net-misc/dibbler/dibbler-1.0.1-r4.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit flag-o-matic readme.gentoo-r1 systemd
+
+DESCRIPTION="Portable DHCPv6 implementation (server, client and relay)"
+HOMEPAGE="http://klub.com.pl/dhcpv6/"
+SRC_URI="http://klub.com.pl/dhcpv6/dibbler/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~hppa ~mips ~x86"
+IUSE="doc resolvconf"
+
+RDEPEND="resolvconf? ( virtual/resolvconf )"
+DEPEND="${RDEPEND}
+ doc? ( dev-texlive/texlive-latexextra )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fno-common.patch
+ "${FILESDIR}"/${P}-gnu-ism.patch
+ "${FILESDIR}"/${P}-clang-16-musl-fix.patch
+)
+
+DOC_CONTENTS="Make sure that you modify client.conf, server.conf and/or relay.conf
+to suit your needs. They are stored in /etc/dibbler"
+
+src_configure() {
+ # ODR violations, bug #861611
+ filter-lto
+
+ # Uses removed 'register' keyword
+ append-cxxflags -std=c++14
+
+ econf $(use_enable resolvconf)
+}
+
+src_compile() {
+ default
+ # devel documentation is broken and users should consult the online version
+ # http://klub.com.pl/dhcpv6/doxygen/
+ use doc && emake -C doc/ user
+}
+
+src_install() {
+ default
+ readme.gentoo_create_doc
+
+ dosbin dibbler-{client,relay,server}
+ doman doc/man/*.8
+
+ insinto /etc/dibbler
+ doins doc/examples/*.conf
+ keepdir /var/lib/dibbler
+
+ dodoc AUTHORS CHANGELOG RELNOTES TODO
+ use doc && dodoc doc/dibbler-user.pdf
+
+ doinitd "${FILESDIR}"/dibbler-{client,relay,server}
+ systemd_dounit "${FILESDIR}"/dibbler-client.service
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+}
diff --git a/net-misc/dibbler/files/dibbler-1.0.1-clang-16-musl-fix.patch b/net-misc/dibbler/files/dibbler-1.0.1-clang-16-musl-fix.patch
new file mode 100644
index 000000000000..99fdc342b229
--- /dev/null
+++ b/net-misc/dibbler/files/dibbler-1.0.1-clang-16-musl-fix.patch
@@ -0,0 +1,74 @@
+From: Brahmajit Das <brahmajit.xyz@gmail.com>
+Date: Wed, 31 May 2023 06:27:08 +0000
+Subject: [PATCH] Fix build with clang 16
+
+Especially on musl libc.
+
+On musl libc with clang-16, the function pthread_kill can't be found, as its
+only available if the FTM is enabled. Hence defining _GNU_SOURCE makes thie
+function available.
+
+Other than that this patch also renames the variable lock, to fix the following
+error: ./Port-linux/dibbler-client.cpp:48:27: error: reference to 'lock' is
+ambiguous. I'm exactly not sure what the errors are, but I'm guessing it's
+related to CPP namespaces. Not sure either why its not reproducable under glibc
+llvm.
+
+Bug: https://bugs.gentoo.org/897944
+Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
+--- a/Port-linux/dibbler-client.cpp
++++ b/Port-linux/dibbler-client.cpp
+@@ -26,7 +26,7 @@ using namespace std;
+
+ #define IF_RECONNECTED_DETECTED -1
+
+-extern pthread_mutex_t lock;
++extern pthread_mutex_t plock;
+
+ TDHCPClient* ptr = 0;
+
+@@ -44,8 +44,8 @@ void signal_handler(int n) {
+ #ifdef MOD_CLNT_CONFIRM
+ void signal_handler_of_linkstate_change(int n) {
+ Log(Notice) << "Network switch off event detected. initiating CONFIRM." << LogEnd;
+- pthread_mutex_lock(&lock);
+- pthread_mutex_unlock(&lock);
++ pthread_mutex_lock(&plock);
++ pthread_mutex_unlock(&plock);
+ }
+ #endif
+
+--- a/Port-linux/lowlevel-linux-link-state.c
++++ b/Port-linux/lowlevel-linux-link-state.c
+@@ -10,6 +10,7 @@
+ #ifdef MOD_CLNT_CONFIRM
+
+ #define __USE_UNIX98
++#define _GNU_SOURCE
+
+ #include <stdio.h>
+ #include <signal.h>
+@@ -34,7 +35,7 @@ volatile int * notifier = 0;
+ int isDone = 0;
+ pthread_t parent_id;
+ pthread_t ntid;
+-pthread_mutex_t lock;
++pthread_mutex_t plock;
+
+ struct state {
+ int id;
+@@ -86,9 +87,9 @@ void link_state_changed(int ifindex)
+ {
+ if (changed_links->cnt<16)
+ changed_links->ifindex[changed_links->cnt++] = ifindex;
+- pthread_mutex_lock(&lock);
++ pthread_mutex_lock(&plock);
+ *notifier = 1; /* notify that change has occured */
+- pthread_mutex_unlock(&lock);
++ pthread_mutex_unlock(&plock);
+ pthread_kill(parent_id,SIGUSR1);
+ } else
+ {
+--
+2.40.1
+