4 ms·
That doesn’t match my mental model of how that works. Can you give me an example of a shared 3rd party framework that a Mac app bundle will find on the file sys
by peteretep 6y ago
That doesn’t match my mental model of how that works. Can you give me an example of a shared 3rd party framework that a Mac app bundle will find on the file system rather than just include in the bundle?
- josephg 6y agoSharing dynamically linked 3rd party frameworks on macos is relatively rare. But all the system built-in frameworks are shared via dynamic linking in userspace. (Eg Cocoa, UIKit, Foundation, etc). Native macos apps feel native because they dynamically link to the system's standard set of UI libraries. (And more recently font sets like SF Symbols.) For many reasons, none of that is available via docker. The GP is also referencing the fact that even if you somehow had access to cocoa from your linux binary inside your docker VM, the docker image doesn't / shouldn't have access to your host (macos's) filesystem. So the save / load dialog wouldn't work properly anyway.
- peteretep 6y ago> none of that is available via docker I'd expect someone building many tools like the author of the original piece is using the same shared image as the base for most of them?
- josephg 6y agoThe base shared image can't embed macos's system & UI libraries because: - They're proprietary. Copying them from macos onto docker hub violates the macos software license. - They change with each version of MacOS. You can't mix & match them. I guess you could mount them into docker's filesystem, but then whats the point of using docker? And even if you did that: - They're macos mach executable files. Linux (and therefore docker) doesn't know how to run mach executable files. - Even if you could somehow embed them and get them to run, the libraries wouldn't work because they expect to be making syscalls to Darwin. They can't do that from inside a linux virtual machine. You could probably make a weird RPC proxy involving a native macos process receiving network commands. But it should take a herculean effort to make it work at all, and even if you got it working it would probably be buggy (since everything would suddenly become async) and slow.
- saagarjha 6y agoIt’s rare, but if apps did want to do this the would typically place things at /Library/Frameworks for this purpose.