bazelbuild / bazelbuild/rules_apple

Question about code signing Mac frameworks that include dynamic libraries

Open
#2,366 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Starlark
Stars
593
Forks
334
Avg merge
16h 48m
Merged PRs (30d)
9

Description

This is more of a question than a bug report: we're using a `apple_dynamic_framework_import` to bring in the Electron framework (not a very common thing to do, I'll admit). This framework includes more than just a dynamic library, there are a number of other libraries:

```
/Applications/Dropbox.app/Contents/Frameworks/Electron Framework.framework
├── Electron Framework -> Versions/Current/Electron Framework
├── Libraries -> Versions/Current/Libraries
├── Resources -> Versions/Current/Resources
└── Versions
├── A
│   ├── Electron Framework
│   ├── Libraries
│   │   ├── libEGL.dylib
│   │   ├── libGLESv2.dylib
│   │   ├── libffmpeg.dylib
│   │   ├── libswiftshader_libEGL.dylib
│   │   ├── libswiftshader_libGLESv2.dylib
│   │   ├── libvk_swiftshader.dylib
│   │   └── vk_swiftshader_icd.json
[...]
```

I've noticed that when the imported framework is bundled in the application, these libraries are not re-signed like the main library would be. Is this technically an oversight in importing frameworks? I suspect the same issue applies to nested frameworks?

Contributor guide

Open the contributing guide

Research direction

Start at the apple_dynamic_framework_import rule and trace how an imported framework is bundled into the application. Reproduce the Electron Framework.framework layout shown in the issue, then inspect whether files under its Libraries directory and nested frameworks are included in signing. Done means confirming the expected signing behavior and documenting or fixing the identified gap.

Written by the indexing model from the issue text.

Assessment

Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.