Skip to content

Prepare 3.10.281.1 with isolated SQLite and provider-aware packages - #1548

Merged
bmehta001 merged 6 commits into
microsoft:mainfrom
bmehta001:fix/apple-vcpkg-package-dependencies
Oct 8, 2026
Merged

bmehta001 merged 6 commits into
microsoft:mainfrom
bmehta001:fix/apple-vcpkg-package-dependencies

Conversation

@bmehta001

@bmehta001 bmehta001 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Prepare SDK release 3.10.281.1 and its corresponding SPM version 3.10.281.
Regenerate the public version header through the existing Windows generator and
verify the same version with the Linux generator.

Expand the original Apple export fix into release-ready dependency packaging and bundled SQLite isolation. Published SDK/SPM tags remain unchanged; microsoft/vcpkg#54342 keeps its compatibility patch against the immutable older release.

  • Record each dependency's actual provider before SDK lookups can create transitive targets. Static configs reconstruct the selected package family, Apple system library, bundled archive, or caller-provided target independently. Shared packages do not rediscover private SQLite/zlib/curl dependencies. Missing caller-provided targets fail explicitly rather than silently switching providers.
  • Preserve both MINIMAL and VENDORED SQLite with SDK-private function/data names, including Windows-only APIs and debug globals absent from sqlite3.h. Apply the forced renaming header only to SDK-owned code and tests; do not export it to consumers.
  • Maintain a separate registry release recipe with required external dependencies in core and only additive device-ID/Android C API callback features. Fix transports per platform: WinHTTP, Android Java/JNI, Apple-native HTTP, and Linux curl/OpenSSL. Keep alternative transports and subtractive controls in source/private-overlay builds, not dependency features.
  • Add real-helper generated-config regressions, actual source-provider assertions, missing-target failures, registry graph/feature tests, and source/installed SQLite coexistence CI across Windows, Linux, and macOS.

Validation

Local validation Result
Windows VS 2026 and Linux/GCC: static/shared x MINIMAL/VENDORED x source/installed consumers All 16 coexistence runs passed with a separate full application SQLite
Minimal SQLite offline-storage/compression unit suites, Release Windows: 104 passed; Linux: 106 passed
Minimal SQLite offline-storage/compression unit suites, Debug Windows: 103 passed; Linux: 105 passed
Independently installed Debug minimal SDK with full application SQLite Windows and Linux passed
Producer SQLite API/data symbol audits No unprefixed global SQLite APIs in any static/shared MINIMAL/VENDORED Release archive or the minimal Debug archives
Actual installed-config helper fixtures 44 provider combinations and 3 missing-target failures passed on each OS
Complete registry promotion and safety checks All 13 Python tests passed on each OS
Development overlay and registry feature mappings Core/default/additive feature unions, fixed platform transports, static/shared choices, and pinned-source bypass guard passed
Actual caller-provided source and installed consumer Linux passed, including recorded provider assertions
Existing repository spellcheck, whitespace checks, and new C++ formatting Passed

No test exclusions were added. Offline-storage runs select the relevant suites, not the entire unit suite. The existing one-second throughput test is Release-only (NDEBUG) and passed there; Debug retains its original non-timing coverage. The generated-config fixtures exercise the actual helpers with controlled package targets; they are not native Apple builds.

Maintainer review corrections

Address the five new findings on microsoft/vcpkg#54342 in the recipe that the
next release will promote:

Finding Correction
no-exceptions belongs to toolchain/triplet policy Remove the registry feature and its per-feature compiler-policy mapping
no-logging is subtractive Remove the registry feature; preserve SDK source/private-overlay configuration
Required SQLite needs no feature label Remove system-sqlite and the likewise redundant curl-openssl label
Android curl/WinInet features replace native transports Remove alternative transport features and select Java/JNI and WinHTTP explicitly
TLS features do not select an SDK runtime backend Remove SDK TLS-backend features; retain the declared Linux curl/OpenSSL dependency

The retained Android C API callback feature is genuinely additive: the Java
transport remains compiled and selected, and a custom client is installed only
when the caller supplies both callbacks at runtime. Device-ID collection adds
behavior without changing the public API. The promotion helper rejects all nine
unsupported features before replacing the destination port; Windows/Linux
promotion, feature-map, unchanged development-overlay, and existing lint checks
passed. No SDK transport implementation was changed.

