From 470553700221d63c213b996dc766f939ab09f4dc Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Fri, 15 Aug 2025 16:55:33 -0700 Subject: [PATCH 1/3] Enable building ZeroMQ support on Windows --- ci/windows/build.cmd | 2 +- src/cluster/backend/CMakeLists.txt | 12 ++++++++---- src/cluster/backend/zeromq/CMakeLists.txt | 8 +++++--- vcpkg.json | 2 ++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ci/windows/build.cmd b/ci/windows/build.cmd index be1c92eede..a539846c6f 100644 --- a/ci/windows/build.cmd +++ b/ci/windows/build.cmd @@ -7,5 +7,5 @@ call "c:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliar mkdir build cd build -cmake.exe .. -DCMAKE_BUILD_TYPE=release -DVCPKG_TARGET_TRIPLET="x64-windows-static" -DENABLE_ZEEK_UNIT_TESTS=yes -DENABLE_CLUSTER_BACKEND_ZEROMQ=no -G Ninja +cmake.exe .. -DCMAKE_BUILD_TYPE=release -DVCPKG_TARGET_TRIPLET="x64-windows-static" -DENABLE_ZEEK_UNIT_TESTS=yes -G Ninja cmake.exe --build . diff --git a/src/cluster/backend/CMakeLists.txt b/src/cluster/backend/CMakeLists.txt index e577282233..648dd8e265 100644 --- a/src/cluster/backend/CMakeLists.txt +++ b/src/cluster/backend/CMakeLists.txt @@ -1,7 +1,3 @@ -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/zeromq/cmake") - -find_package(ZeroMQ) - # Default to building ZeroMQ only if ZeroMQ was found. # # If a user enabled the cluster backend explicitly (-D ENABLE_CLUSTER_BACKEND_ZEROMQ:bool=ON), @@ -9,6 +5,14 @@ find_package(ZeroMQ) option(ENABLE_CLUSTER_BACKEND_ZEROMQ "Enable the ZeroMQ cluster backend" ON) if (ENABLE_CLUSTER_BACKEND_ZEROMQ) + + if (MSVC) + find_package(ZeroMQ CONFIG REQUIRED) + else () + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/zeromq/cmake") + find_package(ZeroMQ REQUIRED) + endif () + if (NOT ZeroMQ_FOUND) message(FATAL_ERROR "ENABLE_CLUSTER_BACKEND_ZEROMQ set, but ZeroMQ library not available") endif () diff --git a/src/cluster/backend/zeromq/CMakeLists.txt b/src/cluster/backend/zeromq/CMakeLists.txt index 7f97a7878e..f7c8678f73 100644 --- a/src/cluster/backend/zeromq/CMakeLists.txt +++ b/src/cluster/backend/zeromq/CMakeLists.txt @@ -1,6 +1,8 @@ -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -find_package(ZeroMQ REQUIRED) +# On MSVC, ZeroMQ_LIBRARIES may not be set by find_package() earlier in the +# process. If it isn't, set it to the static target generated by vcpkg. +if (MSVC AND NOT ZeroMQ_LIBRARIES) + set(ZeroMQ_LIBRARIES libzmq-static) +endif () zeek_add_plugin( Zeek Cluster_Backend_ZeroMQ diff --git a/vcpkg.json b/vcpkg.json index e680e87aca..82200aea71 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,7 +3,9 @@ "version-string": "latest", "dependencies": [ "c-ares", + "cppzmq", "libpcap", + "zeromq", "zlib" ] } From 37cc4999b38a66903c5abeacaba0d2143a29fbb4 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Mon, 1 Sep 2025 14:37:47 -0700 Subject: [PATCH 2/3] CI: Add label for enabling the Windows build in PRs --- .cirrus.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 7b759a22d0..4ba410ee8b 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -143,6 +143,12 @@ skip_if_pr_not_full_or_zeekctl: &SKIP_IF_PR_NOT_FULL_OR_ZEEKCTL ( $CIRRUS_PR_LABELS =~ ".*CI: Skip All.*" ) ) +skip_if_pr_not_full_or_windows: &SKIP_IF_PR_NOT_FULL_OR_WINDOWS + skip: > + ( ( $CIRRUS_PR != '' && $CIRRUS_PR_LABELS !=~ ".*CI: (Full|Windows).*" ) || + ( $CIRRUS_PR_LABELS =~ ".*CI: Skip All.*" ) + ) + ci_template: &CI_TEMPLATE # Default timeout is 60 minutes, Cirrus hard limit is 120 minutes for free # tasks, so may as well ask for full time. @@ -633,7 +639,7 @@ windows_task: build_script: ci/windows/build.cmd test_script: ci/windows/test.cmd << : *ONLY_IF_PR_MASTER_RELEASE - << : *SKIP_IF_PR_NOT_FULL_CI + << : *SKIP_IF_PR_NOT_FULL_OR_WINDOWS env: ZEEK_CI_CPUS: 8 # Give verbose error output on a test failure. From 723b64d81f455175cf1cc5f9f496d3b4fe5dac89 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Tue, 16 Sep 2025 13:30:00 -0700 Subject: [PATCH 3/3] Reword comment about when ZeroMQ is required for the build --- src/cluster/backend/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/cluster/backend/CMakeLists.txt b/src/cluster/backend/CMakeLists.txt index 648dd8e265..c5a6d1b4a2 100644 --- a/src/cluster/backend/CMakeLists.txt +++ b/src/cluster/backend/CMakeLists.txt @@ -1,7 +1,5 @@ -# Default to building ZeroMQ only if ZeroMQ was found. -# -# If a user enabled the cluster backend explicitly (-D ENABLE_CLUSTER_BACKEND_ZEROMQ:bool=ON), -# but ZeroMQ wasn' found, hard bail. +# Default to building ZeroMQ, but add an option that allows it to be disabled +# via CMake. option(ENABLE_CLUSTER_BACKEND_ZEROMQ "Enable the ZeroMQ cluster backend" ON) if (ENABLE_CLUSTER_BACKEND_ZEROMQ)