[msbuild] Don't add frameworks with static libraries to Hot Restart apps. by rolfbjarne · Pull Request #19300 · dotnet/macios (original) (raw)

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation21 Commits3 Checks0 Files changed

Conversation

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters

[ Show hidden characters]({{ revealButtonHref }})

rolfbjarne

The main problem is that an app with unsigned executable code will fail any signing
verification, and the app won't install on device.

This is implemented by doing two changes:

  1. Augment the FilterStaticFrameworks task to only filter out frameworks with
    static libraries (and thus keeping everything that's not a static framework, even
    if it's not even a framework).
  2. Execute the FilterStaticFrameworks task to filter out static frameworks from
    the entire list of files to bundle in the hot restart app bundle.

@rolfbjarne

…pps.

The main problem is that an app with unsigned executable code will fail any signing verification, and the app won't install on device.

This is implemented by doing two changes:

  1. Augment the FilterStaticFrameworks task to only filter out frameworks with static libraries (and thus keeping everything that's not a static framework, even if it's not even a framework).

  2. Execute the FilterStaticFrameworks task to filter out static frameworks from the entire list of files to bundle in the hot restart app bundle.

@vs-mobiletools-engineering-service2

This comment has been minimized.

emaf

@@ -32,6 +34,11 @@ public override bool Execute ()
continue;
}
if (OnlyFilterFrameworks && !Path.GetDirectoryName (frameworkExecutablePath).EndsWith (".framework", StringComparison.OrdinalIgnoreCase)) {
Log.LogMessage (MessageImportance.Low, $"Skipped processing {item.ItemSpec} because it's not a framework");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this should be logged as a warning instead. I know it could be annoying, but if we are choosing to ignore/skip static libraries, it means those are not supported in the current context.
And a warning could be a hint for crashes that may happen because those were not included in the app bundle?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already log a warning for static libraries we skip, this is logging all the other files this task just skips (i.e. don't filter out, so they'll end up in the app bundle).

emaf

emaf approved these changes Oct 23, 2023

mauroa

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@rolfbjarne

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

dalexsoto

@vs-mobiletools-engineering-service2

This comment has been minimized.

@rolfbjarne

mandel-macaque

@vs-mobiletools-engineering-service2

@vs-mobiletools-engineering-service2

@vs-mobiletools-engineering-service2

💻 [PR Build] Tests on macOS M1 - Mac Big Sur (11.5) passed 💻

All tests on macOS M1 - Mac Big Sur (11.5) passed.

Pipeline on Agent
Hash: [PR build]

@vs-mobiletools-engineering-service2

💻 [PR Build] Tests on macOS M1 - Mac Ventura (13.0) passed 💻

All tests on macOS M1 - Mac Ventura (13.0) passed.

Pipeline on Agent
Hash: [PR build]

@vs-mobiletools-engineering-service2

✅ API diff for current PR / commit

Legacy Xamarin (No breaking changes)

✅ API diff vs stable

Legacy Xamarin (No breaking changes)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: c70b9786025bafba2c238be71913daf2cc68b46a [PR build]

@vs-mobiletools-engineering-service2

@rolfbjarne

/sudo backport release/8.0.1xx

@rolfbjarne rolfbjarne deleted the hotrestart-filter-static-frameworks branch

October 25, 2023 06:46

@vs-mobiletools-engineering-service2

Backport Job to branch release/8.0.1xx Created! The magic is happening here

@vs-mobiletools-engineering-service2

dalexsoto pushed a commit that referenced this pull request

Oct 25, 2023

@vs-mobiletools-engineering-service2 @rolfbjarne

…s to Hot Restart apps. (#19336)

The main problem is that an app with unsigned executable code will fail any signing verification, and the app won't install on device.

This is implemented by doing two changes:

  1. Augment the FilterStaticFrameworks task to only filter out frameworks with static libraries (and thus keeping everything that's not a static framework, even if it's not even a framework).

  2. Execute the FilterStaticFrameworks task to filter out static frameworks from the entire list of files to bundle in the hot restart app bundle.

Backport of #19300


Co-authored-by: Rolf Bjarne Kvinge rolf@xamarin.com