These fixes are in the upstream promotion recipe; the unmerged registry PR still
needs the corrected recipe and new archive pin after the next release is published.

Native Apple/Android validation and the remaining upstream workflows must pass for this expanded head before merging. The committed registry recipe is a promotion template: the release helper must replace its version/tag/hash with the forthcoming release containing these fixes, followed by exact published-archive graph validation. Do not reuse or move the already published tags.

Match installed dependency discovery to the build so Apple consumers do not silently switch SQLite or zlib providers. Preserve non-vcpkg Apple behavior and shared-package dependency isolation.

Files: cmake/MSTelemetryConfig.cmake.in, tests/vcpkg/package-dependency-tests.cmake, .github/workflows/test-vcpkg.yml, docs/maintainer-onboarding.md, docs/building-with-vcpkg.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812576a3-8932-4848-bc8b-d17af18f65f2
@bmehta001
bmehta001 requested a review from a team as a code owner October 7, 2026 03:38
@bmehta001 bmehta001 assigned bmehta001 and Copilot and unassigned bmehta001 and Copilot Oct 7, 2026
…k conflicts

Record dependency provenance before SDK discovery creates transitive targets,
so static consumers reconstruct the same providers and shared consumers do not
acquire private package requirements. Require caller-provided targets explicitly.

Namespace bundled SQLite functions and data from the header and both
amalgamations, including Windows APIs and debug globals. Keep the forced include
private so minimal and full SDK SQLite coexist with application SQLite.

Separate the registry promotion recipe from development-only overlay behavior:
pin archives, keep required external dependencies in core, and allow TLS unions.
Exercise provider metadata, missing-target errors, release promotion, and
source/installed coexistence without weakening existing tests.

Files changed:
- .github\scripts\prepare-vcpkg-release.py
- .github\workflows\test-embedding.yml
- .github\workflows\test-vcpkg.yml
- CMakeLists.txt
- cmake\MSTelemetryConfig.cmake.in
- cmake\MatsdkDependencyTargets.cmake
- cmake\MatsdkSqliteNamespace.cmake
- docs\building-with-vcpkg.md
- docs\maintainer-onboarding.md
- lib\CMakeLists.txt
- tests\embedding\CMakeLists.txt
- tests\package-coexistence\CMakeLists.txt
- tests\package-coexistence\main.cpp
- tests\package-dependencies\CMakeLists.txt
- tests\vcpkg\CMakeLists.txt
- tests\vcpkg\native-feature-tests.cmake
- tests\vcpkg\package-dependency-tests.cmake
- tests\vcpkg\test-release-port.py
- tools\registry-ports\cpp-client-telemetry\portfile.cmake
- tools\registry-ports\cpp-client-telemetry\vcpkg.json

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812576a3-8932-4848-bc8b-d17af18f65f2
@bmehta001 bmehta001 changed the title Fix Apple vcpkg package dependency exports Isolate bundled SQLite and make release packages provider-aware Oct 7, 2026
Regenerate the public version for SDK 3.10.280.1 and SPM 3.10.280 without changing published tags or the generator policy.

Files changed: lib\include\public\Version.hpp

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812576a3-8932-4848-bc8b-d17af18f65f2
@bmehta001 bmehta001 changed the title Isolate bundled SQLite and make release packages provider-aware Prepare 3.10.280.1 with isolated SQLite and provider-aware packages Oct 7, 2026
bmehta001 and others added 2 commits October 8, 2026 01:12
…compatible

Address microsoft/vcpkg#54342 maintainer feedback:
- Remove no-exceptions from dependency features; it belongs to toolchain policy.
- Remove subtractive no-logging and redundant system-sqlite/curl-openssl labels.
- Remove Android curl and WinInet alternatives rather than replacing another
  dependent's native transport. Select Java/JNI and WinHTTP explicitly.
- Remove SDK TLS features that do not select a runtime TLS backend.

Keep device-id and Android runtime custom-client callback support additive.
Preserve SDK source/private-overlay options and mandatory external dependencies.
Reject all unsupported features during promotion and verify fixed transports
for core, defaults, and retained feature unions on every supported platform.

