diff --git a/backport-googletest-1.17.0-requires-c++17-or-higher.patch b/backport-googletest-1.17.0-requires-c++17-or-higher.patch new file mode 100644 index 0000000000000000000000000000000000000000..beb4d9f81fdef0f8032ceb4559a06307c89475be --- /dev/null +++ b/backport-googletest-1.17.0-requires-c++17-or-higher.patch @@ -0,0 +1,115 @@ +From 9c5f4b33d5711e3721a68d25129fbe9a1e0adebb Mon Sep 17 00:00:00 2001 +From: Brad House +Date: Sat, 5 Jul 2025 17:58:47 -0400 +Subject: [PATCH] googletest 1.17.0 requires c++17 or higher (#1004) + +googletest 1.17.0 requires c++17 or higher. The previous check for c++14 +would cause issues. + +Fixes Issue #993 +Signed-off-by: Brad House (@bradh352) +--- + CMakeLists.txt | 9 --------- + configure.ac | 20 ++++++++++---------- + test/CMakeLists.txt | 4 ++++ + 3 files changed, 14 insertions(+), 19 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 02588bd731..65e58deb85 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,15 +45,6 @@ OPTION (CARES_THREADS "Build with thread-safety support" + OPTION (CARES_COVERAGE "Build for code coverage" OFF) + SET (CARES_RANDOM_FILE "/dev/urandom" CACHE STRING "Suitable File / Device Path for entropy, such as /dev/urandom") + +- +-# Tests require a C++14 compiler +-IF (CARES_BUILD_TESTS OR CARES_BUILD_CONTAINER_TESTS) +- set(CMAKE_CXX_STANDARD 14) +- set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +- set(CMAKE_CXX_EXTENSIONS FALSE) +- enable_language(CXX) +-ENDIF () +- + # Tests require static to be enabled on Windows to be able to access otherwise hidden symbols + IF ((CARES_BUILD_TESTS OR CARES_BUILD_CONTAINER_TESTS) AND (NOT CARES_STATIC) AND WIN32) + SET (CARES_STATIC ON) +diff --git a/configure.ac b/configure.ac +index df5e07915b..c4c5a13cd3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -40,7 +40,8 @@ AC_CONFIG_HEADERS([src/lib/ares_config.h include/ares_build.h]) + AC_CONFIG_AUX_DIR(config) + AC_CONFIG_MACRO_DIR([m4]) + AC_USE_SYSTEM_EXTENSIONS +-AX_CXX_COMPILE_STDCXX_14([noext],[optional]) ++AX_CXX_COMPILE_STDCXX(14,[noext],[optional]) ++AX_CXX_COMPILE_STDCXX(17,[noext],[optional]) + AM_INIT_AUTOMAKE([foreign subdir-objects 1.9.6]) + LT_INIT([win32-dll,pic,disable-fast-install,aix-soname=svr4]) + AC_LANG([C]) +@@ -811,14 +812,6 @@ BUILD_SUBDIRS="include src docs" + + dnl ******** TESTS ******* + +-if test "x$build_tests" != "xno" -a "x$HAVE_CXX14" = "0" ; then +- if test "x$build_tests" = "xmaybe" ; then +- AC_MSG_WARN([cannot build tests without a CXX14 compiler]) +- build_tests=no +- else +- AC_MSG_ERROR([*** Building tests requires a CXX14 compiler]) +- fi +-fi + if test "x$build_tests" != "xno" -a "x$cross_compiling" = "xyes" ; then + if test "x$build_tests" = "xmaybe" ; then + AC_MSG_WARN([cannot build tests when cross compiling]) +@@ -849,12 +842,19 @@ if test "x$build_tests" != "xno" ; then + ARES_CHECK_USER_NAMESPACE + ARES_CHECK_UTS_NAMESPACE + fi ++ PKG_CHECK_MODULES([GMOCK117], [gmock >= 1.17.0], [ have_gmock_v117=yes ], [ have_gmock_v117=no ]) ++ if test "x$have_gmock_v117" = "xyes" ; then ++ dnl GMock v1.17.0 requires C++17 or higher ++ AX_CXX_COMPILE_STDCXX(17,[noext],[mandatory]) ++ else ++ dnl older version needed v1.14.0 ++ AX_CXX_COMPILE_STDCXX(14,[noext],[mandatory]) ++ fi + fi + fi + if test "x$build_tests" != "xno" ; then + build_tests=yes + +- AX_CXX_COMPILE_STDCXX_14([noext],[mandatory]) + if test "$ac_cv_native_windows" != "yes" ; then + AX_PTHREAD([ CARES_TEST_PTHREADS="yes" ], [ AC_MSG_ERROR([threading required for tests]) ]) + fi +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 13f637a83a..88725b77e5 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -1,6 +1,8 @@ + # Copyright (C) The c-ares project and its contributors + # SPDX-License-Identifier: MIT + ++enable_language(CXX) ++ + # Get rid of: warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc + IF (MSVC) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") +@@ -50,6 +52,7 @@ IF (CMAKE_VERSION VERSION_LESS "3.23.0") + ELSE () + target_link_libraries(arestest PRIVATE caresinternal GTest::gmock) + ENDIF() ++target_compile_features(arestest PRIVATE cxx_std_14) + target_compile_definitions(arestest PRIVATE CARES_NO_DEPRECATED) + + IF (CARES_BUILD_CONTAINER_TESTS) +@@ -75,6 +78,7 @@ set_target_properties(aresfuzzname PROPERTIES COMPILE_PDB_NAME aresfuzzname.pdb) + + add_executable(dnsdump ${DUMPSOURCES}) + target_compile_definitions(dnsdump PRIVATE CARES_NO_DEPRECATED) ++target_compile_features(dnsdump PRIVATE cxx_std_14) + target_link_libraries(dnsdump PRIVATE caresinternal) + # Avoid "fatal error C1041: cannot open program database" due to multiple + # targets trying to use the same PDB. /FS does NOT resolve this issue. diff --git a/c-ares.spec b/c-ares.spec index b1e55fed50b39126c3edc5922a5726385deb24ae..aeabd46818d219a5cc3a794d019b693ccea44103 100644 --- a/c-ares.spec +++ b/c-ares.spec @@ -1,13 +1,19 @@ +%bcond_without tests + Name: c-ares Version: 1.34.5 -Release: 1 +Release: 2 Summary: A C library for asynchronous DNS requests License: MIT URL: https://c-ares.org/ Source0: https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz +Patch6001: backport-googletest-1.17.0-requires-c++17-or-higher.patch -BuildRequires: gcc autoconf automake libtool g++ gmock-devel +BuildRequires: gcc autoconf automake libtool g++ +%if %{with tests} +BuildRequires: gmock-devel +%endif %description This is c-ares, an asynchronous resolver library. It is intended for applications @@ -38,8 +44,10 @@ autoreconf -if %make_install %delete_la +%if %{with tests} %check ./test/arestest --gtest_filter=-*.Live* +%endif %files %license LICENSE.md @@ -56,6 +64,9 @@ autoreconf -if %{_mandir}/man3/* %changelog +* Sun Jul 06 2025 Funda Wang - 1.34.5-2 +- add upstream fix on googletest 1.17.0 + * Wed Apr 09 2025 Funda Wang - 1.34.5-1 - update to 1.34.5