Repository navigation
build(release): restore Intel macOS package support - #208
Conversation
…ckage-support # Conflicts: # .github/workflows/ci.yml # README.md
Cache both direct Cargo artifacts and Corrosion CMake artifacts for native package jobs.
There was a problem hiding this comment.
Selecting the cached effective Rust target keeps the macOS export shim active for inferred native targets as well as explicit Intel and ARM targets. The Intel packaging path retains the shared export policy from merged #201, with architecture, export, install-name, dependency, and installed static/shared consumer checks before archiving. The Windows package paths, archive layout, and published v0.1.9 recipe mappings remain preserved.
Native Intel macOS linking and dataset execution remain unverified in this review. The staging and consumer guards limit distribution risk, and the 180-minute Intel build budget allows more compilation time without establishing runtime acceptance. The macOS 11 deployment target remains build metadata rather than a verified runtime guarantee.
Windows DLLs can export dependency symbols from both rustc's generated DEF and native archive members selected by ordinary references. Generate an export object and matching import library from the public C header with MSVC `lib.exe`, then supply that export object to the final `link.exe` invocation. The linker wrapper uses rustc's actual `/IMPLIB` path, including UTF-16 response-file arguments, without assuming a Cargo output layout. Cargo and Corrosion select the wrapper for supported x64/ARM64 MSVC targets; Corrosion uses the effective cached target for native and explicit configurations. Staging requires the DLL and import library export sets to equal the header declarations, including rejection of foreign import-library names. Native regression tests reproduce an ordinary-reference archive export leak, verify the corrected wrapper, and link/run a shared C consumer. Existing full installed static/shared consumers remain required. The policy uses MSVC `link.exe`; `lld-link` is not supported. Static archives, native dependency sources, assembly and CRT policy remain unchanged. Full Windows product acceptance passed at `70e1452` with Rust 1.94.0: [x64](https://github.com/lance-format/lance-c/actions/runs/43140931465/job/130959637019) on Windows Server 2022 `10.0.20348`, and [ARM64](https://github.com/lance-format/lance-c/actions/runs/43140931465/job/130959692211) on Windows 11 Enterprise `10.0.26200`. The tested merge checkout has the same tree as the PR head. Each DLL and import library has exactly 878 header-declared symbols and no dependency exports. Both installed static/shared C++ consumers passed create/reopen/scan, Arrow release counts, last-error ownership and clone-after-close. The archive-reference regression and shared C probe passed on both architectures. All nine checks succeeded; Clippy's initial apt mirror failure was resolved by one bounded retry that actually executed Clippy. Both uploaded artifacts were downloaded and matched their API/upload ZIP digests. Independent inspection of the downloaded PE32+ DLLs and COFF import archives confirmed architecture and exact 878-symbol equality to the packaged header. Headers match source after Windows CRLF normalization. Raw logs, per-file hashes and exact symbol lists are retained in the maintenance evidence. NieR Rust 1.94.0 Clippy, full Rust tests and all 13 C/C++ consumer groups passed at `6350a95`; the final `70e1452` delta only corrects two Windows CMake target predicates. Main advanced through #208 after these Windows builds. The clean integration retains the tested Windows export wrapper, build inputs, staging verifier and consumer source. Incoming changes select the Apple linker correctly and update packaging/cache paths; Windows build flags and runtime checks are unchanged. This integration assessment is source-based, not a claim that the combined tree was executed. Runtime acceptance is limited to the named OS versions. `VCRUNTIME140.dll` remains a dependency; CRT portability is tracked separately in #215. No tag or release was published. Fixes #214.
Restore native Intel macOS release builds on
macos-15-intel. CI exercises direct Cargo and Corrosion Release/install builds, verifies architecture, exact exports, install names and runtime dependencies, then uploads a candidate archive with hashes. Installed static and shared consumers read the historical dataset and exercise create/reopen/scan, Arrow ownership and cloned-handle lifetime.Corrosion's inferred native target is scoped to its own directory. Select the export linker using FindRust's effective cached target so default-host and explicit-target builds both apply the macOS export policy. A Darwin configure check inspects the generated Cargo command before compiling. Keep strict staged-export validation, the 180-minute Intel cold-build budget, and caching of both direct Cargo and actual Corrosion target directories.
The integration retains merged Windows x64/ARM64 acceptance and the existing platform jobs. Documentation distinguishes the eight future release archive rows from the five historical v0.1.9 assets; Intel package recipes continue to use source builds until a matching release exists.
Validation: native Intel CI run 43137215582 passed on macOS 15.7.9 with Rust 1.99.1. The tested merge tree equals head
6049384(tree551d11b). Both direct Cargo and stripped Corrosion Release dylibs have exactly 878 header-declared exports. Mach-O architecture, install-name and dependency checks passed. Installed static/shared consumers each read the historical 512-row/version-2 dataset and passed create/reopen/scan, Arrow release counts, last-error ownership and clone-after-close acceptance. All 10 checks passed, including the separate Rust 1.94.0 MSRV job.The uploaded candidate ZIP was downloaded and matched its recorded SHA-256; the enclosed tarball matched both SHA-256 and SHA-512, and packaged headers/libraries matched the exercised source and staging hashes. Tarball SHA-256:
2ba03fa1d859a64d23f2322c67d515cf58459a380b98295d2e809fd4700c8a24.This establishes Intel candidate build/package/runtime acceptance on macOS 15.7.9.
minos 11.0remains deployment metadata, not an older-OS runtime guarantee. No tag or release was published; historical v0.1.9 recipe mappings remain unchanged.Part of #103.