Skip to content

chore: fix Windows build, cpp-httplib 0.47 + dep bumps, spec gap fixes, move k8s example - #797

Merged
leoparente merged 7 commits into
developfrom
chore/httplib-0.47-and-spec-gap-fixes
Sep 22, 2026
Merged

leoparente merged 7 commits into
developfrom
chore/httplib-0.47-and-spec-gap-fixes

Conversation

@leoparente

@leoparente leoparente commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Housekeeping after the netprobe/ICMPv6/host_spec work: fix the Windows build, unblock the cpp-httplib upgrade that has been pinned since #784, refresh the other deps that have newer releases, close the small gaps left by the merged design specs, and move the Kubernetes sidecar example next to the other collection examples.

Dependencies (conanfile.py)

Package From To Note
cpp-httplib 0.27.0 0.47.0 Recipe now exposes use_non_blocking_getaddrinfo; set to False so no libanl is linked (that was what broke the static musl cross builds on >= 0.28).
libcurl 8.21.0 8.22.0
openssl 3.6.3 3.6.4
catch2 3.15.1 3.16.0

Deliberately not bumped:

  • openssl 4.0.x — every OpenSSL consumer on ConanCenter (libcurl incl. 8.22.0, libnghttp2, sentry-crashpad, cpp-httplib) still pins openssl/[<4]. It only resolves with force=True against the recipes' declared support. As a data point, libcurl 8.21.0 and opentelemetry-cpp 1.26.0 do compile against 4.0.2 on macOS, but Linux/musl (sentry-crashpad, nghttp2) is unverified. Revisit when libcurl widens its range.
  • protobuf 7.35.0 — excluded by opentelemetry-cpp 1.26.0's protobuf/[<7].

Spec gap fixes

Windows build fix

build-win64 has been red on develop since the #796 merge, but the cause is not that PR: it was simply the first build after ConanCenter published opentelemetry-cpp/1.26.0 recipe revision a671ccb (2026-08-18). That revision forces OTELCPP_PROTO_LIB_TYPE=STATIC_LIBRARY and disables upstream's shared/static selection, so opentelemetry_proto.lib is now static on Windows. Our root CMakeLists.txt still defined the non-propagated OPENTELEMETRY_PROTO_API macro as __declspec(dllimport) on Windows (a #784 workaround for the old revision that built the proto library as a DLL), so every opentelemetry::proto symbol became an unresolved __imp_ import (1500+ LNK2019/LNK2001). The macro is now defined empty on every platform, matching what upstream's project_build_tools_set_static_library_declaration does for MSVC. Last green Windows build (07-22) used revision 9d81768.

Windows CI time

The Windows Conan cache was evicted while the job was red (actions/cache only saves on success), so every run since 08-26 rebuilt all 34 dependencies from source. On top of that, Visual Studio is a multi-config generator and the cmake-conan provider defaults to installing both Release and Debug, so each cold configure built everything twice (over an hour). The Windows configure steps in build-develop.yml and build-release.yml now pass -DCONAN_INSTALL_BUILD_CONFIGURATIONS=$BUILD_TYPE; the jobs only ever build --config Release.

k8s example

k8s/centralized_collection/k8s/ (git rename). Apply command and dashboard relative path updated; linked from centralized_collection/README.md and the top-level README (it was unreferenced before).

Testing

Full Release build on macOS (arm64) with the bumped deps; ctest — 25/25 pass (all unit suites incl. unit-tests-visor-http-client, unit-tests-visor-http-check, unit-tests-input-netprobe with the two new [ipv6] cases, and the integration pcap tests). The static musl cross-build job on this PR is the real check for the cpp-httplib change.

🤖 Generated with Claude Code

