diff options
author | Sam James <sam@gentoo.org> | 2023-12-20 09:21:50 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-12-20 10:03:25 +0000 |
commit | 9ae45b215255d54bb165ccc6cf2324197add02a8 (patch) | |
tree | 0e9c3211d092ae9603b4f016876d8af88b8ffac1 /net-dns/c-ares | |
parent | sys-firmware/sof-firmware: add 2023.12 (diff) | |
download | gentoo-9ae45b215255d54bb165ccc6cf2324197add02a8.tar.gz gentoo-9ae45b215255d54bb165ccc6cf2324197add02a8.tar.bz2 gentoo-9ae45b215255d54bb165ccc6cf2324197add02a8.zip |
net-dns/c-ares: add 1.24.0
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'net-dns/c-ares')
-rw-r--r-- | net-dns/c-ares/Manifest | 2 | ||||
-rw-r--r-- | net-dns/c-ares/c-ares-1.24.0.ebuild | 115 | ||||
-rw-r--r-- | net-dns/c-ares/files/c-ares-1.24.0-ares__iface_ips_enumerate-stub.patch | 34 | ||||
-rw-r--r-- | net-dns/c-ares/files/c-ares-1.24.0-getrandom.patch | 80 | ||||
-rw-r--r-- | net-dns/c-ares/files/c-ares-1.24.0-tests-symbol-hiding.patch | 109 |
5 files changed, 340 insertions, 0 deletions
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 <brad@brad-house.com> +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 <brad@brad-house.com> +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 <brad@brad-house.com> +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) { + |