Files changed:
- .github\scripts\prepare-vcpkg-release.py
- .github\workflows\test-vcpkg.yml
- docs\building-with-vcpkg.md
- docs\maintainer-onboarding.md
- tests\vcpkg\native-feature-tests.cmake
- tests\vcpkg\test-release-port.py
- tools\registry-ports\cpp-client-telemetry\portfile.cmake
- tools\registry-ports\cpp-client-telemetry\vcpkg.json

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812576a3-8932-4848-bc8b-d17af18f65f2
Regenerate the public SDK version and advance the corresponding SPM version to 3.10.281 without modifying published tags.

Files changed: lib\include\public\Version.hpp

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812576a3-8932-4848-bc8b-d17af18f65f2
@bmehta001 bmehta001 changed the title Prepare 3.10.280.1 with isolated SQLite and provider-aware packages Prepare 3.10.281.1 with isolated SQLite and provider-aware packages Oct 8, 2026
Keep dependency discovery at package-config scope so optional SDK lookups
cannot report success with missing dependencies. Use dependency kind as the
single reconstruction policy and validate the exact registry feature set.
Cover missing packages and bundled TLS providers, and keep documentation
focused on supported behavior and actionable release steps.

Files changed:
- .github/scripts/prepare-vcpkg-release.py
- CMakeLists.txt
- cmake/MSTelemetryConfig.cmake.in
- cmake/MatsdkDependencyTargets.cmake
- docs/building-with-vcpkg.md
- docs/maintainer-onboarding.md
- tests/package-dependencies/CMakeLists.txt
- tests/vcpkg/package-dependency-tests.cmake
- tests/vcpkg/test-release-port.py

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 281bc9f7-c6f9-4704-babe-5f2c1360ff0f

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Cross-platform packaging, ABI isolation, and native Apple/Android behavior still require the pending platform workflows and human validation.

0 open findings

What changed in this PR

Prepares SDK 3.10.281.1 with isolated bundled SQLite symbols and provider-aware package exports, while separating the vcpkg registry recipe from the development overlay.

Changes:

  • Namespaces bundled SQLite and adds coexistence coverage.
  • Records and reconstructs static-package dependency providers.
  • Adds a registry-specific vcpkg recipe, promotion safeguards, documentation, and CI coverage.
File Description
tools/​registry-ports/​cpp-client-telemetry/​vcpkg.json Defines the registry dependency and additive-feature graph.
tools/​registry-ports/​cpp-client-telemetry/​portfile.cmake Configures fixed platform transports and system dependencies.
tests/​vcpkg/​test-release-port.py Tests registry recipe promotion and validation.
tests/​vcpkg/​package-dependency-tests.cmake Exercises generated dependency configurations.
tests/​vcpkg/​native-feature-tests.cmake Verifies registry and overlay feature mappings.
tests/​vcpkg/​CMakeLists.txt Supports caller-provided dependency tests.
tests/​package-dependencies/​CMakeLists.txt Provides generated-config dependency fixtures.
tests/​package-coexistence/​main.cpp Tests private and application SQLite coexistence.
tests/​package-coexistence/​CMakeLists.txt Builds source and installed coexistence consumers.
tests/​embedding/​CMakeLists.txt Asserts recorded provider provenance.
lib/​include/​public/​Version.hpp Updates the SDK version to 3.10.281.1.
lib/​CMakeLists.txt Applies private SQLite namespacing and exports bundled archives.
docs/​maintainer-onboarding.md Updates registry promotion instructions.
docs/​building-with-vcpkg.md Documents recipe policies and dependency reconstruction.
CMakeLists.txt Records resolved dependency kinds and package families.
cmake/​MSTelemetryConfig.cmake.in Reconstructs dependencies for installed static packages.
cmake/​MatsdkSqliteNamespace.cmake Generates SQLite symbol-renaming definitions.
cmake/​MatsdkDependencyTargets.cmake Handles package, provided, bundled, and Apple dependencies.
.github/​workflows/​test-vcpkg.yml Adds registry and package-configuration checks.
.github/​workflows/​test-embedding.yml Adds installed-provider and SQLite coexistence matrices.
.github/​scripts/​prepare-vcpkg-release.py Promotes only validated registry recipes.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

@bmehta001
bmehta001 enabled auto-merge (squash) October 8, 2026 10:50
@bmehta001
bmehta001 merged commit 29d0083 into microsoft:main Oct 8, 2026
96 checks passed
@bmehta001
bmehta001 deleted the fix/apple-vcpkg-package-dependencies branch October 8, 2026 16:39
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.

4 participants