From d5c6b1f0936de1917a1828aed01c22dc4afa1c14 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Mon, 22 Jun 2026 13:23:12 -0400 Subject: [PATCH 01/11] Fix: Install GTest during MacOS wheel build job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because BlazingMQ now requires GTest as a build dependency, commit ac01847 taught our normal CI build job to install GTest and also taught our Linux wheel build job to build GTest from source. This commit did not correctly add GTest as a build dependency to our MacOS wheel build job, instead only changing a command in a heredoc “comment”. Because of this, MacOS wheel builds now fail. Because we do not build wheels as part of our per-PR CI, we didn’t notice this until after the PR had been merged. This patch makes MacOS wheel builds install Google Test as a dependency from homebrew, fixing the missing dependency issue. Signed-off-by: Patrick M. Niedzielski --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a36f890..061a261 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,7 @@ before-all = [ [tool.cibuildwheel.macos] before-all = [ - "brew install cmake ninja flex bison zlib google-benchmark", + "brew install cmake ninja flex bison zlib google-benchmark googletest", "bash bin/build-macos-universal.sh" ] before-test = [ From 1df835084276816fc3a3db753e157581bee5a966 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 25 Aug 2026 15:13:45 -0400 Subject: [PATCH 02/11] Style: Remove heredoc comment from MacOS build script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Like the Manylinux build script, the MacOS build script has a comment at the top that contains a command to install third-party packaged dependencies. Unlike the Manylinux build script, though, the MacOS build script’s comment is in the form of an unevaluated heredoc. While it is in principle nice that a user can copy-and-paste the command directly, using a heredoc comment like this is naughty; it requires silencing a shellcheck warning, and it does not look like a comment if you’re just skimming through. This last issue seems to be the root cause of the issue fixed by the previous commit, wherein a dependency was added to this comment, not realizing that the comment was unevaluated. Rather than prioritize a hypothetical user who may need to remove some hash characters to run a command once, this patch makes the change to use a real comment, so it’s obvious that the command is unevaluated. Signed-off-by: Patrick M. Niedzielski --- bin/build-macos-universal.sh | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/bin/build-macos-universal.sh b/bin/build-macos-universal.sh index 8ce42e6..01c204f 100755 --- a/bin/build-macos-universal.sh +++ b/bin/build-macos-universal.sh @@ -2,23 +2,20 @@ # This script builds BlazingMQ and all of its dependencies for MacOS 11.0. # -# Before running this script, install following prerequisites, if not present -# yet, by copy-and-pasting the commands between `< Date: Tue, 25 Aug 2026 14:11:11 -0400 Subject: [PATCH 03/11] CI: Use Clang preset for MacOS wheel build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When building the MacOS wheel build, we notice many, harmless warnings on each translation unit during both the we BDE build and the BlazingMQ build. Several of these are due to GCC flags being passed to the system Clang compiler, which the latter does not understand. There are two sources of this, a different one for BDE and BlazingMQ. For BDE, we need to explicitly pass the compiler we’re using, or BDE will default to GCC on MacOS. For BlazingMQ, we have been accidentally passing a GCC CMake preset file during configuration, resulting in those flags that the system Clang compiler does not understand to be passed. This patch fixes both issues, explicitly telling BDE to use Clang, and passing the Clang CMake preset to BlazingMQ, removing many of these warnings. Signed-off-by: Patrick M. Niedzielski --- bin/build-macos-universal.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/build-macos-universal.sh b/bin/build-macos-universal.sh index 01c204f..bc7f291 100755 --- a/bin/build-macos-universal.sh +++ b/bin/build-macos-universal.sh @@ -50,7 +50,7 @@ PATH="${DIR_THIRDPARTY}/bde-tools/bin:$PATH" if [ ! -e "${DIR_BUILD}/bde/.complete" ]; then pushd "${DIR_THIRDPARTY}/bde" - eval "$(bbs_build_env -u opt_64_pic_cpp17 -b "${DIR_BUILD}/bde" -i ${DIR_INSTALL})" + eval "$(bbs_build_env -p clang -u opt_64_pic_cpp17 -b "${DIR_BUILD}/bde" -i ${DIR_INSTALL})" bbs_build configure --prefix="${DIR_INSTALL}" bbs_build build -j 16 bbs_build install --install_dir "/" --prefix="${DIR_INSTALL}" @@ -100,7 +100,7 @@ if [ ! -e "${DIR_BUILD}/blazingmq/.complete" ]; then -DCMAKE_INSTALL_PREFIX="${DIR_INSTALL}" \ -DCMAKE_MODULE_PATH="${DIR_ROOT}" \ -DCMAKE_PREFIX_PATH="${DIR_THIRDPARTY}/bde-tools" \ - -DCMAKE_TOOLCHAIN_FILE="${DIR_THIRDPARTY}/bde-tools/BdeBuildSystem/toolchains/darwin/gcc-default.cmake" \ + -DCMAKE_TOOLCHAIN_FILE="${DIR_THIRDPARTY}/bde-tools/BdeBuildSystem/toolchains/darwin/clang-default.cmake" \ -DFLEX_ROOT="${FLEX_ROOT}" -G "Ninja") cmake -B "${DIR_BUILD}/blazingmq" -S "." "${CMAKE_OPTIONS[@]}" From c2cad937ebf1b1f1ddee0e3097a46c01b7e91a16 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Thu, 5 Mar 2026 15:27:19 -0500 Subject: [PATCH 04/11] CI: Upgrade manylinux version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We build our wheels with an ancient version of manylinux, dating back to 2014. While we don’t want to be too cutting edge, we do not need to support such an old version with our wheels. This patch bumps the version of manylinux we use to build wheels to manylinux 2.28, and removes the 32-bit wheel build that is no longer supported. Signed-off-by: Patrick M. Niedzielski --- bin/build-manylinux.sh | 3 ++- pyproject.toml | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/build-manylinux.sh b/bin/build-manylinux.sh index d8b97fe..2195093 100755 --- a/bin/build-manylinux.sh +++ b/bin/build-manylinux.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash -# This script builds BlazingMQ and all of its dependencies on RHEL7. +# This script builds BlazingMQ and all of its dependencies on AlmaLinux 8 +# (manylinux_2_28). # # Before running this script, install the following prerequisites if not # present yet: diff --git a/pyproject.toml b/pyproject.toml index 061a261..a4aedeb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,8 +53,7 @@ directory = "news" [tool.cibuildwheel] build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] skip = "*-musllinux_*" -manylinux-x86_64-image = "manylinux2014" -manylinux-i686-image = "manylinux2014" +manylinux-x86_64-image = "manylinux_2_28" [tool.cibuildwheel.linux.environment] PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig" @@ -64,7 +63,7 @@ PKG_CONFIG_PATH="install/lib/pkgconfig" [tool.cibuildwheel.linux] before-all = [ - "yum install -y gdb curl pkgconfig ninja-build flex flex-devel zlib-devel openssl-devel", + "dnf install -y gdb curl pkgconfig ninja-build flex flex-devel zlib-devel zlib-static openssl-devel", "DIR_INSTALL=/usr/local bash bin/build-manylinux.sh" ] From 3a660997ddf583791a9cebbb2cfc0bb6d9a48407 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 23 Jun 2026 18:07:20 -0400 Subject: [PATCH 05/11] CI: Support Python 3.14 when building wheels The older version of the cibuildwheel action we were using did not support Python 3.14. This patch bumps it so that we can build wheels for Python 3.14. This also allows us to remove the flag for supporting prerelease Python versions, because all the Python versions we now support are known to be full releases by the cibuildwheel action. Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build_wheels.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 532a118..97ecf1e 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -85,11 +85,10 @@ jobs: run: | echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - name: Build wheels - uses: pypa/cibuildwheel@v2.19.2 + uses: pypa/cibuildwheel@v3.4.1 env: CIBW_ARCHS_LINUX: ${{ matrix.cibw_arch }} CIBW_BUILD: ${{ matrix.cibw_python }}-* - CIBW_PRERELEASE_PYTHONS: True CIBW_TEST_COMMAND: python3 -m pytest {project}/tests/unit CIBW_TEST_REQUIRES: pytest mock pkgconfig - uses: actions/upload-artifact@v4 @@ -130,12 +129,11 @@ jobs: run: | echo "CFLAGS=-target arm64-apple-macos14" >> $GITHUB_ENV - name: Build wheels - uses: pypa/cibuildwheel@v2.19.2 + uses: pypa/cibuildwheel@v3.4.1 env: CIBW_ARCHS_MACOS: ${{ matrix.cibw_arch }} CIBW_BUILD: ${{ matrix.cibw_python }}-* CIBW_BUILD_VERBOSITY: 1 - CIBW_PRERELEASE_PYTHONS: True CIBW_TEST_COMMAND: python3 -m pytest {project}/tests/unit CIBW_TEST_REQUIRES: pytest mock pkgconfig MACOSX_DEPLOYMENT_TARGET: "14.0" From 9a9b688d5b3a38272ba2eb96b9ceb3ed2f20d9bd Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Wed, 4 Mar 2026 19:29:39 -0500 Subject: [PATCH 06/11] CI: Add explicit dependency on `packaging` Signed-off-by: Patrick M. Niedzielski --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index a4aedeb..44c0505 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,7 @@ requires = ['setuptools>=39.2.0', 'Cython>=0.28.4, <3; python_version < "3.8"', 'Cython >= 3, <4; python_version >= "3.8"', 'wheel>=0.31.0', + 'packaging>=24.2', 'pkgconfig>1.5.0'] build-backend = "setuptools.build_meta" From 6ad5448deea72619f12cf503aaf93ee6cde9b85a Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Fri, 6 Mar 2026 11:58:25 -0500 Subject: [PATCH 07/11] CI: Build NTF without OpenSSL Now that NTF supports TLS, our CI build environment needs to either provide a statically-linked library of OpenSSL for it to link against, or to disable OpenSSL support in NTF. Although BlazingMQ will soon support TLS, it does not right now. So, this patch disables OpenSSL support in NTF, punting the manual build down the road for when BlazingMQ gains support for TLS. Signed-off-by: Patrick M. Niedzielski --- bin/build-macos-universal.sh | 1 + bin/build-manylinux.sh | 2 +- pyproject.toml | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/build-macos-universal.sh b/bin/build-macos-universal.sh index bc7f291..6b6c976 100755 --- a/bin/build-macos-universal.sh +++ b/bin/build-macos-universal.sh @@ -69,6 +69,7 @@ if [ ! -e "${DIR_BUILD}/ntf-core/.complete" ]; then --with-zlib \ --without-lz4 \ --without-zstd \ + --without-openssl \ --without-warnings-as-errors \ --without-usage-examples \ --without-applications diff --git a/bin/build-manylinux.sh b/bin/build-manylinux.sh index 2195093..c2dc6a5 100755 --- a/bin/build-manylinux.sh +++ b/bin/build-manylinux.sh @@ -13,7 +13,6 @@ # ninja-build \ # flex-devel \ # zlib-devel \ -# openssl-devel \ # m4 set -e @@ -120,6 +119,7 @@ if [ ! -e "${DIR_BUILD}/ntf-core/.complete" ]; then --with-zlib \ --without-lz4 \ --without-zstd \ + --without-openssl \ --without-warnings-as-errors \ --without-usage-examples \ --without-applications diff --git a/pyproject.toml b/pyproject.toml index 44c0505..0a14b4d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ PKG_CONFIG_PATH="install/lib/pkgconfig" [tool.cibuildwheel.linux] before-all = [ - "dnf install -y gdb curl pkgconfig ninja-build flex flex-devel zlib-devel zlib-static openssl-devel", + "dnf install -y gdb curl pkgconfig ninja-build flex flex-devel zlib-devel zlib-static", "DIR_INSTALL=/usr/local bash bin/build-manylinux.sh" ] @@ -82,6 +82,6 @@ before-test = [ [[tool.cibuildwheel.overrides]] select = "*-musllinux*" before-all = [ - "apk add --update gdb curl pkgconfig ninja flex flex-dev zlib-dev openssl-dev", + "apk add --update gdb curl pkgconfig ninja flex flex-dev zlib-dev", "DIR_INSTALL=/usr/local bash bin/build-manylinux.sh" ] From 66252d09ee551cffc9c552bafadc668fa8d0426a Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 25 Aug 2026 16:25:44 -0400 Subject: [PATCH 08/11] CI: Build NTF without zlib support We do not use the channel compression feature of NTF, so there is not any benefit in building our NTF library with zlib support. This patch turns it off. Signed-off-by: Patrick M. Niedzielski --- bin/build-manylinux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/build-manylinux.sh b/bin/build-manylinux.sh index c2dc6a5..576df64 100755 --- a/bin/build-manylinux.sh +++ b/bin/build-manylinux.sh @@ -116,7 +116,7 @@ if [ ! -e "${DIR_BUILD}/ntf-core/.complete" ]; then --output "${DIR_BUILD}/ntf-core" \ --ufid opt_64_pic_cpp17 \ --generator "Ninja" \ - --with-zlib \ + --without-zlib \ --without-lz4 \ --without-zstd \ --without-openssl \ From 32008e176c9a6da9472c9483ef4b498e5b2f2045 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 25 Aug 2026 15:32:06 -0400 Subject: [PATCH 09/11] Style: Make build script dependency comments match CI commands Our two build scripts start with header comments that include a command that needs to be run to install packaged dependencies. These comments, though, have drifted from the commands we actually run to install packaged dependencies in our CI. This patch updates the comments to match the commands we actually run. Signed-off-by: Patrick M. Niedzielski --- bin/build-macos-universal.sh | 17 +++++++---------- bin/build-manylinux.sh | 17 +++++++++-------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/bin/build-macos-universal.sh b/bin/build-macos-universal.sh index 6b6c976..2ce2e4e 100755 --- a/bin/build-macos-universal.sh +++ b/bin/build-macos-universal.sh @@ -5,17 +5,14 @@ # Before running this script, install the following prerequisites if not # present yet: # -# brew install \ -# curl \ -# pkgconfig \ -# ninja \ -# flex \ -# zlib \ -# bison \ -# flex \ +# brew install \ +# cmake \ +# ninja \ +# flex \ +# bison \ +# zlib \ # google-benchmark \ -# googletest \ -# cmake +# googletest set -e set -u diff --git a/bin/build-manylinux.sh b/bin/build-manylinux.sh index 576df64..7e76e81 100755 --- a/bin/build-manylinux.sh +++ b/bin/build-manylinux.sh @@ -6,14 +6,15 @@ # Before running this script, install the following prerequisites if not # present yet: # -# sudo yum install -y \ -# gdb \ -# curl \ -# pkgconfig \ -# ninja-build \ -# flex-devel \ -# zlib-devel \ -# m4 +# sudo dnf install -y \ +# gdb \ +# curl \ +# pkgconfig \ +# ninja-build \ +# flex \ +# flex-devel \ +# zlib-devel \ +# zlib-static set -e set -u From 283afe98847f85393fef8702629f37358b2f811e Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 25 Aug 2026 15:41:40 -0400 Subject: [PATCH 10/11] Style: Remove curly quote usage in environment variable In our wheel build CI job configuration, there is an accidental use of curly quotes where we wanted straight quotes. This does not seem to matter, but this patch cleans it up. Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build_wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 97ecf1e..1090234 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -23,7 +23,7 @@ jobs: - name: Build sdist env: - BLAZINGMQ_PYTHON_NO_PKGCONFIG: ’1’ + BLAZINGMQ_PYTHON_NO_PKGCONFIG: '1' run: pipx run build --sdist - uses: actions/upload-artifact@v4 From 83a7d97055cbd5602f8cacc814834bbb1083d9fb Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Wed, 4 Mar 2026 16:43:39 -0500 Subject: [PATCH 11/11] CI: Build wheels on every PR This patch enables the `build_wheel.yml` workflow to run on each pull request. Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build_wheels.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 1090234..6073f17 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -2,6 +2,11 @@ name: Wheels on: push: + branches: + - main + pull_request: + branches: + - main release: types: - published