-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[NativeAOT] Extend the runtime pack approach to all supported platforms #87060
Comments
Tagging subscribers to 'os-ios': @steveisok, @akoeplinger Issue DetailsDescriptionCurrently when targeting iOS-like platforms with NativeAOT, the build process will also download the host's runtime package ( To improve the cross-compilation and integration experience further, all host/target platforms should be supported in the same fashion producing two nuget packages:
This should be an extension to: #85047 where NativeAOT runtime packs are initially supported only for iOS/tvOS/Catalyst target platforms. NoteThis should also simplify and improve the way packages are built.
./build.sh clr+clr.aot+libs+packs
./build.sh clr.nativeaotlibs+clr.nativeaotruntime+libs+packs /p:BuildNativeAOTRuntimePack=true which involves long build times and building unnecessary components.
|
@akoeplinger do you think we can close #67080 in favor of this issue? It looks like they're both about the same thing, but this one has a more clear implementation approach. |
The last thing that's left is unconditionally enabling |
One thing I would like to understand is how does it affect debugging. In the existing scheme, the PDBs (both for managed code and for the native parts on Windows) are part of the shipping package. In the new scheme, I see that they're extracted to a separate .Symbols package. Can ILC/link.exe see those? |
Just for the clarification, did you mean that we would remove the said property? |
I am not sure how the SDK versioning works, so we may need to keep it to allow building net8.0-XXX TFM with net9 SDK. |
I might be wrong, but I think we are using the currently installed SDK's version of |
@MichalStrehovsky it should work the same way as when publishing a self-contained CoreCLR app. The symbols are ingested into the Microsoft Symbol Server during the official build / release. When debugging Visual Studio downloads them from there or you can use the
Kind of, we'd need to keep the property to opt in a .NET 8 app when building from a 9 SDK. I think it is easier if we just default it to true for TF >= 9 |
Yes, that. ILC picks up managed debug info and produces native debug info out of that. This gets passed to the platform linker that produces the final debug info. On Windows, we also need the pdb for obj/lib files (they are separate from object files on Windows). |
Ok, looks like there's an option called |
Turned out that |
* Include symbols in main package for NativeAOT runtime packs See #87060 (comment) * PR feedback Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com> --------- Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…6675) * Include symbols in main package for NativeAOT runtime packs See dotnet#87060 (comment) * PR feedback Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com> --------- Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Can't really do much about this due to reasons discussed in dotnet/sdk#37872 (comment). We can't make progress on this until running the Publish target without also setting |
Description
Currently when targeting iOS-like platforms with NativeAOT, the build process will also download the host's runtime package (
osx
), even though it is unused.Apart from that, workloads that want to integrate with NativeAOT need to take into account the opt-in property:
PublishAotUsingRuntimePack
introduced here: dotnet/sdk#32100To improve the cross-compilation and integration experience further, all host/target platforms should be supported in the same fashion producing two nuget packages:
Microsoft.DotNet.ILCompiler
- carrying only the tools and build integration targetsMicrosoft.NETCore.App.Runtime.NativeAOT.<os>-<arch>
- carrying target runtime and framework librariesThe need for
PublishAotUsingRuntimePack
would become redundant.This should be an extension to: #85047 where NativeAOT runtime packs are initially supported only for iOS/tvOS/Catalyst target platforms.
Note
This should also simplify and improve the way packages are built.
For example, in order to build all the required packages to build an
ios
application with NativeAOT:Microsoft.DotNet.ILCompiler
package for the host -osx
Microsoft.NETCore.App.Runtime.NativeAOT.ios-arm64
package for the target -ios
:which involves long build times and building unnecessary components.
The text was updated successfully, but these errors were encountered: