|
5 | 5 | <Project> |
6 | 6 | <PropertyGroup> |
7 | 7 | <SOSExtensionsBinaries>$(ArtifactsBinDir)\SOS.Extensions\$(Configuration)\netstandard2.0\publish\*.dll</SOSExtensionsBinaries> |
| 8 | + <IsMuslBuild Condition="$(TargetRid.StartsWith('linux-musl-'))">true</IsMuslBuild> |
8 | 9 | </PropertyGroup> |
9 | 10 |
|
10 | 11 | <ItemGroup> |
11 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\sos.dll" TargetRid="win-x64" /> |
| 12 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\sos.dll" TargetRid="win-x64"/> |
12 | 13 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\Microsoft.DiaSymReader.Native.amd64.dll" TargetRid="win-x64" /> |
13 | 14 | <SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\mscordaccore_universal.dll" TargetRid="win-x64" /> |
14 | 15 | </ItemGroup> |
|
26 | 27 | <SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\linux.x64.$(Configuration)\libmscordaccore_universal.so" TargetRid="linux-x64" /> |
27 | 28 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.x64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-x64" /> |
28 | 29 |
|
29 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-x64" /> |
30 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\libsos.so" TargetRid="linux-musl-x64" /> |
31 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-x64" /> |
| 30 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-x64" TargetsMusl="true"/> |
| 31 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\libsos.so" TargetRid="linux-musl-x64" TargetsMusl="true"/> |
| 32 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.x64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-x64" TargetsMusl="true"/> |
32 | 33 |
|
33 | 34 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm.$(Configuration)\libsosplugin.so" TargetRid="linux-arm" /> |
34 | 35 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm.$(Configuration)\libsos.so" TargetRid="linux-arm" /> |
|
39 | 40 | <SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\linux.arm64.$(Configuration)\libmscordaccore_universal.so" TargetRid="linux-arm64" /> |
40 | 41 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-arm64" /> |
41 | 42 |
|
42 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-arm64" /> |
43 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\libsos.so" TargetRid="linux-musl-arm64" /> |
44 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-arm64" /> |
| 43 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-arm64" TargetsMusl="true"/> |
| 44 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\libsos.so" TargetRid="linux-musl-arm64" TargetsMusl="true"/> |
| 45 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-arm64" TargetsMusl="true"/> |
45 | 46 |
|
46 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-arm" /> |
47 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\libsos.so" TargetRid="linux-musl-arm" /> |
48 | | - <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-arm" /> |
| 47 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\libsosplugin.so" TargetRid="linux-musl-arm" TargetsMusl="true"/> |
| 48 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\libsos.so" TargetRid="linux-musl-arm" TargetsMusl="true"/> |
| 49 | + <SosRequiredBinaries Include="$(ArtifactsBinDir)\linux-musl.arm.$(Configuration)\sosdocsunix.txt" TargetRid="linux-musl-arm" TargetsMusl="true"/> |
49 | 50 |
|
50 | 51 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.x64.$(Configuration)\libsosplugin.dylib" TargetRid="osx-x64" /> |
51 | 52 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.x64.$(Configuration)\libsos.dylib" TargetRid="osx-x64" /> |
|
56 | 57 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.arm64.$(Configuration)\libsos.dylib" TargetRid="osx-arm64" /> |
57 | 58 | <SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\osx.arm64.$(Configuration)\libmscordaccore_universal.dylib" TargetRid="osx-arm64" /> |
58 | 59 | <SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.arm64.$(Configuration)\sosdocsunix.txt" TargetRid="osx-arm64" /> |
| 60 | + |
| 61 | + <SosRequiredBinaries Update="@(SosRequiredBinaries->WithMetadataValue('TargetsMusl' , 'true'))"> |
| 62 | + <OriginalPath>$([MSBuild]::ValueOrDefault('%(FullPath)', '').Replace('linux-musl','linux'))</OriginalPath> |
| 63 | + </SosRequiredBinaries> |
59 | 64 | </ItemGroup> |
60 | 65 |
|
61 | 66 | <!-- What and where to pack SOS assets in the final packages. --> |
|
64 | 69 | <Visible>false</Visible> |
65 | 70 |
|
66 | 71 | <!-- This kind of adjusting where things go is not great - but it balances the requirements of 3 different build modes/consumers: --> |
67 | | - <!-- - Tests expect the native assets to end up in the publish directory of SOS. Hence the CopyToPublishDirectory for the rid of the current build --> |
68 | | - <!-- - Since PackAsTool now implicitly does a publish + glob - we need to exclude the native asset for the current RID to pack from the None itemgroup, but rather the publish directory --> |
69 | | - <!-- and at the same time there are packages like the WinDBG transport package that don't use the <PackAsTool> publish behavior. Those should pack as usual. --> |
| 72 | + <!-- - Tests expect the native assets to end up in the publish directory of SOS. Hence the CopyToPublishDirectory for the rid of the current build. Since our build implicitly |
| 73 | + does a publish using NeedsPublishing for dotnet-dump - we can only include the native assets for the current RID in the publish directory. --> |
| 74 | + <!-- - Since PackAsTool now implicitly does a publish + glob - we need to exclude the native asset we publish during build from the pack assets the None itemgroup brings |
| 75 | + and at the same time there are packages like the WinDBG transport package that don't use the <PackAsTool> publish behavior. Those should pack as usual. --> |
70 | 76 | <!-- - Single file publish also needs to account for the target path correctly but only set it when that mode is on. --> |
71 | | - <!-- Long term following the publish directory is a way to test closer to the layout our customers get through the packages and make sense as a test --> |
| 77 | + <!-- Long term following the publish directory is a way to test closer to the layout our customers get through the packages and make sense as a test. Follow up cleanup is needed here. |
| 78 | + work is tracked in https://github.com/dotnet/diagnostics/issues/5566 --> |
72 | 79 | <Pack Condition="'$(PackAsTool)' != 'true' or '%(TargetRid)' != '$(TargetRid)'">true</Pack> |
73 | 80 | <PackagePath>$(SOSPackagePathPrefix)/%(TargetRid)</PackagePath> |
74 | | - <CopyToOutputDirectory Condition="'$(PublishSingleFile)' == 'true' and '%(TargetRid)' == '$(RuntimeIdentifier)'">PreserveNewest</CopyToOutputDirectory> |
75 | | - <CopyToPublishDirectory Condition="'$(PackAsTool)' == 'true' and '%(TargetRid)' == '$(TargetRid)'">PreserveNewest</CopyToPublishDirectory> |
| 81 | + <CopyToOutputDirectory Condition="'$(PublishSingleFile)' == 'true' and '%(SosRequiredBinaries.TargetRid)' == '$(RuntimeIdentifier)'">PreserveNewest</CopyToOutputDirectory> |
76 | 82 | <Link Condition="'$(PublishSingleFile)' == 'true'">%(TargetRid)/%(Filename)%(Extension)</Link> |
77 | 83 | <TargetPath>%(TargetRid)/%(Filename)%(Extension)</TargetPath> |
| 84 | + <!-- There's a little blip here too - on the linux-musl verticals, the output directory structure not as the packaging leg layout. We publish them in the next group --> |
| 85 | + <CopyToPublishDirectory Condition="'$(PackAsTool)' == 'true' and '$(IsMuslBuild)' != 'true' and '%(TargetRid)' == '$(TargetRid)'">PreserveNewest</CopyToPublishDirectory> |
| 86 | + </None> |
| 87 | + |
| 88 | + <None Include="@(SosRequiredBinaries->WithMetadataValue('TargetsMusl' , 'true')->'%(OriginalPath)')" Condition="'$(IsMuslBuild)' == 'true'"> |
| 89 | + <Visible>false</Visible> |
| 90 | + <Pack>false</Pack> |
| 91 | + <CopyToOutputDirectory>Never</CopyToOutputDirectory> |
| 92 | + <TargetPath>%(TargetRid)/%(Filename)%(Extension)</TargetPath> |
| 93 | + <CopyToPublishDirectory Condition="'$(PackAsTool)' == 'true' and '%(SosRequiredBinaries.TargetRid)' == '$(TargetRid)'">PreserveNewest</CopyToPublishDirectory> |
78 | 94 | </None> |
79 | 95 | </ItemGroup> |
80 | 96 | </Project> |
0 commit comments