commit:     9ae45b215255d54bb165ccc6cf2324197add02a8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 20 09:21:50 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Dec 20 10:03:25 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9ae45b21

net-dns/c-ares: add 1.24.0

Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-dns/c-ares/Manifest                            |   2 +
 net-dns/c-ares/c-ares-1.24.0.ebuild                | 115 +++++++++++++++++++++
 ...res-1.24.0-ares__iface_ips_enumerate-stub.patch |  34 ++++++
 net-dns/c-ares/files/c-ares-1.24.0-getrandom.patch |  80 ++++++++++++++
 .../files/c-ares-1.24.0-tests-symbol-hiding.patch  | 109 +++++++++++++++++++
 5 files changed, 340 insertions(+)

diff --git a/net-dns/c-ares/Manifest b/net-dns/c-ares/Manifest
index 7c0f33ffed5b..088a7d885e0b 100644
--- a/net-dns/c-ares/Manifest
+++ b/net-dns/c-ares/Manifest
@@ -6,3 +6,5 @@ DIST c-ares-1.22.1.tar.gz 1665059 BLAKE2B 
720d0efdbcb591cf9a8b99a60f24c9c720eee4
 DIST c-ares-1.22.1.tar.gz.asc 488 BLAKE2B 
a3723365cd733ca4551b039038baeb94b4e53dda3dac1c479606c07fbc09b8ea0ebbd83b26ede8e0a1782ac06dfb62b53472e0024239175d763fb1f3e6834b50
 SHA512 
37ad0a9c72e7a98bf83e4be107040c3223880a784e01a917dbe72861e2f4ca692100d2b8543be3c960d21fc8d3d57a7075f99ba6de61366a93783cea07cc9f76
 DIST c-ares-1.23.0.tar.gz 1681336 BLAKE2B 
0bbac0afed8c2853d3b9e95db0e9b1d170480471720ce9260d212c4da50311ba21f45a68e4737d23a22f3ebaef005055c227f9be1c07cc9e1d66a93af76af276
 SHA512 
0302fe809118bc81310c4f5ca4bbea3e2aee262da2c44ad6266d9da05e9326452f274508685974ff8aa6fce8332a2862008c12fbbc2917af258daa90b69567f0
 DIST c-ares-1.23.0.tar.gz.asc 488 BLAKE2B 
0db7e4af81c00e1d5a3db38a19686c23dd2dd61717c5767506a94e6e1c171cf33be4c49afabeb738e9f16d1b9c083b9b7b2ae66f9c91a6086fe296a7dfd262c4
 SHA512 
89e3523d6168672a85f14867cd6e29994b9dd54c6950e47d973d4d05ecaa76ce81813521bd7b748e4f7c2f34972cdd980dcecefe2832d1c6cad56065697a5216
+DIST c-ares-1.24.0.tar.gz 1368749 BLAKE2B 
aae99e1b5715ae4c68b84e3ceedf3e9758cf0f961bb85bfe870def2bd0342ac26d71a3a784708050c7a339360962567031e83c6b9a61a163ecaba0def6ceb24d
 SHA512 
3701853e263de94daf19734185ad913848c19b825e0738926b418a54b0628ee1ac95a49ebfaa2ddf3eed74a7ef209e1a0a8f573df3e507ef1f11fcc53fc5eb68
+DIST c-ares-1.24.0.tar.gz.asc 488 BLAKE2B 
965dc1ec04aae5ec4fb5e3cee6dfe99c102112d12498f841377d901e87d8b13e17a48ba8393054849206a21333173bd3ab1d7c61cf76b6c7415f5bf99a7ada1c
 SHA512 
dda1b8d3e715b5ba117542cab31826faf821061ea6ceefa77c0452f1d17d0c84a0cc5891722eb8e7f54da087c352409197d1e1a06420035a62c391e8e93cb8dd

