commit:     6767b170ee365946ed1a635ed9ce1467ee0286ff
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Sat Jul 26 12:48:17 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jul 26 21:31:52 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6767b170

net-misc/ipv6calc: fix build with clang and --as-needed

Add a patch merged in upstream to fix link issues with clang and
--as-needed.
The issue with lto and the module for apache is still there.

Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr>
Part-of: https://github.com/gentoo/gentoo/pull/43174
Closes: https://github.com/gentoo/gentoo/pull/43174
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../ipv6calc/files/ipv6calc-4.3.2-fix_libs.patch   | 246 +++++++++++++++++++++
 ...6calc-4.3.2.ebuild => ipv6calc-4.3.2-r1.ebuild} |  17 +-
 2 files changed, 257 insertions(+), 6 deletions(-)

diff --git a/net-misc/ipv6calc/files/ipv6calc-4.3.2-fix_libs.patch 
b/net-misc/ipv6calc/files/ipv6calc-4.3.2-fix_libs.patch
new file mode 100644
index 000000000000..e1d8053c3f70
--- /dev/null
+++ b/net-misc/ipv6calc/files/ipv6calc-4.3.2-fix_libs.patch
@@ -0,0 +1,246 @@
+PR merged
+https://github.com/pbiering/ipv6calc/pull/50.patch
+From c92628f1fb4a7b61ddde19bab8e75ae258d000b7 Mon Sep 17 00:00:00 2001
+From: Nicolas PARLANT <[email protected]>
+Date: Sat, 26 Jul 2025 07:40:08 +0200
+Subject: [PATCH] fix link issues with clang and --as-needed
+
+> ld.lld: error: undefined reference: EVP_MD_CTX_new
+> >>> referenced by ../lib/libipv6calc.so.4.3.2
+
+> ./ipv6calc: symbol lookup error:
+> ../databases/lib/libipv6calc_db_wrapper.so.4.3.2: undefined symbol: log2
+
+add MD5_LIB for libmd/openssl
+add EXTDB_LIB where IPV6CALC_LIB is called
+
+move extern math in LIBS instead of LDFLAGS
+
+Signed-off-by: Nicolas PARLANT <[email protected]>
+---
+ configure.ac              | 22 ++++++++++------------
+ databases/lib/Makefile.in |  4 +++-
+ ipv6calc/Makefile.in      |  6 +++---
+ ipv6loganon/Makefile.in   |  6 +++---
+ ipv6logconv/Makefile.in   |  6 +++---
+ ipv6logstats/Makefile.in  |  6 +++---
+ lib/Makefile.in           |  4 +++-
+ 7 files changed, 28 insertions(+), 26 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 65d57e4b..268e8a22 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -481,27 +481,24 @@ if test "$ENABLE_BUNDLED_MD5" = "1"; then
+       AC_DEFINE(ENABLE_BUNDLED_MD5, 1, Define if bundled MD5 should be used)
+ else
+       if test "$ENABLE_LIBMD_MD5" = "1"; then
+-              LDFLAGS_EXTRA="${LDFLAGS_EXTRA:+$LDFLAGS_EXTRA }-lmd"
+-              LDFLAGS_EXTRA_MOD_IPV6CALC="-lmd $LDFLAGS_EXTRA_MOD_IPV6CALC"
+-              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lmd -lz 
-ldl -lpthread -lc"
++              MD5_LIB="-lmd"
++              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lz -ldl 
-lpthread -lc"
+ 
+               AC_DEFINE(ENABLE_LIBMD_MD5, 1, Define if libmd MD5 should be 
used)
+               AC_MSG_RESULT([*** use of libmd MD5 implementation])
+       fi
+ 
+       if test "$ENABLE_OPENSSL_EVP_MD5" = "1"; then
+-              LDFLAGS_EXTRA="${LDFLAGS_EXTRA:+$LDFLAGS_EXTRA }-lcrypto"
+-              LDFLAGS_EXTRA_MOD_IPV6CALC="-lcrypto 
$LDFLAGS_EXTRA_MOD_IPV6CALC"
+-              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lcrypto 
-lz -ldl -lpthread -lc"
++              MD5_LIB="-lcrypto"
++              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lz -ldl 
-lpthread -lc"
+ 
+               AC_DEFINE(ENABLE_OPENSSL_EVP_MD5, 1, Define if OpenSSL EVP MD5 
should be used)
+               AC_MSG_RESULT([*** use of OpenSSL EVP MD5 implementation])
+       fi
+ 
+       if test "$ENABLE_OPENSSL_MD5" = "1"; then
+-              LDFLAGS_EXTRA="${LDFLAGS_EXTRA:+$LDFLAGS_EXTRA }-lcrypto"
+-              LDFLAGS_EXTRA_MOD_IPV6CALC="-lcrypto 
$LDFLAGS_EXTRA_MOD_IPV6CALC"
+-              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lcrypto 
-lz -ldl -lpthread -lc"
++              MD5_LIB="-lcrypto"
++              
LDFLAGS_EXTRA_STATIC="${LDFLAGS_EXTRA_STATIC:+$LDFLAGS_EXTRA_STATIC }-lz -ldl 
-lpthread -lc"
+ 
+               AC_DEFINE(ENABLE_OPENSSL_MD5, 1, Define if OpenSSL legacy MD5 
should be used)
+               AC_MSG_RESULT([*** use of OpenSSL legacy MD5 implementation])
+@@ -509,6 +506,7 @@ else
+ fi
+ 
+ AC_SUBST(MD5_INCLUDE)
++AC_SUBST(MD5_LIB)
+ AC_SUBST(ENABLE_BUNDLED_MD5)
+ AC_SUBST(ENABLE_LIBMD_MD5)
+ AC_SUBST(ENABLE_OPENSSL_EVP_MD5)
+@@ -767,19 +765,19 @@ if test "$require_libdb" = "yes"; then
+               DB_VERSION=`/sbin/ldconfig -p | grep -E 
'#?\s*libdb-[0-9]+.[0-9]+' | sed -e 
's/^#\?\s*libdb-\([0-9]*\)\.\([0-9]*\).*/\1.\2/' | sort -n | tail -1`
+               if test -n "$DB_VERSION"; then
+                       AC_MSG_RESULT([Berkeley DB library version found: 
libdb-$DB_VERSION])
+-                      
LDFLAGS_EXTRA_STATIC="-ldb-$DB_VERSION${LDFLAGS_EXTRA_STATIC:+ 
$LDFLAGS_EXTRA_STATIC}"
++                      EXTDB_LIB="-ldb-$DB_VERSION"
+               fi
+       ],[
+               AC_MSG_WARN([Missing /sbin/ldconfig, cannot detect Berkeley DB 
library version])
+       ])
+ 
+-      LDFLAGS_EXTRA="${LDFLAGS_EXTRA:+$LDFLAGS_EXTRA }-ldb"
+-      LDFLAGS_EXTRA_MOD_IPV6CALC="-ldb $LDFLAGS_EXTRA_MOD_IPV6CALC"
++      EXTDB_LIB="-ldb"
+       HAVE_BERKELEY_DB_SUPPORT=1
+       AC_DEFINE(HAVE_BERKELEY_DB_SUPPORT, 1, Define if Berkeley DB support is 
required.)
+       AC_MSG_RESULT([*** Berkeley DB library found and usable (required)])
+ fi
+ 
++AC_SUBST(EXTDB_LIB)
+ 
+ dnl *************************************************
+ dnl MaxMindDB support (GeoIP2, DB-IP, IP2Location)
+diff --git a/databases/lib/Makefile.in b/databases/lib/Makefile.in
+index a3846a72..061bb0bc 100644
+--- a/databases/lib/Makefile.in
++++ b/databases/lib/Makefile.in
+@@ -17,6 +17,8 @@ LDFLAGS += @LDFLAGS@
+ 
+ INCLUDES= -I../../lib -I../.. @MMDB_INCLUDE_L2@ @IP2LOCATION_INCLUDE_L2@
+ 
++LIBS = @MMDB_LIB_L1@ @IP2LOCATION_LIB_L1@ @EXTDB_LIB@ @DYNLOAD_LIB@ -lm
++
+ SHARED_LIBRARY=@SHARED_LIBRARY@
+ 
+ ifeq ($(shell uname), Darwin)
+@@ -71,7 +73,7 @@ libipv6calc_db_wrapper.a:    $(OBJS)
+ libipv6calc_db_wrapper.so.@PACKAGE_VERSION@:  $(OBJS)
+ ifeq ($(SHARED_LIBRARY), yes)
+               echo "Create shared library (libipv6calc_db_wrapper.so)"
+-              $(CC) -o libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ $(OBJS) 
$(CFLAGS) $(LDFLAGS) -shared 
-Wl,$(SO_NAME_FLAGS),libipv6calc_db_wrapper.so.@PACKAGE_VERSION@
++              $(CC) -o libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ $(OBJS) 
$(CFLAGS) $(LDFLAGS) $(LIBS) -shared 
-Wl,$(SO_NAME_FLAGS),libipv6calc_db_wrapper.so.@PACKAGE_VERSION@
+ else
+               echo "Nothing to do (shared library mode is not enabled)"
+ endif
+diff --git a/ipv6calc/Makefile.in b/ipv6calc/Makefile.in
+index b3442f04..55d48643 100644
+--- a/ipv6calc/Makefile.in
++++ b/ipv6calc/Makefile.in
+@@ -19,7 +19,7 @@ LDFLAGS += @LDFLAGS_EXTRA@
+ 
+ INCLUDES= @MD5_INCLUDE@ @GETOPT_INCLUDE@ @MMDB_INCLUDE_L1@ 
@IP2LOCATION_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/
+ 
+-LIBS = @IPV6CALC_LIB@ @MMDB_LIB_L1@ @IP2LOCATION_LIB_L1@ @DYNLOAD_LIB@
++LIBS = @IPV6CALC_LIB@ @MMDB_LIB_L1@ @IP2LOCATION_LIB_L1@ @EXTDB_LIB@ 
@MD5_LIB@ @DYNLOAD_LIB@ -lm
+ 
+ GETOBJS = @LIBOBJS@
+ 
+@@ -49,10 +49,10 @@ libipv6calc_db_wrapper:
+               cd ../ && ${MAKE} lib-make
+ 
+ ipv6calc:     $(OBJS) libipv6calc libipv6calc_db_wrapper
+-              $(CC) -o ipv6calc $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) -lm
++              $(CC) -o ipv6calc $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS)
+ 
+ static:               ipv6calc
+-              $(CC) -o ipv6calc-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) 
$(LDFLAGS_EXTRA_STATIC) -lm -static
++              $(CC) -o ipv6calc-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) 
$(LDFLAGS_EXTRA_STATIC) -static
+ 
+ distclean:
+               ${MAKE} clean
+diff --git a/ipv6loganon/Makefile.in b/ipv6loganon/Makefile.in
+index 81b02a48..9e234846 100644
+--- a/ipv6loganon/Makefile.in
++++ b/ipv6loganon/Makefile.in
+@@ -19,7 +19,7 @@ LDFLAGS += @LDFLAGS_EXTRA@
+ 
+ INCLUDES= $(COPTS) @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ 
@MMDB_INCLUDE_L1@ -I../ -I../lib/
+ 
+-LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @MMDB_LIB_L1@ @DYNLOAD_LIB@
++LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @MMDB_LIB_L1@ @EXTDB_LIB@ 
@DYNLOAD_LIB@ -lm
+ 
+ GETOBJS = @LIBOBJS@
+ 
+@@ -47,10 +47,10 @@ libipv6calc_db_wrapper:
+               cd ../ && ${MAKE} lib-make
+ 
+ ipv6loganon:  $(OBJS) libipv6calc libipv6calc_db_wrapper
+-              $(CC) -o ipv6loganon $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) -lm
++              $(CC) -o ipv6loganon $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS)
+ 
+ static:               ipv6loganon
+-              $(CC) -o ipv6loganon-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -lm -static
++              $(CC) -o ipv6loganon-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -static
+ 
+ distclean:
+               ${MAKE} clean
+diff --git a/ipv6logconv/Makefile.in b/ipv6logconv/Makefile.in
+index dfd1e0b4..b624eb73 100644
+--- a/ipv6logconv/Makefile.in
++++ b/ipv6logconv/Makefile.in
+@@ -19,7 +19,7 @@ LDFLAGS += @LDFLAGS_EXTRA@
+ 
+ INCLUDES= @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ 
@MMDB_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/
+ 
+-LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @MMDB_LIB_L1@ @DYNLOAD_LIB@
++LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @MMDB_LIB_L1@ @EXTDB_LIB@ 
@DYNLOAD_LIB@ -lm
+ 
+ GETOBJS = @LIBOBJS@
+ 
+@@ -47,10 +47,10 @@ libipv6calc_db_wrapper:
+               cd ../ && ${MAKE} lib-make
+ 
+ ipv6logconv:  $(OBJS) libipv6calc libipv6calc_db_wrapper
+-              $(CC) -o ipv6logconv $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) -lm
++              $(CC) -o ipv6logconv $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS)
+ 
+ static:               ipv6logconv
+-              $(CC) -o ipv6logconv-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -lm -static
++              $(CC) -o ipv6logconv-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -static
+ 
+ distclean:
+               ${MAKE} clean
+diff --git a/ipv6logstats/Makefile.in b/ipv6logstats/Makefile.in
+index 241723a4..98c093c2 100644
+--- a/ipv6logstats/Makefile.in
++++ b/ipv6logstats/Makefile.in
+@@ -19,7 +19,7 @@ LDFLAGS += @LDFLAGS_EXTRA@
+ 
+ INCLUDES= $(COPTS) @MD5_INCLUDE@ @GETOPT_INCLUDE@ @MMDB_INCLUDE_L1@ 
@IP2LOCATION_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/
+ 
+-LIBS = @IPV6CALC_LIB@ @MMDB_LIB_L1@ @IP2LOCATION_LIB_L1@ @DYNLOAD_LIB@
++LIBS = @IPV6CALC_LIB@ @MMDB_LIB_L1@ @IP2LOCATION_LIB_L1@ @EXTDB_LIB@ 
@DYNLOAD_LIB@ -lm
+ 
+ GETOBJS = @LIBOBJS@
+ 
+@@ -47,10 +47,10 @@ libipv6calc_db_wrapper.a:
+ $(OBJS):      ipv6logstatsoptions.h ipv6logstatshelp.h ipv6logstats.h
+ 
+ ipv6logstats: $(OBJS) libipv6calc.a libipv6calc_db_wrapper.a
+-              $(CC) -o ipv6logstats $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) -lm
++              $(CC) -o ipv6logstats $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS)
+ 
+ static:               ipv6logstats
+-              $(CC) -o ipv6logstats-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -lm -static
++              $(CC) -o ipv6logstats-static $(OBJS) $(GETOBJS) $(LDFLAGS) 
$(LIBS) $(LDFLAGS_EXTRA_STATIC) -static
+ 
+ distclean:
+               ${MAKE} clean
+diff --git a/lib/Makefile.in b/lib/Makefile.in
+index 846b3d1f..1b9acec4 100644
+--- a/lib/Makefile.in
++++ b/lib/Makefile.in
+@@ -17,6 +17,8 @@ LDFLAGS += @LDFLAGS@
+ 
+ INCLUDES= -I. -I../ -I../databases/lib/ @GETOPT_INCLUDE@ @MD5_INCLUDE@ 
@MMDB_INCLUDE_L1@ @IP2LOCATION_INCLUDE_L1@
+ 
++LIBS = @MD5_LIB@ -lm
++
+ ifeq ($(shell uname), Darwin)
+       SO_NAME_FLAGS=-install_name
+ else
+@@ -102,7 +104,7 @@ ifeq ($(SHARED_LIBRARY), yes)
+               cd ../ && ${MAKE} db-ipv4-assignment-make
+               cd ../ && ${MAKE} db-ipv6-assignment-make
+               echo "Creates shared library (libipv6calc.so)"
+-              $(CC) -o libipv6calc.so.@PACKAGE_VERSION@ $(OBJS) $(CFLAGS) 
$(LDFLAGS) -shared -Wl,$(SO_NAME_FLAGS),libipv6calc.so.@PACKAGE_VERSION@
++              $(CC) -o libipv6calc.so.@PACKAGE_VERSION@ $(OBJS) $(CFLAGS) 
$(LDFLAGS) $(LIBS) -shared -Wl,$(SO_NAME_FLAGS),libipv6calc.so.@PACKAGE_VERSION@
+ else
+               echo "Nothing to do (shared library mode is not enabled)"
+ endif

