Skip to content

Commit 1134cb3

Browse files
authored
Merge branch 'main' into helm-remove-dangling-config
2 parents 3c6240e + 8e6c883 commit 1134cb3

File tree

11 files changed

+170
-106
lines changed

11 files changed

+170
-106
lines changed

components/core/cmake/Options/options.cmake

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ option(
9595
ON
9696
)
9797

98+
option(
99+
CLP_BUILD_CLP_S_ENABLE_CURL
100+
"Include libcurl support for clp-s."
101+
ON
102+
)
103+
98104
# Validates that the `CLP_BUILD_` options required by `TARGET_CLP_BUILD_OPTION` are `ON`.
99105
#
100106
# @param {string} TARGET_CLP_BUILD_OPTION
@@ -140,7 +146,6 @@ function(set_clp_binaries_dependencies)
140146
set_clp_need_flags(
141147
CLP_NEED_ABSL
142148
CLP_NEED_BOOST
143-
CLP_NEED_CURL
144149
CLP_NEED_DATE
145150
CLP_NEED_FMT
146151
CLP_NEED_LIBARCHIVE
@@ -149,7 +154,6 @@ function(set_clp_binaries_dependencies)
149154
CLP_NEED_MONGOCXX
150155
CLP_NEED_MSGPACKCXX
151156
CLP_NEED_NLOHMANN_JSON
152-
CLP_NEED_OPENSSL
153157
CLP_NEED_SIMDJSON
154158
CLP_NEED_SPDLOG
155159
CLP_NEED_SQLITE
@@ -163,6 +167,7 @@ function(validate_clp_tests_dependencies)
163167
validate_clp_dependencies_for_target(CLP_BUILD_TESTING
164168
CLP_BUILD_CLP_REGEX_UTILS
165169
CLP_BUILD_CLP_STRING_UTILS
170+
CLP_BUILD_CLP_S_ENABLE_CURL
166171
CLP_BUILD_CLP_S_SEARCH_AST
167172
CLP_BUILD_CLP_S_SEARCH_KQL
168173
CLP_BUILD_CLP_S_SEARCH_SQL
@@ -184,7 +189,6 @@ function(set_clp_tests_dependencies)
184189
CLP_NEED_MARIADB
185190
CLP_NEED_MONGOCXX
186191
CLP_NEED_NLOHMANN_JSON
187-
CLP_NEED_OPENSSL
188192
CLP_NEED_SIMDJSON
189193
CLP_NEED_SPDLOG
190194
CLP_NEED_SQLITE
@@ -217,7 +221,6 @@ function(set_clp_s_archivereader_dependencies)
217221
set_clp_need_flags(
218222
CLP_NEED_ABSL
219223
CLP_NEED_BOOST
220-
CLP_NEED_CURL
221224
CLP_NEED_FMT
222225
CLP_NEED_MSGPACKCXX
223226
CLP_NEED_NLOHMANN_JSON
@@ -239,7 +242,6 @@ function(set_clp_s_archivewriter_dependencies)
239242
set_clp_need_flags(
240243
CLP_NEED_ABSL
241244
CLP_NEED_BOOST
242-
CLP_NEED_CURL
243245
CLP_NEED_FMT
244246
CLP_NEED_MSGPACKCXX
245247
CLP_NEED_NLOHMANN_JSON
@@ -258,12 +260,10 @@ endfunction()
258260
function(set_clp_s_clp_dependencies_dependencies)
259261
set_clp_need_flags(
260262
CLP_NEED_BOOST
261-
CLP_NEED_CURL
262263
CLP_NEED_FMT
263264
CLP_NEED_LOG_SURGEON
264265
CLP_NEED_MSGPACKCXX
265266
CLP_NEED_NLOHMANN_JSON
266-
CLP_NEED_OPENSSL
267267
CLP_NEED_SPDLOG
268268
CLP_NEED_YSTDLIB
269269
CLP_NEED_ZSTD
@@ -392,6 +392,13 @@ function(set_clp_s_timestamppattern_dependencies)
392392
)
393393
endfunction()
394394

395+
function(set_clp_s_enable_curl_dependencies)
396+
set_clp_need_flags(
397+
CLP_NEED_CURL
398+
CLP_NEED_OPENSSL
399+
)
400+
endfunction()
401+
395402
# Validates that for each target whose `CLP_BUILD_` option is `ON`, the `CLP_BUILD_` options for
396403
# the target's dependencies are also `ON`; Sets the required `CLP_NEED_` flags for any target that
397404
# will be built.
@@ -471,6 +478,10 @@ function(validate_and_setup_all_clp_dependency_flags)
471478
validate_clp_s_timestamppattern_dependencies()
472479
set_clp_s_timestamppattern_dependencies()
473480
endif()
481+
482+
if (CLP_BUILD_CLP_S_ENABLE_CURL)
483+
set_clp_s_enable_curl_dependencies()
484+
endif()
474485
endfunction()
475486

476487
function (convert_clp_dependency_properties_to_variables)

components/core/src/clp/NetworkReader.hpp

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,25 @@ class NetworkReader : public ReaderInterface {
6666
Finished
6767
};
6868

69+
/**
70+
* CURL error details set by the underlying CURL handler.
71+
*/
72+
class CurlErrorInfo {
73+
public:
74+
// Constructor
75+
CurlErrorInfo(CURLcode code, std::string_view message) : m_code{code}, m_message{message} {}
76+
77+
// Methods
78+
[[nodiscard]] auto code() const -> CURLcode { return m_code; }
79+
80+
[[nodiscard]] auto message() const -> std::string_view { return m_message; }
81+
82+
private:
83+
// Members
84+
CURLcode m_code;
85+
std::string_view m_message;
86+
};
87+
6988
// Constants
7089
static constexpr size_t cDefaultBufferPoolSize{8};
7190
static constexpr size_t cDefaultBufferSize{4096};
@@ -224,16 +243,15 @@ class NetworkReader : public ReaderInterface {
224243
}
225244

226245
/**
227-
* @return The error message set by the underlying CURL handler.
228-
* @return std::nullopt if the download is still in-progress or no error has occured.
246+
* @return CURL error info if the download has completed with a CURL error.
247+
* @return std::nullopt if the download is still in-progress or no error has occurred.
229248
*/
230-
[[nodiscard]] auto get_curl_error_msg() const -> std::optional<std::string_view> {
231-
if (auto const ret_code{get_curl_ret_code()};
232-
false == ret_code.has_value() || CURLE_OK == ret_code.value())
233-
{
249+
[[nodiscard]] auto get_curl_error_info() const -> std::optional<CurlErrorInfo> {
250+
auto const ret_code = get_curl_ret_code();
251+
if (false == ret_code.has_value() || CURLcode::CURLE_OK == ret_code.value()) {
234252
return std::nullopt;
235253
}
236-
return std::string_view{m_curl_error_msg_buf->data()};
254+
return CurlErrorInfo{ret_code.value(), std::string_view{m_curl_error_msg_buf->data()}};
237255
}
238256

239257
private:

components/core/src/clp_s/CMakeLists.txt

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,12 @@ add_subdirectory(timestamp_parser)
55

66
set(
77
CLP_S_CLP_SOURCES
8-
../clp/aws/AwsAuthenticationSigner.cpp
9-
../clp/aws/AwsAuthenticationSigner.hpp
108
../clp/BoundedReader.cpp
119
../clp/BoundedReader.hpp
1210
../clp/BufferedReader.cpp
1311
../clp/BufferedReader.hpp
1412
../clp/BufferReader.cpp
1513
../clp/BufferReader.hpp
16-
../clp/CurlDownloadHandler.cpp
17-
../clp/CurlDownloadHandler.hpp
18-
../clp/CurlEasyHandle.hpp
19-
../clp/CurlGlobalInstance.cpp
20-
../clp/CurlGlobalInstance.hpp
21-
../clp/CurlOperationFailed.hpp
22-
../clp/CurlStringList.hpp
2314
../clp/cli_utils.cpp
2415
../clp/cli_utils.hpp
2516
../clp/Defs.h
@@ -72,8 +63,6 @@ set(
7263
../clp/FileReader.hpp
7364
../clp/GrepCore.cpp
7465
../clp/GrepCore.hpp
75-
../clp/hash_utils.cpp
76-
../clp/hash_utils.hpp
7766
../clp/SchemaSearcher.cpp
7867
../clp/SchemaSearcher.hpp
7968
../clp/ir/constants.hpp
@@ -86,8 +75,6 @@ set(
8675
../clp/LogSurgeonReader.hpp
8776
../clp/LogTypeDictionaryEntryReq.hpp
8877
../clp/LogTypeDictionaryReaderReq.hpp
89-
../clp/NetworkReader.cpp
90-
../clp/NetworkReader.hpp
9178
../clp/networking/socket_utils.cpp
9279
../clp/networking/socket_utils.hpp
9380
../clp/Query.cpp
@@ -122,6 +109,26 @@ set(
122109
../clp/WriterInterface.hpp
123110
)
124111

112+
set(
113+
CLP_S_CLP_CURL_SOURCES
114+
../clp/aws/AwsAuthenticationSigner.cpp
115+
../clp/aws/AwsAuthenticationSigner.hpp
116+
../clp/hash_utils.cpp
117+
../clp/hash_utils.hpp
118+
../clp/CurlDownloadHandler.cpp
119+
../clp/CurlDownloadHandler.hpp
120+
../clp/CurlEasyHandle.hpp
121+
../clp/CurlGlobalInstance.cpp
122+
../clp/CurlGlobalInstance.hpp
123+
../clp/CurlOperationFailed.hpp
124+
../clp/CurlStringList.hpp
125+
../clp/NetworkReader.cpp
126+
../clp/NetworkReader.hpp
127+
)
128+
if(CLP_BUILD_CLP_S_ENABLE_CURL)
129+
list(APPEND CLP_S_CLP_SOURCES ${CLP_S_CLP_CURL_SOURCES})
130+
endif()
131+
125132
# This library is intended as a temporary stand-in until clp has been packaged into libraries.
126133
if(CLP_BUILD_CLP_S_CLP_DEPENDENCIES)
127134
add_library(
@@ -140,14 +147,21 @@ if(CLP_BUILD_CLP_S_CLP_DEPENDENCIES)
140147
zstd::libzstd_static
141148
PRIVATE
142149
Boost::regex
143-
${CURL_LIBRARIES}
144150
fmt::fmt
145151
msgpack-cxx
146152
nlohmann_json::nlohmann_json
147-
OpenSSL::Crypto
148153
spdlog::spdlog
149154
ystdlib::error_handling
150155
)
156+
if(CLP_BUILD_CLP_S_ENABLE_CURL)
157+
target_link_libraries(
158+
clp_s_clp_dependencies
159+
PUBLIC
160+
${CURL_LIBRARIES}
161+
PRIVATE
162+
OpenSSL::Crypto
163+
)
164+
endif()
151165
endif()
152166

153167
set(
@@ -218,6 +232,11 @@ if(CLP_BUILD_CLP_S_IO)
218232
${CLP_S_IO_SOURCES}
219233
)
220234
add_library(clp_s::io ALIAS clp_s_io)
235+
target_compile_definitions(
236+
clp_s_io
237+
PRIVATE
238+
CLP_BUILD_CLP_S_ENABLE_CURL=$<BOOL:${CLP_BUILD_CLP_S_ENABLE_CURL}>
239+
)
221240
target_compile_features(clp_s_io PRIVATE cxx_std_20)
222241
target_include_directories(clp_s_io PUBLIC ../)
223242
target_link_libraries(
@@ -280,6 +299,11 @@ if(CLP_BUILD_CLP_S_ARCHIVEWRITER)
280299
${CLP_S_ARCHIVE_WRITER_SOURCES}
281300
)
282301
add_library(clp_s::archive_writer ALIAS clp_s_archive_writer)
302+
target_compile_definitions(
303+
clp_s_archive_writer
304+
PRIVATE
305+
CLP_BUILD_CLP_S_ENABLE_CURL=$<BOOL:${CLP_BUILD_CLP_S_ENABLE_CURL}>
306+
)
283307
target_compile_features(clp_s_archive_writer PRIVATE cxx_std_20)
284308
target_include_directories(clp_s_archive_writer PUBLIC ../)
285309
target_link_libraries(
@@ -296,7 +320,6 @@ if(CLP_BUILD_CLP_S_ARCHIVEWRITER)
296320
ystdlib::error_handling
297321
PRIVATE
298322
Boost::url
299-
${CURL_LIBRARIES}
300323
fmt::fmt
301324
spdlog::spdlog
302325
)
@@ -345,6 +368,11 @@ if(CLP_BUILD_CLP_S_ARCHIVEREADER)
345368
${CLP_S_ARCHIVE_READER_SOURCES}
346369
)
347370
add_library(clp_s::archive_reader ALIAS clp_s_archive_reader)
371+
target_compile_definitions(
372+
clp_s_archive_reader
373+
PRIVATE
374+
CLP_BUILD_CLP_S_ENABLE_CURL=$<BOOL:${CLP_BUILD_CLP_S_ENABLE_CURL}>
375+
)
348376
target_compile_features(clp_s_archive_reader PRIVATE cxx_std_20)
349377
target_include_directories(clp_s_archive_reader PUBLIC ../)
350378
target_link_libraries(
@@ -361,7 +389,6 @@ if(CLP_BUILD_CLP_S_ARCHIVEREADER)
361389
PRIVATE
362390
Boost::url
363391
clp_s::clp_dependencies
364-
${CURL_LIBRARIES}
365392
fmt::fmt
366393
spdlog::spdlog
367394
)
@@ -438,6 +465,11 @@ if(CLP_BUILD_EXECUTABLES)
438465
clp-s.cpp
439466
${CLP_S_EXE_SOURCES}
440467
)
468+
target_compile_definitions(
469+
clp-s
470+
PRIVATE
471+
CLP_BUILD_CLP_S_ENABLE_CURL=$<BOOL:${CLP_BUILD_CLP_S_ENABLE_CURL}>
472+
)
441473
target_compile_features(clp-s PRIVATE cxx_std_20)
442474
target_include_directories(clp-s PRIVATE ../)
443475
target_link_libraries(

components/core/src/clp_s/InputConfig.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@
1414
#include <simdjson.h>
1515
#include <spdlog/spdlog.h>
1616

17-
#include "../clp/aws/AwsAuthenticationSigner.hpp"
1817
#include "../clp/BufferedReader.hpp"
1918
#include "../clp/ffi/ir_stream/protocol_constants.hpp"
2019
#include "../clp/FileReader.hpp"
21-
#include "../clp/NetworkReader.hpp"
2220
#include "../clp/ReaderInterface.hpp"
2321
#include "../clp/spdlog_with_specializations.hpp"
2422
#include "../clp/streaming_compression/Decompressor.hpp"
2523
#include "../clp/streaming_compression/zstd/Decompressor.hpp"
2624
#include "../clp/utf8_utils.hpp"
2725
#include "Utils.hpp"
2826

27+
#if CLP_BUILD_CLP_S_ENABLE_CURL
28+
#include "../clp/aws/AwsAuthenticationSigner.hpp"
29+
#include "../clp/NetworkReader.hpp"
30+
#endif
31+
2932
namespace clp_s {
3033
auto get_source_for_path(std::string_view const path) -> InputSource {
3134
try {
@@ -186,6 +189,7 @@ auto try_create_file_reader(std::string_view const file_path)
186189
}
187190
}
188191

192+
#if CLP_BUILD_CLP_S_ENABLE_CURL
189193
auto try_sign_url(std::string& url) -> bool {
190194
auto const aws_access_key = std::getenv(cAwsAccessKeyIdEnvVar);
191195
auto const aws_secret_access_key = std::getenv(cAwsSecretAccessKeyEnvVar);
@@ -244,6 +248,15 @@ auto try_create_network_reader(std::string_view const url, NetworkAuthOption con
244248
return nullptr;
245249
}
246250
}
251+
#else
252+
auto try_create_network_reader(
253+
[[maybe_unused]] std::string_view const url,
254+
[[maybe_unused]] NetworkAuthOption const& auth
255+
) -> std::shared_ptr<clp::ReaderInterface> {
256+
SPDLOG_ERROR("This build of clp-s does not support network inputs (libcurl excluded).");
257+
return nullptr;
258+
}
259+
#endif
247260

248261
auto could_be_zstd(char const* peek_buf, size_t peek_size) -> bool {
249262
constexpr std::array<char, 4> cZstdMagicNumber = {'\x28', '\xB5', '\x2F', '\xFD'};

0 commit comments

Comments
 (0)