Skip to content

Pin and verify macOS native runtime deployment target #91

Description

@wieslawsoltes

Problem

The osx-arm64 runtime built on the current macOS runner passed its native/package tests but carried LC_BUILD_VERSION minos 26.5. The build script pinned CMAKE_OSX_DEPLOYMENT_TARGET=12.0 only when ThinLTO was enabled; the ordinary release package inherited the runner SDK default.

Observed package run: https://github.com/SceneTech/WebScene/actions/runs/35015648830
Observed dylib SHA-256: 4406a4b115939fcc9fc1089cbe0be484a87a6ac0bf8e7048bff2f65415c88e68

This silently makes consumers require macOS 26.5 even when their app and other packaged libraries declare an older minimum. Code OSS AppScene declares macOS 26.0, and its linker exposed the mismatch.

Proposed fix

Apply the existing 12.0 deployment target to every Darwin runtime build, independent of ThinLTO. Before dSYM generation, inspect the produced Mach-O with xcrun vtool and fail unless minos exactly matches the pinned target.

A package or consumer bundle may still have a higher effective minimum because of its other dependencies; the WebScene runtime must not raise it accidentally.

Acceptance

  • The macOS native runtime build and tests pass.
  • vtool reports minos 12.0 for the packaged WebScene dylib.
  • The build fails before packaging if a toolchain or runner silently changes that value.
  • Package and clean-consumer jobs remain green on macOS and Linux.

Implemented in commit 5baf7e5 on draft PR #76; keep it unmerged until the complete matrix and Code OSS release smoke pass.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions