briefcase icon indicating copy to clipboard operation
briefcase copied to clipboard

allow for bundling 3rd-party platform-specific frameworks (on macOS)

Open glyph opened this issue 9 months ago • 3 comments

What is the problem or limitation you are having?

I want to have the mac version of my apps auto-update with Sparkle, so that it will present a familiar update UX as well as working with 3rd-party tools such as MacUpdater; I also have certain other platform-specific functionality I'd like to be able to include, such as MASShortcut.

Describe the solution you'd like

Something like py2app's frameworks= option, although possibly labeled in a much more platform-specific way.

Describe alternatives you've considered

Right now I just use py2app.

Additional context

No response

glyph avatar Mar 02 '25 22:03 glyph

Agreed this is a problem that needs a solution. What you've expressed here is effectively a macOS interpretation of #485.

The naïve first-pass solution would be to add a frameworks setting:

[tool.briefcase.myapp.macOS]
...
frameworks = [
    "/path/to/Something.framework"
]

that will copy any listed frameworks into the app bundle's Frameworks folder prior to app signing. I'm not 100% sure if that's sufficient, or if we'd also need to do delocate handling or any other path loading to ensure that frameworks are available.

freakboy3742 avatar Mar 03 '25 01:03 freakboy3742

Or more generally, we could add an option to copy arbitrary content into the bundle – essentially the opposite of cleanup_paths. This would go some way towards supporting the "use briefcase just for codesigning and archiving, on an existing app bundle" workflow discussed in https://github.com/glyph/Encrust/issues/2.

mhsmith avatar Mar 03 '25 10:03 mhsmith

I think that having a frameworks = declaration provides a lot more high-level information about what the user is trying to do, which briefcase could potentially use to, for example, construct better error messages. I don't think there needs to be all that much special handling for .framework directories, but there might need to be a bit, and it would be a shame to lose the information that the desired thing being bundled is a framework.

That said of course you could just attempt to magic this information out of the file extension or something, but that seems worse.

glyph avatar Mar 03 '25 16:03 glyph