diff --git a/net-misc/ipv6calc/ipv6calc-4.3.2.ebuild 
b/net-misc/ipv6calc/ipv6calc-4.3.2-r1.ebuild
similarity index 91%
rename from net-misc/ipv6calc/ipv6calc-4.3.2.ebuild
rename to net-misc/ipv6calc/ipv6calc-4.3.2-r1.ebuild
index c4ac0f939bb3..7ebd707f9917 100644
--- a/net-misc/ipv6calc/ipv6calc-4.3.2.ebuild
+++ b/net-misc/ipv6calc/ipv6calc-4.3.2-r1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI="8"
 
-inherit flag-o-matic toolchain-funcs
+inherit autotools flag-o-matic toolchain-funcs
 
 DESCRIPTION="IPv6 address calculator"
 HOMEPAGE="https://www.deepspace6.net/projects/ipv6calc.html";
@@ -30,19 +30,24 @@ RDEPEND="
 DEPEND="${RDEPEND}"
 
 PATCHES=(
-       # https://github.com/pbiering/ipv6calc/pull/49
-       "${FILESDIR}"/${P}-fix_directcall_ar.patch
        "${FILESDIR}"/${P}-ldconfig_musl.patch
+       # both are merged. to be removed.
+       "${FILESDIR}"/${P}-fix_directcall_ar.patch
+       "${FILESDIR}"/${P}-fix_libs.patch
 )
 
 DOCS=( ChangeLog CREDITS README README.MaxMindDB README.GeoIP2 TODO USAGE )
 HTML_DOCS=( doc/ipv6calc.html )
 
+src_prepare() {
+       default
+       # configure.ac is patched
+       eautoconf
+}
+
 src_configure() {
-       # something is broken with clang. to investigate.
        # see https://github.com/pbiering/ipv6calc/issues/45
-       tc-is-clang && append-ldflags $(no-as-needed) && filter-lto
-
+       use cgi && tc-is-clang && filter-lto
        # These options are broken.  You can't disable them.  That's
        # okay because we want then force enabled.
        # > libipv6calc_db_wrapper_BuiltIn.c:244:91:

Reply via email to