1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

dns/c-ares: Update to 1.19.0 and switch to CMake

- Use GitHub as primary mirror for better connectivity and use
  main site as fallback
- Switch to CMake to provide .cmake files, improve compilation
  performance and adhere framework options
  Additionally also aligns port with other distributions such as
  Alpine, Arch, Fedora, MacPorts and openSUSE
- Drop CONFIG_INFO patch, this is no longer needed by UnrealIRCd
- Enable "make test", only build test suite when requested, disable
  online tests and use Googletest from tree instead of bundled version

Changelog: https://c-ares.org/changelog.html#1_19_0

PR:		268538
Reviewed by:	zi (maintainer)
This commit is contained in:
Daniel Engberg 2023-01-29 19:47:33 +01:00
parent ab65e95cc8
commit 4357da1d4e
5 changed files with 59 additions and 101 deletions

View File

@ -1,10 +1,8 @@
PORTNAME= c-ares
PORTVERSION= 1.18.1
PORTREVISION= 1
DISTVERSION= 1.19.0
CATEGORIES= dns
MASTER_SITES= https://c-ares.org/download/ \
https://c-ares.haxx.se/download/ \
ZI
MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/cares-${DISTVERSION:S/./_/g}/ \
https://c-ares.org/download/
MAINTAINER= zi@FreeBSD.org
COMMENT= Asynchronous DNS resolver library
@ -13,29 +11,22 @@ WWW= https://c-ares.haxx.se/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.md
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --disable-werror
INSTALL_TARGET= install-strip
USES= libtool pathfix compiler:c++11-lang gmake
USES= cmake compiler:c++11-lang pathfix
USE_LDCONFIG= yes
PROGRAMS= acountry adig ahost
CONFLICTS= py*-ripe.atlas.tools
OPTIONS_DEFINE= CONFIG_INFO DEBUG HIDE_SYMBOLS OPTIMIZED_CFLAGS
OPTIONS_DEFAULT= CONFIG_INFO HIDE_SYMBOLS
CMAKE_ARGS= -DCMAKE_INSTALL_MANDIR:PATH=${MANPREFIX}/man
CONFIG_INFO_DESC= Add the ares_config_info patch
HIDE_SYMBOLS_DESC= Hide internal library symbols
OPTIMIZED_CFLAGS_DESC= Build with compiler optimizations
OPTIONS_DEFINE= TEST
CONFLICTS= py*-ripe.atlas.tools
TEST_USES= localbase:ldflags
TEST_BUILD_DEPENDS= googletest>0:devel/googletest
TEST_TEST_TARGET= test
TEST_CMAKE_BOOL= CARES_BUILD_TESTS
CONFIG_INFO_EXTRA_PATCHES= ${FILESDIR}/ares-config-info.patch
DEBUG_CONFIGURE_ENABLE= debug
HIDE_SYMBOLS_CONFIGURE_ENABLE= symbol-hiding
OPTIMIZED_CFLAGS_CONFIGURE_ENABLE= optimize
post-install:
${INSTALL_PROGRAM} ${PROGRAMS:S@^@${WRKSRC}/src/tools/.libs/@} ${STAGEDIR}${PREFIX}/bin/
post-patch:
@${REINPLACE_CMD} -e 's|ares-test-live.cc||g' \
${PATCH_WRKSRC}/test/Makefile.inc
.include <bsd.port.mk>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1649437591
SHA256 (c-ares-1.18.1.tar.gz) = 1a7d52a8a84a9fbffb1be9133c0f6e17217d91ea5a6fa61f6b4729cda78ebbcf
SIZE (c-ares-1.18.1.tar.gz) = 1560165
TIMESTAMP = 1674949471
SHA256 (c-ares-1.19.0.tar.gz) = bfceba37e23fd531293829002cac0401ef49a6dc55923f7f92236585b7ad1dd3
SIZE (c-ares-1.19.0.tar.gz) = 1572210

View File