leoparente and others added 4 commits September 22, 2026 10:50
cpp-httplib >= 0.28 defaults to CPPHTTPLIB_USE_NON_BLOCKING_GETADDRINFO and
links libanl on Linux, which does not exist on musl and broke the static
cross builds (the reason we were pinned to 0.27.0 since #784). The recipe
now exposes use_non_blocking_getaddrinfo; set it to False so no anl is
linked. httplib only backs the REST server and in-process test servers, so
blocking getaddrinfo is fine.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ound-trip

Adds the two CI-deterministic cases from the ICMPv6 design spec that were
never written: a literal "::1" target must be accepted without an ip_version
hint and produce one probe, and a DNS target with ip_version: 6 must reach
start() and echo the value via info_json. Both run through the tcp test type
because a ping stream opens raw sockets and cannot start unprivileged in CI;
the parse/route path under test is shared by ping and tcp.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…entralized_collection

- README: the -H usage text still said live-capture host_spec "will append to
  any automatic detection"; #790 made it replace auto-detection. Sync both
  usage blocks with the CLI help text.
- netprobe README: content_failures now covers every v3 response assertion
  (body, JSON, size, header, version), not just expected_body(_regex).
- Move k8s/ to centralized_collection/k8s/ next to the other collection
  examples, fix its apply/dashboard paths, and link it from
  centralized_collection/README.md and the top-level README (it was
  unreferenced before).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Newest ConanCenter versions of each. Not bumped on purpose:
- openssl 4.0.x: every consumer recipe (libcurl incl. 8.22.0, libnghttp2,
  sentry-crashpad, cpp-httplib) still pins openssl/[<4]; moving needs a
  force override against the recipes' declared support.
- protobuf 7.35.0: excluded by opentelemetry-cpp 1.26.0's protobuf/[<7].

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@nbl-ai-review

nbl-ai-review Bot commented Sep 22, 2026

Copy link
Copy Markdown

AI Code Review — risk tier: Lite · dimensions run: correctness, security

Advisory only. A human owns the merge decision.

Summary — Doc reorg, a k8s example rename, dependency version bumps in conanfile.py, and additive unit tests; no security-sensitive surface touched. No issues found — net positive.

🤖 AI Code Review · run · prompts: code-review/v1 · models: claude-sonnet-5/medium · context: description · 0 comment(s) · 0 prior AI review(s) · usage: $0.67 · 1224k in (94% cached) · 4.5k out

@github-actions

github-actions Bot commented Sep 22, 2026

Copy link
Copy Markdown

LCOV of commit 5648a4a during Debug Builds #239

  lines......: 85.1% (17340 of 20387 lines)
  functions..: 76.9% (1718 of 2234 functions)
  branches...: no data found

Files changed coverage rate: n/a

Full coverage report

leoparente and others added 2 commits September 22, 2026 11:24
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ndows

The Windows job has failed since the opentelemetry-cpp/1.26.0 ConanCenter
recipe revision a671ccb (2026-08-18): it now forces OTELCPP_PROTO_LIB_TYPE
to STATIC_LIBRARY and disables upstream's shared/static selection, so
opentelemetry_proto.lib is a static library on Windows. Our CMake still
defined the (non-propagated) export macro as __declspec(dllimport) there,
a workaround from #784 for the old revision that built the proto library
as a DLL, so every opentelemetry::proto symbol resolved to an __imp_
import that no library provides (1500+ LNK2019/LNK2001 across all
targets). The first failure on develop is the #796 merge only because it
was the first build after that recipe revision; last green build (07-22)
used revision 9d81768.

Define the macro as empty everywhere, matching what upstream's
project_build_tools_set_static_library_declaration does for MSVC.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@leoparente leoparente changed the title chore: cpp-httplib 0.47 + dep bumps, spec gap fixes, move k8s example under centralized_collection chore: fix Windows build, cpp-httplib 0.47 + dep bumps, spec gap fixes, move k8s example Sep 22, 2026
@leoparente leoparente self-assigned this Sep 22, 2026
Visual Studio is a multi-config generator, so the cmake-conan provider
defaults to installing (and, on a cache miss, building) every dependency
for both Release and Debug. The Windows jobs only ever build --config
Release, so the Debug pass is wasted: on a cold cache it doubled the
Configure step to over an hour. Pin the provider to the configured build
type.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@leoparente
leoparente marked this pull request as ready for review September 22, 2026 19:26
@leoparente
leoparente merged commit ca3f081 into develop Sep 22, 2026
23 checks passed
@leoparente
leoparente deleted the chore/httplib-0.47-and-spec-gap-fixes branch September 22, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants