Repository navigation
Conversation
Fix MSVC language feature detection, runtime selection, native ARM64 builds, dependency downloads and relocatable library paths. Export headers, CMake and pkg-config metadata, static dependencies and native package components. Record the resolved CRT and runtime filename in build-tree and installed SDK metadata so independent consumers can select matching compiler options. Allow existing API tests to consume an installed SDK and include dependency-download regression tests. Inherit the selected compiler in isolated ANTLR4 dependency test configurations.
Build native SDKs, DEB/RPM packages, Windows ZIPs, Homebrew bottles and Python 3.9-3.14 wheels. Reuse SDKs and automatically read their MSVC runtime configuration. Ship runtime-only wheels with one native library, stripped Unix binaries and license texts; reject build-only files, duplicate libraries and ELF debug sections. Test every installed package, wheel and relocated SDK in fresh jobs using existing C++ and Go tests, CLI operations on Python resources and the full pytest suite. Gate checksummed bundle assembly on all test matrices and retire the separate wheel workflow.
|
Include bundled and system link dependencies in static pkg-config metadata, with per-configuration archive paths and C++ runtime flags. Preserve CMake's build-tree CLI RPATH while keeping relocated installations working in lib64 and multiarch layouts. Align exported path-parser macros with the library's object targets to resolve Linux Debug UTF-8 failures. Exercise installed C and C++ consumers with real codec round trips and run the installation regressions in CI.
|
Thanks @hongzhi-gao for the review. Both points in your comment are addressed in 81f8b8f.
All 11 native-install tests passed on both macOS ARM64 and Linux ARM64. These installation regressions now also run in the dependency-source PR workflow. The new PR CI run is still in progress, with no failed checks so far. |
Native C++ releases need installable SDKs and platform packages with consistent bundled dependencies, and downloaded artifacts need validation before publication. This adds one manually dispatched workflow that builds native packages and Python wheels, tests their installed contents, and assembles a checksummed bundle only after every required platform succeeds.
Changes
BUNDLEDdependencies. Make bundled dependencies the CMake/Maven default, remove Homebrew codec dependencies, and reject external third-party dylib references in macOS bottles and SDKs.tsfileFormula, Windows x86_64/ARM64 ZIPs, and 30 Python wheels covering CPython 3.9–3.14 on five platforms. Reuse staged SDKs instead of rebuilding the C++ core for every wheel.manifest.jsonandSHA256SUMSwith exact source identity, versions, sizes and hashes. C++ publication targets use thereleasepaths/components intsfile,tsfile-debianandtsfile-rpm; Python entries contain no Apache repository target and retain the separate PyPI publication process.The workflow is release-only: it accepts
MAJOR.MINOR.PATCHsource versions and rejects development/prerelease versions before building. It runs only throughworkflow_dispatch, has read-only repository permissions, and does not publish packages, sign artifacts, create releases or updatelatest.This PR preserves develop's C++/Python
2.5.1.devand Maven2.5.1-SNAPSHOTversions. Version-helper success tests use a temporary release fixture so the helper tests also run in a development checkout; development-version rejection remains covered.Validation
On this develop-based branch:
-fsigned-charto match Ubuntu x86_64 golden-output assumptions.Before porting the packaging commits to develop, the release-based implementation at
d8b70c69b72fa7924bb29cd3995b7d9854aef983passed the complete multi-platform native release workflow: 60/60 jobs successful. That run is evidence for the release-based implementation; it is not a run of this PR's develop-based head.Related: #1012 (the existing rc/2.5.0 PR).