Comment 16 for bug 1825925

Revision history for this message
SirVer (sirver) wrote :

Ken, Toni, thanks for all your activity here! A few rebuddles:

> Don't all the dylibs in the macOS bundle need to be install_name_tool -id 'd as @executable_path/myname.dylib ?

It was my understanding that the IDs do not matter (since they are only a textual identifier without meaning to the dynamic linker), only the dependencies (i.e. lines 2 and later in otool -L <>), but having the IDs not changed makes the output of otool -L harder to read.

> I haven't used http://macdylibbundler.sourceforge.net/ a lot, tried it a few times. I thought it was supposed to make this automagical!

Actually, the python tool we use in Widelands was made out of frustration of macdylibbundler, which did not properly recurse. It's source was very hard to understand and it seemed abandoned, so I did not try to fix the upstream, replacing it with our Python script. Toni, the bugs are probably the reason why it did not work for the ZIP file either.

I modified the Python script to change the IDs and to not confuse the IDs with dependencies (this was a bug in the script, changes attached in the merge request attached to this bug), after this change I created a new build. After which running this I get:

otool -L WidelandsRelease/Widelands.app/Contents/MacOS/*.dylib WidelandsRelease/Widelands.app/Contents/MacOS/widelands | grep -v ':$' | grep -v @executable_path | sort -u
 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1671.10.106)
 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox (compatibility version 1.0.0, current version 492.0.0)
 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0)
 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 158.0.0)
 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)
 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1443.13.0)
 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1560.12.0)
 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1247.4.1)
 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 934.0.0)
 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo (compatibility version 1.2.0, current version 1.5.0)
 /System/Library/Frameworks/ForceFeedback.framework/Versions/A/ForceFeedback (compatibility version 1.0.0, current version 1.0.2)
 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1560.12.0)
 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
 /System/Library/Frameworks/Metal.framework/Versions/A/Metal (compatibility version 1.0.0, current version 1.0.0)
 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.11.0)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
 /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
 /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
 /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)
 /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
 /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
 /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)

which seems to look good. Unfortunately I cannot test the binary on my other Mac, since I do not have it on me right now. I uploaded this DMG to [4]. Toni, Ken, could you give this another spin?

[4] http://www.widelands.org/~sirver/wl/macos_daily/MACOS_10_9_OR_HIGHER/widelands_10.9_r9066.dmg, shasum 3f0807924ac2cf0a8fea3f8d86e6175aeb42dbbc