diff --git a/main/c-ares/APKBUILD b/main/c-ares/APKBUILD index 074b189c992f626e0ae5c998e6bbf99ea522ec3d..ceec48b135a6f6cca37f816807c351b0f56b788b 100644 --- a/main/c-ares/APKBUILD +++ b/main/c-ares/APKBUILD @@ -1,14 +1,17 @@ # Contributor: Carlo Landmeter <clandmeter@alpinelinux.org> # Maintainer: Carlo Landmeter <clandmeter@alpinelinux.org> pkgname=c-ares -pkgver=1.23.0 +pkgver=1.24.0 pkgrel=0 pkgdesc="Asynchronous DNS/names resolver library" url="https://c-ares.org/" arch="all" license="MIT" +makedepends="gtest-dev" subpackages="$pkgname-doc $pkgname-static $pkgname-dev $pkgname-utils::noarch" -source="https://c-ares.haxx.se/download/c-ares-$pkgver.tar.gz" +source="https://c-ares.haxx.se/download/c-ares-$pkgver.tar.gz + fix-tests-symbol-hiding.patch + " # secfixes: # 1.17.2-r0: @@ -41,5 +44,6 @@ utils() { } sha512sums=" -0302fe809118bc81310c4f5ca4bbea3e2aee262da2c44ad6266d9da05e9326452f274508685974ff8aa6fce8332a2862008c12fbbc2917af258daa90b69567f0 c-ares-1.23.0.tar.gz +3701853e263de94daf19734185ad913848c19b825e0738926b418a54b0628ee1ac95a49ebfaa2ddf3eed74a7ef209e1a0a8f573df3e507ef1f11fcc53fc5eb68 c-ares-1.24.0.tar.gz +136b4e7a1988709e2ec96638e0ca546b1a3100cd0047d9ffb35344b7e1a4486fc7e0df2faee1096d51bf2056701d0e21b6786ea2662fca1de4f264b29939949c fix-tests-symbol-hiding.patch " diff --git a/main/c-ares/fix-tests-symbol-hiding.patch b/main/c-ares/fix-tests-symbol-hiding.patch new file mode 100644 index 0000000000000000000000000000000000000000..015f37a3d2371ce6527c6de88d6063d1d235efe5 --- /dev/null +++ b/main/c-ares/fix-tests-symbol-hiding.patch @@ -0,0 +1,108 @@ +Patch-Source: https://github.com/c-ares/c-ares/commit/7dd384a99cc385e408e64c3e0af4e0e2136ed034.patch +-- +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) {