bmehta001 opened a new pull request, #963:
URL: https://github.com/apache/arrow-nanoarrow/pull/963

   ## Problem
   
   With `NANOARROW_IPC=ON` and an external flatcc runtime, the exported static 
IPC target contains `$<LINK_ONLY:flatccrt>`, but the package does not define 
that target for its consumers. Standalone consumers therefore depend on 
incidental caller-defined targets or linker search paths. This affects 
build-tree exports as well as installed packages.
   
   The vcpkg port currently compensates on Windows by replacing this dependency 
with a Release-only library path; Unix consumers are left with the bare library 
name. A source-level fix lets package maintainers remove that workaround when 
updating nanoarrow.
   
   Related to #922 and microsoft/foundry-local#1187. This addresses exported 
dependency metadata, separately from #949's build-time static/shared runtime 
discovery.
   
   ## Changes
   
   - Give external runtime targets the actual name `nanoarrow::flatccrt`, 
rather than an alias of an unqualified imported target. CMake resolves imported 
aliases back to the underlying name when exporting them.
   - Preserve the existing vendored runtime export by adding its corresponding 
build-tree alias, and consistently use the namespaced target in IPC libraries 
and tests.
   - Resolve external Release/Debug runtime libraries during package discovery, 
using the package prefix, configured external locations, and consumer prefix 
paths. Report a normal package-not-found result when the runtime is unavailable.
   - Add a dependency-free regression driver and Windows/Linux/macOS CI 
coverage. It builds a real flatcc runtime from the existing vendored sources, 
then compiles and runs actual package consumers.
   - Document installed-package consumption and explicit runtime overrides.
   
   ## Validation
   
   Windows (Visual Studio 2026 / MSVC 19.51) and Linux (WSL / GCC 13.3):
   
   - 24 IPC consumer executions passed per platform: external root, separate 
include/library directories, and vendored runtime; Debug and Release; 
build-tree and relocated installed packages; caller-defined `flatccrt` declared 
both before and after package discovery.
   - All three Debug build modes also passed with nanoarrow's default extra 
warnings enabled.
   - Additional Debug/Release consumers passed with flatcc in a separate 
relocated prefix. Assertions checked the selected configuration-specific 
runtime path.
   - Missing-runtime package discovery returned the expected failure, including 
with `find_package(... QUIET)`.
   - Core-only Debug/Release consumers passed without creating or requiring a 
flatcc target.
   - The same regression driver on unmodified upstream failed with 
`flatccrt-NOTFOUND`, demonstrating that the test detects the original export 
defect.
   
   Regression entry point, from the repository root:
   
   ```sh
   python ci/scripts/test_cmake_package.py --build-dir build/package-tests
   ```
   
   On Windows the local run explicitly selected `CMAKE_GENERATOR=Visual Studio 
18 2026`.
   
   CMake formatting (0.6.13), Black (22.3.0), Flake8 (7.1.1), isort (5.12.0), 
codespell, workflow YAML parsing, and `git diff --check` passed. No runtime 
tests in these selections were skipped or excluded. Native macOS was not 
available locally; the added CI job covers it.
   
   AI assistance: GitHub Copilot assisted with implementation and regression 
coverage.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to