@ -1,73 +0,0 @@
Description: Add the ares_get_config() routine used by Unreal IRCd.
Originally taken from the Unreal IRCd distribution, later modified
by me to properly support IPv6 nameserver addresses since c-ares-1.7.1.
Origin: the Unreal IRCd distribution
Author: Peter Pentchev <roam@FreeBSD.org>
Forwarded: no
Last-Update: 2010-12-19
--- include/ares.h.orig
+++ include/ares.h
@@ -260,6 +260,14 @@
int nsort;
};
+/** Public available config (readonly) interface for ares_get_config(). */
+struct ares_config_info {
+ int timeout;
+ int tries;
+ int numservers;
+ char **servers;
+};
+
struct hostent;
struct timeval;
struct sockaddr;
@@ -530,6 +538,8 @@
CARES_EXTERN int ares_get_servers(ares_channel channel,
struct ares_addr_node **servers);
+CARES_EXTERN int ares_get_config(struct ares_config_info *d, ares_channel c);
+
#ifdef __cplusplus
}
#endif
--- src/lib/ares_init.c.orig 2013-02-17 11:44:02.000000000 -0500
+++ src/lib/ares_init.c 2013-05-15 13:43:31.000000000 -0400
@@ -1875,6 +1875,36 @@
}
#endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */
+int ares_get_config(struct ares_config_info *d, ares_channel c)
+{
+ int i;
+ const char *p;
+ char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
+
+ memset(d, 0, sizeof(struct ares_config_info));
+
+ d->timeout = c->timeout;
+ d->tries = c->tries;
+ d->numservers = c->nservers;
+ d->servers = calloc(sizeof(char *), c->nservers);
+ for (i = 0; i < c->nservers; i++)
+ {
+ if (c->servers[i].addr.family == AF_INET)
+ p = ares_inet_ntop(c->servers[i].addr.family,
+ (const char *)&c->servers[i].addr.addrV4,
+ tmp, sizeof(tmp));
+ else if (c->servers[i].addr.family == AF_INET6)
+ p = ares_inet_ntop(c->servers[i].addr.family,
+ (const char *)&c->servers[i].addr.addrV6,
+ tmp, sizeof(tmp));
+ else
+ p = NULL;
+ d->servers[i] = p ? strdup(p) : NULL;
+ }
+
+ return ARES_SUCCESS;
+}
+
/* initialize an rc4 key. If possible a cryptographically secure random key
is generated using a suitable function (for example win32's RtlGenRandom as
described in

View File

@ -0,0 +1,34 @@
--- test/CMakeLists.txt.orig 2022-11-08 12:40:00 UTC
+++ test/CMakeLists.txt
@@ -25,14 +25,14 @@ ELSE ()
ENDIF ()
# Google Test and Mock
-set(GMOCK_DIR gmock-1.11.0)
-add_library(gmock STATIC
- ${GMOCK_DIR}/gmock-gtest-all.cc
- ${GMOCK_DIR}/gmock/gmock.h
- ${GMOCK_DIR}/gtest/gtest.h
-)
-target_include_directories(gmock PUBLIC SYSTEM ${GMOCK_DIR})
-target_link_libraries(gmock PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+# set(GMOCK_DIR gmock-1.11.0)
+# add_library(gmock STATIC
+# ${GMOCK_DIR}/gmock-gtest-all.cc
+# ${GMOCK_DIR}/gmock/gmock.h
+# ${GMOCK_DIR}/gtest/gtest.h
+# )
+# target_include_directories(gmock PUBLIC SYSTEM ${GMOCK_DIR})
+# target_link_libraries(gmock PRIVATE ${CMAKE_THREAD_LIBS_INIT})
# test targets
@@ -43,7 +43,7 @@ configure_file(${CARES_TOPLEVEL_DIR}/src/lib/ares_conf
add_executable(arestest ${TESTSOURCES} ${TESTHEADERS})
target_include_directories(arestest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
-target_link_libraries(arestest PRIVATE caresinternal gmock)
+target_link_libraries(arestest PRIVATE caresinternal gtest gmock)
IF (CARES_BUILD_CONTAINER_TESTS)
target_compile_definitions(arestest PRIVATE HAVE_USER_NAMESPACE HAVE_UTS_NAMESPACE)

View File

@ -7,11 +7,17 @@ include/ares_dns.h
include/ares_nameser.h
include/ares_rules.h
include/ares_version.h
lib/libcares.a
lib/cmake/c-ares/c-ares-config-version.cmake
lib/cmake/c-ares/c-ares-config.cmake
lib/cmake/c-ares/c-ares-targets-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/c-ares/c-ares-targets.cmake
lib/libcares.so
lib/libcares.so.2
lib/libcares.so.2.5.1
lib/libcares.so.2.6.0
libdata/pkgconfig/libcares.pc
man/man1/acountry.1.gz
man/man1/adig.1.gz
man/man1/ahost.1.gz
man/man3/ares_cancel.3.gz
man/man3/ares_create_query.3.gz
man/man3/ares_destroy.3.gz