-
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
Support Apple .dSYM bundles in symbol packages/indexing #92911
Comments
Tagging subscribers to this area: @dotnet/runtime-infrastructure Issue DetailsWe currently use .dwarf files, which are unsupported.
|
Some notes on this issue: Apple's supported symbol file format is the The .NET build process currently creates a single file for each executable file's symbols, with the file extension Creating a .dwarf file is done by running the It is best to consider a
A description of some of the challenges in converting the .NET build to using MSBuild files versus directoriesThe .NET build uses msbuild for most activities. MSBuild has a strong bias towards files and not directories, at least when it comes to item glob expressions. For example, using:
Will include all the Using:
Will include all the files in the MSBuild item transform globbingA lot of MSBuild code does transforms on items to form new items. One example is to transform a list of generated executables to a list of the related symbol files (or bundles):
This is a 1-to-1 mapping. However, if we need to expand this to the full list of files in the bundle (instead of just the bundle itself), we might do:
(Note the This doesn't work, however, as the "globbing" does not get expanded by MSBuild during the transform. A workaround is to "go through" a property:
Note: if using the "expand all files" option in MSBuild, it seems to be very difficult to then associate a per-.dSYM attribute to each of the expanded files, such as the target directory each should be copied to in the NuGet package. MSBuild copy directoriesMSBuild has a built-in If we want to treat NuGet packing.NET packs native builds and symbols into NuGet "legacy" symbols packages. For example, the
To support It appears that NuGet itself has assumptions about symbol files being single files with a distinguished file extension. Neither of these things are true for The MSBuild Shared Framework SDK file in the arcade repo, in src/Microsoft.DotNet.SharedFramework.Sdk/targets/sharedfx.targets, defines an MSBuild property that determines how NuGet packages symbols. Specifically:
This is passed through many layers before ending up being used in the NuGet client packing code to determine how to pack symbols packages, here. It needs more investigation to determine if NuGet needs to learn about Symbol server uploadingOne use for the generated symbols packages is apparently to give to the symbol server indexer. It cracks the NuGet package, looks for symbol files, and index and uploads the files. It is presumed that if the symbol package contains a Question: where is the symbol server uploading code? It is a separate issue about whether the symbol indexer should be augmented such that (1) the entire dSYM-in-a-fileIt's easy to get the build to produce MSBuild complexityGeneral comment on working in MSBuild in the .NET build system: the rules that affect the build are spread out widely, between the |
A partial implementation, or, a set of attempts: #96456 |
This is a small workaround to allow developers working on Mac the ability to generate .dSYM bundles as part of inner-loop development, instead of the unsupported .dwarf files that are generated by default. A full solution to use .dSYM bundles everywhere on Mac, including packaging and symbol indexing, is tracked by dotnet#92911. To build .dSYM bundles instead of .dwarf files, invoke build.sh as follows: ```bash ./build.sh --subset clr --cmakeargs "-DCLR_CMAKE_APPLE_DSYM=TRUE" ```
This is a small workaround to allow developers working on Mac the ability to generate .dSYM bundles as part of inner-loop development, instead of the unsupported .dwarf files that are generated by default. A full solution to use .dSYM bundles everywhere on Mac, including packaging and symbol indexing, is tracked by dotnet#92911. To build .dSYM bundles instead of .dwarf files, invoke build.sh as follows: ```bash ./build.sh --subset clr --cmakeargs "-DCLR_CMAKE_APPLE_DSYM=TRUE" ```
This is a small workaround to allow developers working on Mac the ability to generate .dSYM bundles as part of inner-loop development, instead of the unsupported .dwarf files that are generated by default. A full solution to use .dSYM bundles everywhere on Mac, including packaging and symbol indexing, is tracked by #92911. To build .dSYM bundles instead of .dwarf files, invoke build.sh as follows: ```bash ./build.sh --subset clr --cmakeargs "-DCLR_CMAKE_APPLE_DSYM=TRUE" ```
This is a small workaround to allow developers working on Mac the ability to generate .dSYM bundles as part of inner-loop development, instead of the unsupported .dwarf files that are generated by default. A full solution to use .dSYM bundles everywhere on Mac, including packaging and symbol indexing, is tracked by dotnet#92911. To build .dSYM bundles instead of .dwarf files, invoke build.sh as follows: ```bash ./build.sh --subset clr --cmakeargs "-DCLR_CMAKE_APPLE_DSYM=TRUE" ```
This is a small workaround to allow developers working on Mac the ability to generate .dSYM bundles as part of inner-loop development, instead of the unsupported .dwarf files that are generated by default. A full solution to use .dSYM bundles everywhere on Mac, including packaging and symbol indexing, is tracked by dotnet#92911. To build .dSYM bundles instead of .dwarf files, invoke build.sh as follows: ```bash ./build.sh --subset clr --cmakeargs "-DCLR_CMAKE_APPLE_DSYM=TRUE" ```
We currently use .dwarf files, which are unsupported.
The text was updated successfully, but these errors were encountered: