Skip to content

ci(macos pip): pin floor to 12.0 to fix ld64.lld version-skew warnings#6061

Draft
Grantim wants to merge 6 commits into
masterfrom
macos-pin-floor-12.0
Draft

ci(macos pip): pin floor to 12.0 to fix ld64.lld version-skew warnings#6061
Grantim wants to merge 6 commits into
masterfrom
macos-pin-floor-12.0

Conversation

@Grantim
Copy link
Copy Markdown
Contributor

@Grantim Grantim commented May 7, 2026

Summary

Fixes ld64.lld version-skew warnings during pip-build's mrbind link by pinning all input dylib floors at minos=12.0. Pre-fix: brew Sequoia bottles at 14.0, in-tree libs at 15.0 (runner default), mrbind target at 12.7. Now all three at 12.0 — CMAKE_OSX_DEPLOYMENT_TARGET in shared DefaultOptions.cmake (covers both MeshLib and MeshInspectorCode via existing include(DefaultOptions)), brew install --bottle-tag=monterey (or arm64_monterey) in install_brew_requirements.sh, MACOS_MIN_VER=12.0 in pip-build.yml.

Wheel plat-name (macosx_12_0_*) stays — the wheel claim now matches actual minos for the first time (pre-fix it lied: mrbind already required 12.7).

MIC's existing inline pin at CMakeLists.txt:22 becomes a redundant no-op once this lands; can be removed in a follow-up cleanup PR.

Test plan

  • Install thirdparty libs step succeeds (or fails fast with a clear "no monterey bottle" error — fallback to ventura per the plan).
  • otool -l build/Release/bin/libMRMesh.dylib shows minos 12.0 (was 15.0).
  • Zero ld64.lld: warning: ... newer than target minimum lines in the Generate and build MRBind bindings step log.

CI scope: test-pip-build enables pip-build.yml; disable-build-* labels skip non-macOS platforms.

🤖 Generated with Claude Code

mrbind link target was 12.7, in-tree libs 15.0 (runner default), and
brew bottles 14.0. Pin all three to 12.0 via shared DefaultOptions.cmake,
brew --bottle-tag=monterey, and an updated MACOS_MIN_VER. Wheel plat-name
macosx_12_0_* now matches actual minos for the first time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Grantim and others added 5 commits May 7, 2026 15:19
…rce instead

CI revealed brew install rejects --bottle-tag (the flag is only valid for
brew fetch / brew bottle). Swap to --build-from-source on jsoncpp, openvdb,
opencascade, and tbb — the four libs that link into the wheel — so they
honor MACOSX_DEPLOYMENT_TARGET=12.0. Adds ~30-40 min to macOS pip-build CI
(opencascade is the bulk).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Companion to PR #6058. PR-A stripped our own libs at link; this strips
the third-party deps that we bundle into wheels/.pkg/NuGet/etc.

- Linux: VCPKG_LINKER_FLAGS_RELEASE -Wl,-s in x64+arm64 triplets so vcpkg
  ports drop .symtab/.strtab/.debug_* during their own release link
  (~15 MB across the bundled chain). Strip-at-link sidesteps the patchelf
  alignment bug that broke #6057's auditwheel --strip attempt.
- macOS: chmod +w + strip -x every brew dylib in install_brew_requirements.sh
  so delocate-wheel/install_name_tool/.pkg copy already-trimmed binaries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces --build-from-source with the documented cross-tag bottle path:
brew fetch downloads the monterey-tagged bottle into the cache, then we
install from the cached tarball with --force-bottle. Avoids the ~30-40 min
source-build cost while still getting minos=12 dylibs for the four libs
that link into the wheel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…stics

Previous iteration set --force-bottle on brew fetch (mutually exclusive
with --bottle-tag, hard error) and didn't use set -e, so the failure
silently fell through and the catchall brew install proceeded with default
Sequoia bottles. Warnings stayed.

This iteration: drop --force-bottle from both fetch and install (we don't
need it — we're passing a local tarball path), add set -e around the
cross-tag block, and log the cached path + ls before each install so we
can see what brew actually got.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
\$BREW_PREFIX/lib contains only symlinks into Cellar/, so the previous
find -type f matched nothing. Walking Cellar reaches the real .dylib
files. Verified separately: linux vcpkg side stripped libopenvdb.so
.strtab from 2.07 MB to 0; mac libopenvdb.dylib __LINKEDIT was unchanged
because of this bug.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant