Summary
The official macOS Intel (x86_64) bundled app fails to launch on a clean Intel Mac:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /Applications/napari (0.7.1).app/Contents/MacOS/napari-071
Reason: image not found
Reproduced with napari 0.7.0 and 0.7.1 Intel installers. Apple Silicon bundles are
not affected.
Root cause (upstream)
Contents/MacOS/napari-071 is menuinst's Swift appkit_launcher. It links the Swift
runtime (libswiftCore etc.) non-weak via @rpath. The launcher source ships with a
/usr/lib/swift RPATH, but conda package binary relocation strips that RPATH when
the menuinst conda-forge package is built, so the shipped launcher can't locate the OS
Swift runtime on Intel. (Apple Silicon is fine: arm64 dyld resolves Swift from the dyld
shared cache without the RPATH.)
Why this matters for napari
napari's macOS installers are built via conda constructor + menuinst, so all Intel
bundles are currently unlaunchable. Once the fixed menuinst package is published,
napari/packaging needs to pick it up and rebuild the Intel installers (and ideally
re-release 0.7.x Intel artifacts).
Environment
- macOS 13.7.8 (22H730), Intel (MacBookPro14,1), x86_64
- napari 0.7.0 and 0.7.1 official macOS Intel installers
Workaround for affected users (until a fixed build ships)
Re-add the RPATH to the bundled launcher (do not rename the .app — the launcher
locates its wrapped app by bundle name):
APP="/Applications/napari (0.7.1).app"
sudo install_name_tool -add_rpath /usr/lib/swift "$APP/Contents/MacOS/napari-071"
sudo codesign -f -s - "$APP/Contents/MacOS/napari-071"
Summary
The official macOS Intel (x86_64) bundled app fails to launch on a clean Intel Mac:
Reproduced with napari 0.7.0 and 0.7.1 Intel installers. Apple Silicon bundles are
not affected.
Root cause (upstream)
Contents/MacOS/napari-071is menuinst's Swiftappkit_launcher. It links the Swiftruntime (
libswiftCoreetc.) non-weak via@rpath. The launcher source ships with a/usr/lib/swiftRPATH, but conda package binary relocation strips that RPATH whenthe
menuinstconda-forge package is built, so the shipped launcher can't locate the OSSwift runtime on Intel. (Apple Silicon is fine: arm64 dyld resolves Swift from the dyld
shared cache without the RPATH.)
build.dynamic_linking.binary_relocation: false)Why this matters for napari
napari's macOS installers are built via conda constructor + menuinst, so all Intel
bundles are currently unlaunchable. Once the fixed
menuinstpackage is published,napari/packagingneeds to pick it up and rebuild the Intel installers (and ideallyre-release 0.7.x Intel artifacts).
Environment
Workaround for affected users (until a fixed build ships)
Re-add the RPATH to the bundled launcher (do not rename the .app — the launcher
locates its wrapped app by bundle name):