Skip to content

Commit

Permalink
submodule changed: upgrade c-ares and solve related problem (#186)
Browse files Browse the repository at this point in the history
Squashed commit for update c-ares.

This commit squashes multiple commits that update c-ares submodule for proton. The changes were taken from the ClickHouse community and consolidated several pull requests to support the macOS build.
  • Loading branch information
yokofly authored Oct 25, 2023
1 parent fb183e4 commit 8f72d8a
Show file tree
Hide file tree
Showing 23 changed files with 2,165 additions and 65 deletions.
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,6 @@
[submodule "contrib/liburing"]
path = contrib/liburing
url = https://github.com/axboe/liburing.git
[submodule "contrib/c-ares"]
path = contrib/c-ares
url = https://github.com/ClickHouse/c-ares.git
[submodule "contrib/morton-nd"]
path = contrib/morton-nd
url = https://github.com/morton-nd/morton-nd
Expand Down Expand Up @@ -282,3 +279,6 @@
[submodule "contrib/google-benchmark"]
path = contrib/google-benchmark
url = https://github.com/google/benchmark.git
[submodule "contrib/c-ares"]
path = contrib/c-ares
url = https://github.com/c-ares/c-ares.git
2 changes: 1 addition & 1 deletion contrib/c-ares
Submodule c-ares updated 84 files
+4 −4 .cirrus.yml
+12 −0 .gitignore
+6 −6 CMakeLists.txt
+14 −0 INSTALL.md
+29 −21 Makefile.Watcom
+45 −73 RELEASE-NOTES
+4 −13 configure.ac
+1 −1 docs/acountry.1
+15 −9 docs/adig.1
+1 −1 docs/ahost.1
+3 −3 docs/ares_destroy_options.3
+3 −3 docs/ares_dup.3
+5 −5 docs/ares_expand_name.3
+5 −5 docs/ares_expand_string.3
+3 −5 docs/ares_free_data.3
+3 −3 docs/ares_free_hostent.3
+3 −3 docs/ares_free_string.3
+7 −4 docs/ares_get_servers.3
+10 −8 docs/ares_getaddrinfo.3
+9 −8 docs/ares_gethostbyaddr.3
+9 −7 docs/ares_gethostbyname.3
+4 −4 docs/ares_gethostbyname_file.3
+9 −8 docs/ares_getnameinfo.3
+4 −4 docs/ares_getsock.3
+4 −4 docs/ares_inet_ntop.3
+3 −3 docs/ares_inet_pton.3
+5 −7 docs/ares_init_options.3
+5 −5 docs/ares_mkquery.3
+5 −5 docs/ares_parse_a_reply.3
+5 −5 docs/ares_parse_aaaa_reply.3
+4 −5 docs/ares_parse_mx_reply.3
+4 −4 docs/ares_parse_naptr_reply.3
+4 −4 docs/ares_parse_ns_reply.3
+5 −5 docs/ares_parse_ptr_reply.3
+4 −4 docs/ares_parse_soa_reply.3
+4 −4 docs/ares_parse_srv_reply.3
+7 −7 docs/ares_parse_txt_reply.3
+4 −4 docs/ares_parse_uri_reply.3
+1 −1 docs/ares_process.3
+9 −8 docs/ares_query.3
+4 −3 docs/ares_save_options.3
+9 −8 docs/ares_search.3
+8 −7 docs/ares_send.3
+3 −3 docs/ares_set_local_dev.3
+3 −3 docs/ares_set_local_ip4.3
+7 −7 docs/ares_set_local_ip6.3
+7 −4 docs/ares_set_servers.3
+5 −4 docs/ares_set_servers_csv.3
+7 −7 docs/ares_set_socket_callback.3
+7 −9 docs/ares_set_socket_configure_callback.3
+12 −13 docs/ares_set_socket_functions.3
+3 −3 docs/ares_set_sortlist.3
+3 −3 docs/ares_strerror.3
+3 −3 include/ares_version.h
+3 −4 libcares.pc.cmake
+1,009 −0 m4/ax_cxx_compile_stdcxx.m4
+17 −141 m4/ax_cxx_compile_stdcxx_11.m4
+317 −127 m4/ax_pthread.m4
+2 −2 m4/cares-compilers.m4
+85 −0 m4/cares-functions.m4
+2 −1 src/lib/Makefile.inc
+1 −1 src/lib/ares__addrinfo_localhost.c
+3 −0 src/lib/ares_config.h.cmake
+5 −0 src/lib/ares_data.h
+3 −0 src/lib/ares_destroy.c
+3 −3 src/lib/ares_expand_name.c
+44 −12 src/lib/ares_getaddrinfo.c
+28 −83 src/lib/ares_init.c
+8 −11 src/lib/ares_private.h
+55 −16 src/lib/ares_process.c
+1 −35 src/lib/ares_query.c
+279 −0 src/lib/ares_rand.c
+5 −7 src/lib/ares_send.c
+44 −128 src/lib/ares_strsplit.c
+9 −10 src/lib/ares_strsplit.h
+78 −116 src/lib/inet_net_pton.c
+7 −4 src/tools/acountry.c
+22 −17 src/tools/adig.c
+10 −13 src/tools/ahost.c
+2 −1 test/.gitignore
+2 −0 test/ares-test-init.cc
+45 −4 test/ares-test-internal.cc
+29 −0 test/ares-test-live.cc
+1 −1 test/ares-test-misc.cc
120 changes: 90 additions & 30 deletions contrib/c-ares-cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,36 +1,96 @@
# Choose to build static or shared library for c-ares.
if (USE_STATIC_LIBRARIES)
set(CARES_STATIC ON CACHE BOOL "" FORCE)
set(CARES_SHARED OFF CACHE BOOL "" FORCE)
else ()
set(CARES_STATIC OFF CACHE BOOL "" FORCE)
set(CARES_SHARED ON CACHE BOOL "" FORCE)
endif ()
set(LIBRARY_DIR "${proton_SOURCE_DIR}/contrib/c-ares")

# Generated from contrib/c-ares/src/lib/Makefile.inc
SET(SRCS
"${LIBRARY_DIR}/src/lib/ares__addrinfo2hostent.c"
"${LIBRARY_DIR}/src/lib/ares__addrinfo_localhost.c"
"${LIBRARY_DIR}/src/lib/ares__close_sockets.c"
"${LIBRARY_DIR}/src/lib/ares__get_hostent.c"
"${LIBRARY_DIR}/src/lib/ares__parse_into_addrinfo.c"
"${LIBRARY_DIR}/src/lib/ares__readaddrinfo.c"
"${LIBRARY_DIR}/src/lib/ares__sortaddrinfo.c"
"${LIBRARY_DIR}/src/lib/ares__read_line.c"
"${LIBRARY_DIR}/src/lib/ares__timeval.c"
"${LIBRARY_DIR}/src/lib/ares_android.c"
"${LIBRARY_DIR}/src/lib/ares_cancel.c"
"${LIBRARY_DIR}/src/lib/ares_data.c"
"${LIBRARY_DIR}/src/lib/ares_destroy.c"
"${LIBRARY_DIR}/src/lib/ares_expand_name.c"
"${LIBRARY_DIR}/src/lib/ares_expand_string.c"
"${LIBRARY_DIR}/src/lib/ares_fds.c"
"${LIBRARY_DIR}/src/lib/ares_free_hostent.c"
"${LIBRARY_DIR}/src/lib/ares_free_string.c"
"${LIBRARY_DIR}/src/lib/ares_freeaddrinfo.c"
"${LIBRARY_DIR}/src/lib/ares_getaddrinfo.c"
"${LIBRARY_DIR}/src/lib/ares_getenv.c"
"${LIBRARY_DIR}/src/lib/ares_gethostbyaddr.c"
"${LIBRARY_DIR}/src/lib/ares_gethostbyname.c"
"${LIBRARY_DIR}/src/lib/ares_getnameinfo.c"
"${LIBRARY_DIR}/src/lib/ares_getsock.c"
"${LIBRARY_DIR}/src/lib/ares_init.c"
"${LIBRARY_DIR}/src/lib/ares_library_init.c"
"${LIBRARY_DIR}/src/lib/ares_llist.c"
"${LIBRARY_DIR}/src/lib/ares_mkquery.c"
"${LIBRARY_DIR}/src/lib/ares_create_query.c"
"${LIBRARY_DIR}/src/lib/ares_nowarn.c"
"${LIBRARY_DIR}/src/lib/ares_options.c"
"${LIBRARY_DIR}/src/lib/ares_parse_a_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_aaaa_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_caa_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_mx_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_naptr_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_ns_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_ptr_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_soa_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_srv_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_txt_reply.c"
"${LIBRARY_DIR}/src/lib/ares_parse_uri_reply.c"
"${LIBRARY_DIR}/src/lib/ares_platform.c"
"${LIBRARY_DIR}/src/lib/ares_process.c"
"${LIBRARY_DIR}/src/lib/ares_query.c"
"${LIBRARY_DIR}/src/lib/ares_rand.c"
"${LIBRARY_DIR}/src/lib/ares_search.c"
"${LIBRARY_DIR}/src/lib/ares_send.c"
"${LIBRARY_DIR}/src/lib/ares_strcasecmp.c"
"${LIBRARY_DIR}/src/lib/ares_strdup.c"
"${LIBRARY_DIR}/src/lib/ares_strerror.c"
"${LIBRARY_DIR}/src/lib/ares_strsplit.c"
"${LIBRARY_DIR}/src/lib/ares_timeout.c"
"${LIBRARY_DIR}/src/lib/ares_version.c"
"${LIBRARY_DIR}/src/lib/ares_writev.c"
"${LIBRARY_DIR}/src/lib/bitncmp.c"
"${LIBRARY_DIR}/src/lib/inet_net_pton.c"
"${LIBRARY_DIR}/src/lib/inet_ntop.c"
"${LIBRARY_DIR}/src/lib/windows_port.c"
)

# Disable looking for libnsl on a platforms that has gethostbyname in glibc
#
# c-ares searching for gethostbyname in the libnsl library, however in the
# version that shipped with gRPC it doing it wrong [1], since it uses
# CHECK_LIBRARY_EXISTS(), which will return TRUE even if the function exists in
# another dependent library. The upstream already contains correct macro [2],
# but it is not included in gRPC (even upstream gRPC, not the one that is
# shipped with clickhousee).
#
# [1]: https://github.com/c-ares/c-ares/blob/e982924acee7f7313b4baa4ee5ec000c5e373c30/CMakeLists.txt#L125
# [2]: https://github.com/c-ares/c-ares/blob/44fbc813685a1fa8aa3f27fcd7544faf612d376a/CMakeLists.txt#L146
#
# And because if you by some reason have libnsl [3] installed, clickhouse will
# reject to start w/o it. While this is completelly different library.
#
# [3]: https://packages.debian.org/bullseye/libnsl2
if (NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS")
set(HAVE_LIBNSL OFF CACHE BOOL "" FORCE)
if (USE_STATIC_LIBRARIES)
add_library(_c-ares STATIC ${SRCS})
target_compile_definitions(_c-ares PUBLIC CARES_STATICLIB)
else()
add_library(_c-ares SHARED ${SRCS})
target_compile_definitions(_c-ares PUBLIC CARES_BUILDING_LIBRARY)
endif()

# Force use of c-ares inet_net_pton instead of libresolv one
set(HAVE_INET_NET_PTON OFF CACHE BOOL "" FORCE)
target_compile_definitions(_c-ares PRIVATE HAVE_CONFIG_H=1)

add_subdirectory("../c-ares/" "../c-ares/")
target_include_directories(_c-ares SYSTEM PUBLIC
"${LIBRARY_DIR}/src/lib"
"${LIBRARY_DIR}/include"
)

add_library(ch_contrib::c-ares ALIAS c-ares)
# Platform-specific include directories. The original build system does a lot of checks to eventually generate two header files with defines:
# ares_build.h and ares_config.h. To update, run the original CMake build in c-ares for each platform and copy the headers into the
# platform-specific folder.
# For the platform-specific compile definitions, see c-ares top-level CMakeLists.txt.
if (OS_LINUX)
target_include_directories(_c-ares SYSTEM PUBLIC "${proton_SOURCE_DIR}/contrib/c-ares-cmake/linux")
target_compile_definitions(_c-ares PRIVATE -D_GNU_SOURCE -D_POSIX_C_SOURCE=199309L -D_XOPEN_SOURCE=600)
elseif (OS_DARWIN)
target_include_directories(_c-ares SYSTEM PUBLIC "${proton_SOURCE_DIR}/contrib/c-ares-cmake/darwin")
target_compile_definitions(_c-ares PRIVATE -D_DARWIN_C_SOURCE)
elseif (OS_FREEBSD)
target_include_directories(_c-ares SYSTEM PUBLIC "${proton_SOURCE_DIR}/contrib/c-ares-cmake/freebsd")
endif()

add_library(ch_contrib::c-ares ALIAS _c-ares)
43 changes: 43 additions & 0 deletions contrib/c-ares-cmake/darwin/ares_build.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#ifndef __CARES_BUILD_H
#define __CARES_BUILD_H

#define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
#define CARES_TYPEOF_ARES_SSIZE_T ssize_t

/* Prefix names with CARES_ to make sure they don't conflict with other config.h
* files. We need to include some dependent headers that may be system specific
* for C-Ares */
#define CARES_HAVE_SYS_TYPES_H
#define CARES_HAVE_SYS_SOCKET_H
/* #undef CARES_HAVE_WINDOWS_H */
/* #undef CARES_HAVE_WS2TCPIP_H */
/* #undef CARES_HAVE_WINSOCK2_H */
/* #undef CARES_HAVE_WINDOWS_H */
#define CARES_HAVE_ARPA_NAMESER_H
#define CARES_HAVE_ARPA_NAMESER_COMPAT_H

#ifdef CARES_HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif

#ifdef CARES_HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif

#ifdef CARES_HAVE_WINSOCK2_H
# include <winsock2.h>
#endif

#ifdef CARES_HAVE_WS2TCPIP_H
# include <ws2tcpip.h>
#endif

#ifdef CARES_HAVE_WINDOWS_H
# include <windows.h>
#endif


typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t;

#endif /* __CARES_BUILD_H */
Loading

0 comments on commit 8f72d8a

Please sign in to comment.