Skip to content

build(release): restore Intel macOS package support - #208

Merged
Xuanwo merged 33 commits into
mainfrom
xuanwo/intel-macos-package-support
Nov 12, 2026
Merged

Xuanwo merged 33 commits into
mainfrom
xuanwo/intel-macos-package-support

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

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 (tree 551d11b). 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.0 remains 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.

lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 11, 2026
…ckage-support

# Conflicts:
#	.github/workflows/ci.yml
#	README.md
@lance-gatekeeper lance-gatekeeper Bot removed K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 11, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 11, 2026
@lance-gatekeeper lance-gatekeeper Bot removed K-risk Latest Gatekeeper recommendation includes a non-blocking risk. K-approved Latest Gatekeeper recommendation permits acceptance. labels Nov 11, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 11, 2026
@lance-gatekeeper lance-gatekeeper Bot removed K-risk Latest Gatekeeper recommendation includes a non-blocking risk. K-approved Latest Gatekeeper recommendation permits acceptance. labels Nov 11, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 11, 2026
@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. and removed K-risk Latest Gatekeeper recommendation includes a non-blocking risk. K-approved Latest Gatekeeper recommendation permits acceptance. labels Nov 12, 2026
@lance-gatekeeper lance-gatekeeper Bot removed K-risk Latest Gatekeeper recommendation includes a non-blocking risk. K-approved Latest Gatekeeper recommendation permits acceptance. labels Nov 12, 2026

@lance-gatekeeper lance-gatekeeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Gate recommendation: approve with a non-blocking risk.

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.

@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk. labels Nov 12, 2026
@Xuanwo
Xuanwo merged commit f9e6f32 into main Nov 12, 2026
10 checks passed
@Xuanwo
Xuanwo deleted the xuanwo/intel-macos-package-support branch November 12, 2026 03:52
Xuanwo added a commit that referenced this pull request Nov 12, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

K-approved Latest Gatekeeper recommendation permits acceptance. K-risk Latest Gatekeeper recommendation includes a non-blocking risk.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant