Skip to content

Commit a29e178

Browse files
committed
The usual weird musl things
1 parent d3639a8 commit a29e178

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

src/sos-packaging.props

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
<Project>
66
<PropertyGroup>
77
<SOSExtensionsBinaries>$(ArtifactsBinDir)\SOS.Extensions\$(Configuration)\netstandard2.0\publish\*.dll</SOSExtensionsBinaries>
8+
<IsMuslBuild Condition="$(TargetRid.StartsWith('linux-musl-'))">true</IsMuslBuild>
89
</PropertyGroup>
910

1011
<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"/>
1213
<SosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\Microsoft.DiaSymReader.Native.amd64.dll" TargetRid="win-x64" />
1314
<SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\mscordaccore_universal.dll" TargetRid="win-x64" />
1415
</ItemGroup>
@@ -26,9 +27,9 @@
2627
<SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\linux.x64.$(Configuration)\libmscordaccore_universal.so" TargetRid="linux-x64" />
2728
<SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.x64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-x64" />
2829

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"/>
3233

3334
<SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm.$(Configuration)\libsosplugin.so" TargetRid="linux-arm" />
3435
<SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm.$(Configuration)\libsos.so" TargetRid="linux-arm" />
@@ -39,13 +40,13 @@
3940
<SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\linux.arm64.$(Configuration)\libmscordaccore_universal.so" TargetRid="linux-arm64" />
4041
<SosRequiredBinaries Include="$(ArtifactsBinDir)\linux.arm64.$(Configuration)\sosdocsunix.txt" TargetRid="linux-arm64" />
4142

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"/>
4546

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"/>
4950

5051
<SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.x64.$(Configuration)\libsosplugin.dylib" TargetRid="osx-x64" />
5152
<SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.x64.$(Configuration)\libsos.dylib" TargetRid="osx-x64" />
@@ -56,6 +57,10 @@
5657
<SosRequiredBinaries Include="$(ArtifactsBinDir)\osx.arm64.$(Configuration)\libsos.dylib" TargetRid="osx-arm64" />
5758
<SosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\osx.arm64.$(Configuration)\libmscordaccore_universal.dylib" TargetRid="osx-arm64" />
5859
<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>
5964
</ItemGroup>
6065

6166
<!-- What and where to pack SOS assets in the final packages. -->
@@ -64,17 +69,28 @@
6469
<Visible>false</Visible>
6570

6671
<!-- 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. -->
7076
<!-- - 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 -->
7279
<Pack Condition="'$(PackAsTool)' != 'true' or '%(TargetRid)' != '$(TargetRid)'">true</Pack>
7380
<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>
7682
<Link Condition="'$(PublishSingleFile)' == 'true'">%(TargetRid)/%(Filename)%(Extension)</Link>
7783
<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>
7894
</None>
7995
</ItemGroup>
8096
</Project>

0 commit comments

Comments
 (0)