Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

All notable changes to this project are documented in this file.

## 0.2.2 - 2026-07-25

### Fixed

- Require libcurl 7.63.0 or newer, matching the first release that provides the `CURLOPT_CURLU` API used by sensor discovery.

## 0.2.1 - 2026-07-25

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.16)

project(netft VERSION 0.2.1 LANGUAGES CXX)
project(netft VERSION 0.2.2 LANGUAGES CXX)

include(CTest)
include(GNUInstallDirs)
Expand All @@ -22,7 +22,7 @@ if(NETFT_SANITIZERS)
endif()

find_package(Threads REQUIRED)
find_package(CURL 7.62 REQUIRED)
find_package(CURL 7.63.0 REQUIRED)

add_library(netft
src/types.cpp
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ configuration discovery, stream health reporting, and explicit recovery policies
## Supported platforms

The supported platforms are 64-bit Linux on x86-64 and AArch64. Building requires a C++17
compiler, CMake 3.16 or newer, POSIX threads, and libcurl 7.62 or newer. GoogleTest is required
compiler, CMake 3.16 or newer, POSIX threads, and libcurl 7.63.0 or newer. GoogleTest is required
only when `BUILD_TESTING=ON`. The checked-in Pixi environment supports both `linux-64` and
`linux-aarch64` and provides the development toolchain.

Expand Down
2 changes: 1 addition & 1 deletion cmake/netftConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

include(CMakeFindDependencyMacro)
find_dependency(Threads)
find_dependency(CURL 7.62)
find_dependency(CURL 7.63.0)

include("${CMAKE_CURRENT_LIST_DIR}/netftTargets.cmake")

Expand Down
4 changes: 2 additions & 2 deletions pixi.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[workspace]
name = "netft-cpp"
version = "0.2.1"
version = "0.2.2"
channels = ["conda-forge"]
platforms = ["linux-64", "linux-aarch64"]

Expand All @@ -9,7 +9,7 @@ cmake = "*"
ninja = "*"
cxx-compiler = "*"
gtest = "*"
libcurl = "*"
libcurl = ">=7.63.0"
clang = "*"
clangxx = "*"
clang-tools = "*"
Expand Down
5 changes: 5 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,8 @@ add_test(
-DARGUMENTS=invalid-command
-P ${CMAKE_CURRENT_SOURCE_DIR}/assert_exit_code.cmake
)

add_test(
NAME netft_curl_minimum
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/curl_minimum_test.sh
)
66 changes: 66 additions & 0 deletions test/curl_minimum_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/usr/bin/env bash

set -euo pipefail

repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
test_root="$(mktemp -d)"
trap 'rm -rf -- "${test_root}"' EXIT

make_curl_fixture() {
local version="$1"
local fixture="$2"

mkdir -p "${fixture}/include/curl" "${fixture}/lib"
printf '#define LIBCURL_VERSION "%s"\n' "${version}" \
>"${fixture}/include/curl/curlver.h"
: >"${fixture}/include/curl/curl.h"
: >"${fixture}/lib/libcurl.a"
}

configure_with_curl() {
local fixture="$1"
local build_dir="$2"

cmake -S "${repo_root}" -B "${build_dir}" -G Ninja \
-DBUILD_TESTING=OFF \
-DCMAKE_DISABLE_FIND_PACKAGE_PkgConfig=ON \
-DCURL_NO_CURL_CMAKE=ON \
-DCURL_INCLUDE_DIR="${fixture}/include" \
-DCURL_LIBRARY="${fixture}/lib/libcurl.a"
}

make_curl_fixture 7.62.0 "${test_root}/curl-7.62"
if configure_with_curl \
"${test_root}/curl-7.62" "${test_root}/build-7.62" \
>"${test_root}/curl-7.62.log" 2>&1; then
printf '%s\n' 'libcurl 7.62.0 unexpectedly satisfied the project requirement' >&2
exit 1
fi

make_curl_fixture 7.63.0 "${test_root}/curl-7.63"
if ! configure_with_curl \
"${test_root}/curl-7.63" "${test_root}/build-7.63" \
>"${test_root}/curl-7.63.log" 2>&1; then
printf '%s\n' 'libcurl 7.63.0 did not satisfy the project requirement' >&2
sed 's/^/ /' "${test_root}/curl-7.63.log" >&2
exit 1
fi

cmake_version="$(
sed -nE \
's/^project\(netft VERSION ([0-9]+\.[0-9]+\.[0-9]+).*$/\1/p' \
"${repo_root}/CMakeLists.txt"
)"
pixi_version="$(
sed -nE \
's/^version = "([0-9]+\.[0-9]+\.[0-9]+)"$/\1/p' \
"${repo_root}/pixi.toml"
)"
test "${cmake_version}" = "0.2.2"
test "${pixi_version}" = "${cmake_version}"

grep -Eq '^find_dependency\(CURL 7\.63(\.0)?\)$' \
"${repo_root}/cmake/netftConfig.cmake.in"
grep -Eq '^[[:space:]]*libcurl = ">=7\.63\.0"$' \
"${repo_root}/pixi.toml"
grep -Eq '^[[:space:]]*SOVERSION 1$' "${repo_root}/CMakeLists.txt"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Loading