It looks like in the last few days upstream has made commits that allow syslog-ng to build w/ libmongoc-dev >= 2.0. I have identified the commits and attached them as patches to this email. Note that two of the patches required slight tweaking to apply to the Debian package.
Regards, -Roberto -- Roberto C. Sánchez
>From 578023072f5be1e1ac464cd69e7249a3fe810e3b Mon Sep 17 00:00:00 2001 From: Hofi <[email protected]> Date: Wed, 27 Aug 2025 14:02:00 +0200 Subject: [PATCH 1/2] mongo-c: add v1 v2 detection to autotools Signed-off-by: Hofi <[email protected]> --- configure.ac | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) --- a/configure.ac +++ b/configure.ac @@ -49,7 +49,8 @@ IVYKIS_UPDATED_VERSION="0.39" JSON_C_MIN_VERSION="0.13" PCRE2_MIN_VERSION="10.0" -LMC_MIN_VERSION="1.0.0" +LMC_1_MIN_VERSION="1.0.0" +LMC_MIN_VERSION="2.0.0" LRMQ_MIN_VERSION="0.0.1" LRC_MIN_VERSION="1.6.0" LIBBPF_MIN_VERSION="1.0.1" @@ -274,7 +275,7 @@ ,,enable_gcov="no") AC_ARG_ENABLE(mongodb, - [ --enable-mongodb Enable mongodb destination (default: auto)] + [ --enable-mongodb Enable support for mongodb destination (default: auto)] ,,enable_mongodb="auto") AC_ARG_WITH(jsonc, @@ -423,6 +424,7 @@ if test "x$enable_all_modules" != "xauto"; then state="$enable_all_modules" + # TODO: atomate collection of modules somehow MODULES="spoof_source sun_streams sql pacct mongodb json amqp stomp \ redis systemd geoip2 riemann ipv6 smtp native python python_modules java java_modules \ http afsnmp kafka mqtt grpc" @@ -1383,20 +1385,36 @@ dnl mongo-c-driver headers/libraries dnl *************************************************************************** -PKG_CHECK_MODULES(LIBMONGO, libmongoc-1.0 >= $LMC_MIN_VERSION, with_mongoc="yes", with_mongoc="no") +# Try libmongoc-1.0 first +PKG_CHECK_MODULES(LIBMONGO, + libmongoc-1.0 >= $LMC_1_MIN_VERSION, + [with_mongoc=yes; mongo_version_str="v1"; MONGOC_HEADER="<mongoc.h>"], + [ # Try mongoc2 (libmongoc-2.0) if 1.0 not found + PKG_CHECK_MODULES(LIBMONGO, + mongoc2 >= $LMC_MIN_VERSION, + [ + AC_DEFINE([HAVE_MONGOC_V2], [1], [Define if using MongoDB C Driver v2.x]) + with_mongoc=yes + mongo_version_str="v2" + MONGOC_HEADER="<mongoc/mongoc.h>" + ], + [with_mongoc=no] + ) + ] +) if test "x$with_mongoc" = "xno" && test "x$enable_mongodb" = "xyes"; then - AC_MSG_ERROR([Could not find mongo-c-driver, and MongoDB support was explicitly enabled.]) + AC_MSG_ERROR([Could not find mongo-c-driver, and MongoDB support was explicitly enabled.]) fi if test "x$with_mongoc" = "xyes"; then -CPPFLAGS_SAVE="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $LIBMONGO_CFLAGS" + CPPFLAGS_SAVE="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LIBMONGO_CFLAGS" -AC_CHECK_DECLS([mongoc_uri_set_option_as_int32], [], [], [[#include <mongoc.h>]]) -AC_CHECK_DECLS([MONGOC_URI_SERVERSELECTIONTIMEOUTMS], [], [], [[#include <mongoc.h>]]) + AC_CHECK_DECLS([mongoc_uri_set_option_as_int32], [], [], [[#include $MONGOC_HEADER]]) + AC_CHECK_DECLS([MONGOC_URI_SERVERSELECTIONTIMEOUTMS], [], [], [[#include $MONGOC_HEADER]]) -CPPFLAGS="$CPPFLAGS_SAVE" + CPPFLAGS="$CPPFLAGS_SAVE" fi dnl *************************************************************************** @@ -2432,7 +2450,7 @@ echo " OpenBSD syslog (module) : ${enable_openbsd_system_source:=no}" echo " SQL support (module) : ${enable_sql:=no}" echo " PACCT module (EXPERIMENTAL) : ${enable_pacct:=no}" -echo " MongoDB destination (module): ${enable_mongodb:=no}" +echo " MongoDB destination (module): ${enable_mongodb:=no} (${mongo_version_str})" echo " JSON support (module) : ${enable_json:=no}" echo " SMTP support (module) : ${enable_smtp:=no}" echo " HTTP support (module) : ${enable_http:=no}"
>From 7c61ccbbb3dbf3671a7c00c6c68ba059ca103441 Mon Sep 17 00:00:00 2001 From: Hofi <[email protected]> Date: Wed, 27 Aug 2025 14:02:26 +0200 Subject: [PATCH 2/2] afmongodb: use v1/v2 headers correctly Signed-off-by: Hofi <[email protected]> --- modules/afmongodb/afmongodb-private.h | 6 +++++- modules/afmongodb/afmongodb-worker.h | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/afmongodb/afmongodb-private.h b/modules/afmongodb/afmongodb-private.h index 7de550fe9..77df2fd52 100644 --- a/modules/afmongodb/afmongodb-private.h +++ b/modules/afmongodb/afmongodb-private.h @@ -24,7 +24,11 @@ #define AFMONGODB_PRIVATE_H_ #include "syslog-ng.h" -#include "mongoc.h" +#ifdef SYSLOG_NG_HAVE_MONGOC_V2 +# include "mongoc/mongoc.h" +#else +# include "mongoc.h" +#endif #include "logthrdest/logthrdestdrv.h" #include "template/templates.h" #include "value-pairs/value-pairs.h" diff --git a/modules/afmongodb/afmongodb-worker.h b/modules/afmongodb/afmongodb-worker.h index a56638977..5c61c15cb 100644 --- a/modules/afmongodb/afmongodb-worker.h +++ b/modules/afmongodb/afmongodb-worker.h @@ -26,7 +26,11 @@ #define AFMONGODB_WORKER_H_INCLUDED #include "syslog-ng.h" -#include "mongoc.h" +#ifdef SYSLOG_NG_HAVE_MONGOC_V2 +# include "mongoc/mongoc.h" +#else +# include "mongoc.h" +#endif #include "logthrdest/logthrdestdrv.h" typedef struct MongoDBDestWorker -- 2.39.5
>From 5e108a0140131cff26a8222ec880480c1859c338 Mon Sep 17 00:00:00 2001 From: Hofi <[email protected]> Date: Wed, 27 Aug 2025 17:23:32 +0200 Subject: [PATCH] cmake: fix afmongodb discovery, add support for v2 Signed-off-by: Hofi <[email protected]> --- modules/afmongodb/CMakeLists.txt | 118 ++++++++++++++++++++++++++++----------- syslog-ng-config.h.in | 2 2 files changed, 89 insertions(+), 31 deletions(-) --- a/modules/afmongodb/CMakeLists.txt +++ b/modules/afmongodb/CMakeLists.txt @@ -1,39 +1,95 @@ -if (ENABLE_MONGODB STREQUAL OFF) - return() +if(NOT DEFINED ENABLE_MONGODB OR ENABLE_MONGODB) + set(LMC_1_MIN_VERSION 1.0.0) + set(LMC_MIN_VERSION 2.0.0) + + find_package(PkgConfig REQUIRED) + + # First try libmongoc-1.0 + pkg_check_modules(LIBMONGO libmongoc-1.0>=${LMC_1_MIN_VERSION}) + + if(LIBMONGO_FOUND) + set(ENABLE_MONGODB_INFO_STR "v1" CACHE INTERNAL "MongoDB version") + set(MONGOC_HEADER "<mongoc.h>") + + # libbson-1.0 is needed for libmongoc-1.0 + pkg_check_modules(LIBBSON libbson-1.0>=${LMC_1_MIN_VERSION}) + + if(NOT LIBBSON_FOUND) + message(FATAL_ERROR "libbson-1.0 is required for libmongoc-1.0") + endif() + + include_directories(${LIBMONGO_INCLUDE_DIRS} ${LIBBSON_INCLUDE_DIRS}) + link_directories(${LIBMONGO_LIBRARY_DIRS} ${LIBBSON_LIBRARY_DIRS}) + + else() + # libmongoc-1.0 not found, try mongoc2 + pkg_check_modules(LIBMONGO mongoc2>=${LMC_MIN_VERSION}) + + if(LIBMONGO_FOUND) + set(SYSLOG_NG_HAVE_MONGOC_V2 1 CACHE INTERNAL "MongoDB version 2 is available") + set(ENABLE_MONGODB_INFO_STR "v2" CACHE INTERNAL "MongoDB version") + set(MONGOC_HEADER "<mongoc/mongoc.h>") + + include_directories(${LIBMONGO_INCLUDE_DIRS}) + link_directories(${LIBMONGO_LIBRARY_DIRS}) + endif() + endif() +endif() + +if(ENABLE_MONGODB AND NOT LIBMONGO_FOUND) + message(FATAL_ERROR "Could not find suitable mongo-c-driver (or its dependencies), and MongoDB support was explicitly enabled.") endif() -find_package(libmongoc-1.0) -find_package(libbson-1.0) +module_switch(ENABLE_MONGODB "Enable mongodb destination driver" LIBMONGO_FOUND) + +if(NOT ENABLE_MONGODB) + return() +endif() -module_switch(ENABLE_MONGODB "Enable mongodb destination driver" libmongoc-1.0_FOUND) +include(CheckCSourceCompiles) +set(CMAKE_REQUIRED_INCLUDES ${LIBMONGO_INCLUDE_DIRS}) -if (ENABLE_MONGODB) +if(ENABLE_MONGODB_INFO_STR STREQUAL "v1") + list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBBSON_INCLUDE_DIRS}) +endif() - set(CMAKE_REQUIRED_INCLUDES ${MONGOC_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_LIBRARIES ${MONGOC_LIBRARY}) - set(CMAKE_REQUIRED_LIBRARIES ${BSON_LIBRARY}) - check_symbol_exists(mongoc_uri_set_option_as_int32 "mongoc.h" SYSLOG_NG_HAVE_DECL_MONGOC_URI_SET_OPTION_AS_INT32) - check_symbol_exists(MONGOC_URI_SERVERSELECTIONTIMEOUTMS "mongoc.h" SYSLOG_NG_HAVE_DECL_MONGOC_URI_SERVERSELECTIONTIMEOUTMS) - - set(AFMONGODB_SOURCES - "afmongodb.h" - "afmongodb.c" - "afmongodb-worker.h" - "afmongodb-worker.c" - "afmongodb-parser.h" - "afmongodb-parser.c" - "afmongodb-private.h" - ) - - add_module( - TARGET afmongodb - GRAMMAR afmongodb-grammar - INCLUDES ${MONGOC_INCLUDE_DIRS} - DEPENDS ${MONGOC_LIBRARY} - DEPENDS ${BSON_LIBRARY} - SOURCES ${AFMONGODB_SOURCES} - ) +check_c_source_compiles(" +#include ${MONGOC_HEADER} +#include <bson/bson.h> +int main() { + (void) mongoc_uri_set_option_as_int32; + return 0; +}" HAVE_MONGOC_URI_SET_OPTION_AS_INT32) +check_c_source_compiles(" +#include ${MONGOC_HEADER} +int main() { + (void) MONGOC_URI_SERVERSELECTIONTIMEOUTMS; + return 0; +}" HAVE_MONGOC_URI_SERVERSELECTIONTIMEOUTMS) - add_test_subdirectory(tests) +if(HAVE_MONGOC_URI_SET_OPTION_AS_INT32) + add_compile_definitions(HAVE_MONGOC_URI_SET_OPTION_AS_INT32=1) +endif() +if(HAVE_MONGOC_URI_SERVERSELECTIONTIMEOUTMS) + add_compile_definitions(HAVE_MONGOC_URI_SERVERSELECTIONTIMEOUTMS=1) endif() + +set(AFMONGODB_SOURCES + "afmongodb.h" + "afmongodb.c" + "afmongodb-worker.h" + "afmongodb-worker.c" + "afmongodb-parser.h" + "afmongodb-parser.c" + "afmongodb-private.h" +) + +add_module( + TARGET afmongodb + GRAMMAR afmongodb-grammar + DEPENDS ${LIBMONGO_LDFLAGS} + SOURCES ${AFMONGODB_SOURCES} +) + +add_test_subdirectory(tests) --- a/syslog-ng-config.h.in +++ b/syslog-ng-config.h.in @@ -109,3 +109,5 @@ #cmakedefine01 SYSLOG_NG_ENABLE_AFSOCKET_MEMINFO_METRICS #cmakedefine01 SYSLOG_NG_HAVE_IV_WORK_POOL_SUBMIT_CONTINUATION #cmakedefine01 SYSLOG_NG_HAVE_DECL_CURLUE_LAST +#cmakedefine01 SYSLOG_NG_HAVE_MEMDUP2 +#cmakedefine01 SYSLOG_NG_HAVE_MONGOC_V2

