Repository navigation
Modernization Phase 1.3: vcpkg baseline 2026.06.24 + dependency wave [iosbuild] - #24
Merged
Merged
Conversation
- vcpkg submodule: 2024-09 pin -> 2026.06.24 tag; builtin-baseline added to vcpkg.json (enables per-port overrides; the jq-based merge-dependencies.sh preserves the key). - All overlay ports deleted: magic-enum (was byte-identical to upstream), fmt (Phase 1.2 stopgap; folly 2026.02 works with fmt 12), folly/usrsctp/libdatachannel (patch sets against 2024 versions; upstream ports at the new baseline carry their own fixes). Overlays return only with written justification (see overlayports/README.md). - CMake-4 stopgaps removed from the Apple triplets (CMAKE_POLICY_VERSION_MINIMUM, VCPKG_OSX_SYSROOT): the new vcpkg scripts and ports handle CMake 4 themselves. - Root dist/ (XCFramework build output) gitignored. Port versions at this baseline: protobuf 6.33.4 (regen of checked-in generated code follows in this phase), folly 2026.02.23, boost 1.91, openssl 3.6.3, libdatachannel 0.24.5, fmt 12.2. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- protobuf 25->33: regenerate all checked-in generated code (protoc 33.4); port the codegen plugin to the absl::string_view descriptor API; proto.sh scripts detect the protoc triplet dir and drop the removed --experimental_allow_proto3_optional flag. - folly 2026.02: overlay port with two justified changes — fix-missing-exception-include.patch (rich_error_code.h lacks <exception>, hard error under libc++ 22) and -DFOLLY_NO_EXCEPTION_TRACER=ON (the 2026 tracer interposes __cxa_throw and activates on macOS, unlike the glibc-only 2024 tracer, breaking std::current_exception process-wide and aborting every coro error path; verified with a minimal repro). Migrate the seven scheduleOn call sites to co_withExecutor (deprecated in 2026 folly, warnings-as-errors in lint). - secp256k1 0.7: overlay enabling the recovery module (upstream default-off; SigningUtils needs secp256k1_recovery.h); the separate secp256k1_precomputed archive no longer exists, so its find_library result is now optional in streamr-utils. - magic-enum 0.9.8: headers moved under magic_enum/ subdirectory. - libdatachannel 0.24: exported CMake target renamed to LibDataChannel::LibDataChannel. - RpcCommunicatorTest: compare the message field instead of protobuf DebugString output (6.33 prefixes a goo.gle/debugproto marker; DebugString was never a stable format). - Remove -fpermissive from streamr-proto-rpc (GCC-only flag). Verified on macOS: full build, 307/307 tests, full lint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- usrsctp overlay: restore the two pre-2026 iOS patches (the iPhoneOS SDK ships neither <net/route.h> nor transitively <ifaddrs.h>) — verified still required against usrsctp 0.9.5. - Remove protobuf::libprotoc from library targets (proto-rpc, dht, trackerless-network): only the host codegen plugin needs libprotoc, and the new protobuf port does not export it for cross triplets. - README: builtin-baseline bump procedure; MODERNIZATION.md: Phase 1.3 status. Verified: iOS cross-build green (XCFramework platform=iOS, minos=13.0, no post-deployment-target runtime symbols); macOS clean rebuild after the changes: full build, 307/307 tests, full lint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 2026.06.24 baseline pulls libunwind on Linux (new transitive dependency), whose vcpkg port requires autoconf/autoconf-archive/ automake/libtoolize from the system package manager. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Collaborator
Author
Final CI state — all green ✅
One CI-only fix landed after opening: the new baseline pulls libunwind on Linux, whose port needs autotools from the system ( This is the first time the complete matrix is green in a single run during the modernization — old toolchain fully retired, dependencies current, three documented overlays remaining (down from five opaque ones). Ready for review. The regenerated protobuf sources are the bulk of the diff; the interesting commits are the overlay justifications and the folly exception-tracer analysis. 🤖 Generated with Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1.3 of the modernization: the dependency update wave — the phase the plan flagged as highest-risk. Three commits: baseline bump + overlay reset, SDK adaptation, iOS restoration + docs.
The baseline
vcpkg submodule: 2024-09 pin → tag 2026.06.24, with
builtin-baselinenow pinned invcpkg.json(enables per-portoverrides; the merge script preserves the key; and since CI cache keys hashvcpkg.json, baseline bumps bust caches automatically — the planned cache-key/submodule-SHA work became unnecessary).Resulting versions: protobuf 6.33.4 (from 25.1!), folly 2026.02.23, boost 1.91, openssl 3.6.3, libdatachannel 0.24.5, fmt 12.2, secp256k1 0.7.1.
Overlay diet (the headline)
All five old overlay directories deleted (folly/usrsctp/libdatachannel/magic-enum/fmt), along with Phase 1.2's CMake-4 stopgaps (
CMAKE_POLICY_VERSION_MINIMUM,VCPKG_OSX_SYSROOT) — the new vcpkg handles CMake 4 itself. Three minimal overlays returned, strictly evidence-driven, each with aJUSTIFICATION.md:<exception>include (libc++ 22 hard error);FOLLY_NO_EXCEPTION_TRACER=ON— see belowSigningUtilsneeds itnet/route.h/ifaddrs.hin the iPhoneOS SDK) — verified still requiredThe folly exception-tracer find deserves a mention: after the bump, 18 tests aborted — every single one exercising an error path. Bisected with minimal repros down to:
std::current_exception()returning null inside catch blocks, process-wide. Cause: folly 2026's exception tracer interposes__cxa_throwand now activates on macOS (the 2024 tracer was glibc-only and compiled to empty objects on libc++), breaking exception introspection for everyone. One configure option kills it; the SDK never used the tracer.SDK adaptations
absl::string_viewdescriptor API;proto.shscripts now detect the protoc triplet dir (was hardcodedarm64-osx) and drop the removed--experimental_allow_proto3_optionalflag;protobuf::libprotocremoved from library targets (only the host plugin needs it; the new port doesn't export it for cross triplets).scheduleOn(exec)sites →co_withExecutor(exec, task)(2026 deprecation, fatal under warnings-as-errors lint).magic_enum/magic_enum.hpp); libdatachannel 0.24 target rename;secp256k1_precomputedarchive no longer exists (merged into main lib) → optional;RpcCommunicatorTestcompares message fields instead ofDebugString()output (6.33 prefixes agoo.gle/debugprotomarker — the format was never stable);-fpermissiveremoved from proto-rpc (GCC-only, plan item).Verification
platform=iOS,minos=13.0, no post-deployment-target runtime symbols)iosbuild)Follow-ups
🤖 Generated with Claude Code