diff --git a/net-dns/c-ares/c-ares-1.24.0.ebuild 
b/net-dns/c-ares/c-ares-1.24.0.ebuild
new file mode 100644
index 000000000000..a212ebd74cef
--- /dev/null
+++ b/net-dns/c-ares/c-ares-1.24.0.ebuild
@@ -0,0 +1,115 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/danielstenberg.asc
+inherit edo multilib-minimal verify-sig
+
+DESCRIPTION="C library that resolves names asynchronously"
+HOMEPAGE="https://c-ares.org/";
+SRC_URI="
+       https://c-ares.org/download/${P}.tar.gz
+       verify-sig? ( https://c-ares.org/download/${P}.tar.gz.asc )
+"
+
+# ISC for lib/{bitncmp.c,inet_ntop.c,inet_net_pton.c} (bug #912405)
+LICENSE="MIT ISC"
+# Subslot = SONAME of libcares.so.2
+SLOT="0/2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos 
~x64-macos ~x64-solaris"
+IUSE="static-libs test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+       test? ( dev-cpp/gtest )
+       verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
+"
+
+DOCS=( AUTHORS CHANGES NEWS README.md RELEASE-NOTES TODO )
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/ares_build.h
+)
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+       # Checking for obsolete headers
+       malloc
+       calloc
+       free
+
+       # Non-existent on Linux
+       closesocket
+       CloseSocket
+       ioctlsocket
+       bitncmp
+       ConvertInterfaceIndexToLuid
+       ConvertInterfaceLuidToNameA
+)
+
+PATCHES=(
+       "${FILESDIR}"/${P}-tests-symbol-hiding.patch
+       "${FILESDIR}"/${P}-getrandom.patch
+       "${FILESDIR}"/${P}-ares__iface_ips_enumerate-stub.patch
+)
+
+multilib_src_configure() {
+       # These configure tests take a long time to run. The args one runs in 
O(n^4).
+       export ac_cv_func_getnameinfo='yes'
+       export ac_cv_func_recvfrom='yes'
+       export ac_cv_func_recv='yes'
+       export ac_cv_func_send='yes'
+       export curl_cv_func_getnameinfo_args='const struct sockaddr 
*,socklen_t,size_t,int'
+       export curl_cv_func_recv_args='int,void *,size_t,int,int'
+       export curl_cv_func_recvfrom_args='int,void *,size_t,int,struct 
sockaddr *,socklen_t *,int'
+       export curl_cv_func_send_args='int,const void *,size_t,int,int'
+       export curl_cv_getnameinfo='yes'
+       export curl_cv_recv='yes'
+       export curl_cv_recvfrom='yes'
+       export curl_cv_send='yes'
+
+       local myeconfargs=(
+               --cache-file="${BUILD_DIR}"/config.cache
+
+               --enable-nonblocking
+               --enable-symbol-hiding
+               $(use_enable static-libs static)
+               $(use_enable test tests)
+       )
+
+       # Needed for running unit tests only
+       # Violates sandbox and tests pass fine without
+       export ax_cv_uts_namespace=no
+       export ax_cv_user_namespace=no
+       ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_test() {
+       cd "${BUILD_DIR}"/test || die
+
+       # We're skipping the "real" network tests with the filter
+       # see https://github.com/c-ares/c-ares/tree/main/test
+       local network_tests=(
+               # Most live tests have Live in the name
+               *Live*
+               # These don't but are still in ares-test-live.cc => live
+               *GetTCPSock*
+               *TimeoutValue*
+               *GetSock*
+               *GetSock_virtualized*
+               *VerifySocketFunctionCallback*
+               # Seems flaky, even run manually
+               # 
https://github.com/c-ares/c-ares/commit/9e542a8839f81c990bb0dff14beeaf9aa6bcc18d
+               *MockUDPMaxQueriesTest.GetHostByNameParallelLookups*
+       )
+
+       # The format for disabling test1, test2, and test3 looks like:
+       # -test1:test2:test3
+       edo ./arestest --gtest_filter=-$(echo $(IFS=:; echo 
"${network_tests[*]}"))
+}
+
+multilib_src_install_all() {
+       einstalldocs
+
+       find "${ED}" -name "*.la" -delete || die
+}

diff --git 
a/net-dns/c-ares/files/c-ares-1.24.0-ares__iface_ips_enumerate-stub.patch 
b/net-dns/c-ares/files/c-ares-1.24.0-ares__iface_ips_enumerate-stub.patch
new file mode 100644
index 000000000000..12252cb1741b
--- /dev/null
+++ b/net-dns/c-ares/files/c-ares-1.24.0-ares__iface_ips_enumerate-stub.patch
@@ -0,0 +1,34 @@
+https://github.com/c-ares/c-ares/commit/eebfe0c15e1cc231500dfd79c730788790ec5251
+
+From eebfe0c15e1cc231500dfd79c730788790ec5251 Mon Sep 17 00:00:00 2001
+From: Brad House <[email protected]>
+Date: Sun, 17 Dec 2023 19:03:33 -0500
+Subject: [PATCH] Fix bad stub for ares__iface_ips_enumerate()
+
+If the ability to enumerate interface ip addresses does not exist
+on a system, the stub function contained the wrong prototype.
+
+Fixes Bug: #668
+Fix By: Brad House (@bradh352)
+---
+ src/lib/ares__iface_ips.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/lib/ares__iface_ips.c b/src/lib/ares__iface_ips.c
+index e10a0d80c..7cd12a605 100644
+--- a/src/lib/ares__iface_ips.c
++++ b/src/lib/ares__iface_ips.c
+@@ -510,11 +510,10 @@ static ares_status_t 
ares__iface_ips_enumerate(ares__iface_ips_t *ips,
+ #else
+ 
+ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t     *ips,
+-                                               ares__iface_ip_flags_t flags,
+                                                const char            *name)
+ {
+   (void)ips;
+-  (void)flags;
++  (void)name;
+   return ARES_ENOTIMP;
+ }
+ 
+

diff --git a/net-dns/c-ares/files/c-ares-1.24.0-getrandom.patch 
b/net-dns/c-ares/files/c-ares-1.24.0-getrandom.patch
new file mode 100644
index 000000000000..090690213e22
--- /dev/null
+++ b/net-dns/c-ares/files/c-ares-1.24.0-getrandom.patch
@@ -0,0 +1,80 @@
+https://github.com/c-ares/c-ares/commit/d8edb76bece36267c4c55355ae9c7009e131a0e0
+
+From d8edb76bece36267c4c55355ae9c7009e131a0e0 Mon Sep 17 00:00:00 2001
+From: Brad House <[email protected]>
+Date: Sun, 17 Dec 2023 11:08:21 -0500
+Subject: [PATCH] getrandom() may require sys/random.h on some systems
+
+There is a reported build issue where getrandom() is detected
+but compile fails due to a missing prototype. This commit attempts
+to resolve that issue.
+
+Fixes Bug: #665
+Fix By: Brad House (@bradh352)
+---
+ CMakeLists.txt              | 2 ++
+ configure.ac                | 1 +
+ src/lib/ares_config.h.cmake | 3 +++
+ src/lib/ares_rand.c         | 3 +++
+ 4 files changed, 9 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a8d3eed06..29f5d7ed3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -225,6 +225,7 @@ CHECK_INCLUDE_FILES (sys/select.h          
HAVE_SYS_SELECT_H)
+ CHECK_INCLUDE_FILES (sys/stat.h            HAVE_SYS_STAT_H)
+ CHECK_INCLUDE_FILES (sys/time.h            HAVE_SYS_TIME_H)
+ CHECK_INCLUDE_FILES (sys/uio.h             HAVE_SYS_UIO_H)
++CHECK_INCLUDE_FILES (sys/random.h          HAVE_SYS_RANDOM_H)
+ CHECK_INCLUDE_FILES (ifaddrs.h             HAVE_IFADDRS_H)
+ CHECK_INCLUDE_FILES (time.h                HAVE_TIME_H)
+ CHECK_INCLUDE_FILES (dlfcn.h               HAVE_DLFCN_H)
+@@ -323,6 +324,7 @@ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_SOCKIO_H        
sys/sockio.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_TIME_H     sys/time.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_STAT_H     sys/stat.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_UIO_H      sys/uio.h)
++CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_RANDOM_H   sys/random.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_TIME_H         time.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_FCNTL_H        fcntl.h)
+ CARES_EXTRAINCLUDE_IFSET (HAVE_UNISTD_H       unistd.h)
+diff --git a/configure.ac b/configure.ac
+index 7a6b14092..e9c2534cd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -574,6 +574,7 @@ AC_CHECK_HEADERS(
+        sys/ioctl.h \
+        sys/param.h \
+        sys/uio.h \
++       sys/random.h \
+        assert.h \
+        iphlpapi.h \
+        netioapi.h \
+diff --git a/src/lib/ares_config.h.cmake b/src/lib/ares_config.h.cmake
+index c2974dced..3fb85d54f 100644
+--- a/src/lib/ares_config.h.cmake
++++ b/src/lib/ares_config.h.cmake
+@@ -320,6 +320,9 @@
+ /* Define to 1 if you have the <sys/param.h> header file. */
+ #cmakedefine HAVE_SYS_PARAM_H
+ 
++/* Define to 1 if you have the <sys/random.h> header file. */
++#cmakedefine HAVE_SYS_RANDOM_H
++
+ /* Define to 1 if you have the <sys/select.h> header file. */
+ #cmakedefine HAVE_SYS_SELECT_H
+ 
+diff --git a/src/lib/ares_rand.c b/src/lib/ares_rand.c
+index e6e35ef61..867ca3340 100644
+--- a/src/lib/ares_rand.c
++++ b/src/lib/ares_rand.c
+@@ -28,6 +28,9 @@
+ #include "ares.h"
+ #include "ares_private.h"
+ #include <stdlib.h>
++#ifdef HAVE_SYS_RANDOM_H
++#  include <sys/random.h>
++#endif
+ 
+ 
+ typedef enum {

diff --git a/net-dns/c-ares/files/c-ares-1.24.0-tests-symbol-hiding.patch 
b/net-dns/c-ares/files/c-ares-1.24.0-tests-symbol-hiding.patch
new file mode 100644
index 000000000000..901966330d1c
--- /dev/null
+++ b/net-dns/c-ares/files/c-ares-1.24.0-tests-symbol-hiding.patch
@@ -0,0 +1,109 @@
+https://github.com/c-ares/c-ares/commit/7dd384a99cc385e408e64c3e0af4e0e2136ed034
+
+From 7dd384a99cc385e408e64c3e0af4e0e2136ed034 Mon Sep 17 00:00:00 2001
+From: Brad House <[email protected]>
+Date: Sun, 17 Dec 2023 08:16:24 -0500
+Subject: [PATCH] fix test building with symbol hiding
+
+New test cases depend on internal symbols for calculating timeouts.
+Disable those test features if symbol hiding is enabled.
+
+Fixes Bug: #664
+Fix By: Brad House (@bradh352)
+---
+ test/ares-test-mock-ai.cc |  2 ++
+ test/ares-test-mock.cc    |  4 ++--
+ test/ares-test.cc         | 12 ++++++++++++
+ 3 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/test/ares-test-mock-ai.cc b/test/ares-test-mock-ai.cc
+index c55676f6c..57b9d5ee2 100644
+--- a/test/ares-test-mock-ai.cc
++++ b/test/ares-test-mock-ai.cc
+@@ -442,6 +442,7 @@ TEST_P(MockChannelTestAI, FamilyV6) {
+   EXPECT_THAT(result.ai_, 
IncludesV6Address("2121:0000:0000:0000:0000:0000:0000:0303"));
+ }
+ 
++#ifndef CARES_SYMBOL_HIDING
+ // Test case for Issue #662
+ TEST_P(MockChannelTestAI, PartialQueryCancel) {
+   std::vector<byte> nothing;
+@@ -469,6 +470,7 @@ TEST_P(MockChannelTestAI, PartialQueryCancel) {
+   EXPECT_TRUE(result.done_);
+   EXPECT_EQ(ARES_ECANCELLED, result.status_);
+ }
++#endif
+ 
+ TEST_P(MockChannelTestAI, FamilyV4) {
+   DNSPacket rsp4;
+diff --git a/test/ares-test-mock.cc b/test/ares-test-mock.cc
+index 6afa8f989..849eb6980 100644
+--- a/test/ares-test-mock.cc
++++ b/test/ares-test-mock.cc
+@@ -826,7 +826,7 @@ TEST_P(MockChannelTest, V4WorksV6Timeout) {
+   EXPECT_EQ("{'www.google.com' aliases=[] addrs=[1.2.3.4]}", ss.str());
+ }
+ 
+-
++#ifndef CARES_SYMBOL_HIDING
+ // Test case for Issue #662
+ TEST_P(MockChannelTest, PartialQueryCancel) {
+   std::vector<byte> nothing;
+@@ -849,7 +849,7 @@ TEST_P(MockChannelTest, PartialQueryCancel) {
+   EXPECT_TRUE(result.done_);
+   EXPECT_EQ(ARES_ECANCELLED, result.status_);
+ }
+-
++#endif
+ 
+ TEST_P(MockChannelTest, UnspecifiedFamilyV6) {
+   DNSPacket rsp6;
+diff --git a/test/ares-test.cc b/test/ares-test.cc
+index faad01486..3a55b73d3 100644
+--- a/test/ares-test.cc
++++ b/test/ares-test.cc
+@@ -105,6 +105,8 @@ void ProcessWork(ares_channel_t *channel,
+                  unsigned int cancel_ms) {
+   int nfds, count;
+   fd_set readers, writers;
++
++#ifndef CARES_SYMBOL_HIDING
+   struct timeval tv_begin  = ares__tvnow();
+   struct timeval tv_cancel = tv_begin;
+ 
+@@ -113,10 +115,18 @@ void ProcessWork(ares_channel_t *channel,
+     tv_cancel.tv_sec  += (cancel_ms / 1000);
+     tv_cancel.tv_usec += ((cancel_ms % 1000) * 1000);
+   }
++#else
++  if (cancel_ms) {
++    std::cerr << "library built with symbol hiding, can't test with cancel 
support" << std::endl;
++    return;
++  }
++#endif
+ 
+   while (true) {
++#ifndef CARES_SYMBOL_HIDING
+     struct timeval  tv_now = ares__tvnow();
+     struct timeval  tv_remaining;
++#endif
+     struct timeval  tv;
+     struct timeval *tv_select;
+ 
+@@ -142,6 +152,7 @@ void ProcessWork(ares_channel_t *channel,
+     if (tv_select == NULL)
+       return;
+ 
++#ifndef CARES_SYMBOL_HIDING
+     if (cancel_ms) {
+       unsigned int remaining_ms;
+       ares__timeval_remaining(&tv_remaining,
+@@ -157,6 +168,7 @@ void ProcessWork(ares_channel_t *channel,
+         tv_select = ares_timeout(channel, &tv_remaining, &tv);
+       }
+     }
++#endif
+ 
+     count = select(nfds, &readers, &writers, nullptr, tv_select);
+     if (count < 0) {
+

Reply via email to