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]
