Skip to content

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

Open
bmehta001 wants to merge 3 commits into
microsoft:mainfrom
bmehta001:fix/apple-vcpkg-package-dependencies
Open

bmehta001 wants to merge 3 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.280.1 and its corresponding SPM version 3.10.280.
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, composable TLS features, all compatible opt-in controls, and no private SQLite/local-source override. Promote the complete registry recipe through the release helper instead of copying the development overlay.
  • 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, opt-ins, platform/linkage choices, TLS unions, 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.

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
…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

This branch has not been deployed

No deployments
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