Skip to content

Commit 112c8f4

Browse files
Copy symbols to intermediates (#19303)
1 parent 5adceb7 commit 112c8f4

File tree

4 files changed

+133
-38
lines changed

4 files changed

+133
-38
lines changed

src/SourceBuild/content/eng/build.sourcebuild.targets

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,28 @@
1515
<MSBuild Projects="$(RepoProjectsDir)$(RootRepo).proj" Targets="WritePrebuiltUsageData;ReportPrebuiltUsage" />
1616
</Target>
1717

18-
<!-- After building, repackage symbols into a single tarball. -->
19-
<Target Name="RepackageSymbols"
18+
<!--
19+
Determine symbols tarball names and discover all intermediate symbols,
20+
to be used as inputs and outputs of symbols repackaging targets.
21+
-->
22+
<Target Name="DetermineSymbolsTargetsInputsAndOutputs"
2023
AfterTargets="Build"
2124
DependsOnTargets="DetermineSourceBuiltSdkVersion">
2225
<PropertyGroup>
2326
<UnifiedSymbolsTarball>$(ArtifactsAssetsDir)dotnet-symbols-all-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</UnifiedSymbolsTarball>
27+
<SdkSymbolsTarball>$(ArtifactsAssetsDir)dotnet-symbols-sdk-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</SdkSymbolsTarball>
2428
</PropertyGroup>
29+
<ItemGroup>
30+
<IntermediateSymbol Include="$(IntermediateSymbolsRootDir)**/*" />
31+
</ItemGroup>
32+
</Target>
33+
34+
<!-- After building, repackage symbols into a single tarball. -->
35+
<Target Name="RepackageSymbols"
36+
AfterTargets="Build"
37+
DependsOnTargets="DetermineSymbolsTargetsInputsAndOutputs"
38+
Inputs="@(IntermediateSymbol)"
39+
Outputs="$(UnifiedSymbolsTarball)">
2540

2641
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(UnifiedSymbolsTarball)'))" />
2742
<Exec Command="tar --numeric-owner -czf $(UnifiedSymbolsTarball) *"
@@ -34,10 +49,10 @@
3449
<UsingTask TaskName="Microsoft.DotNet.UnifiedBuild.Tasks.CreateSdkSymbolsLayout" AssemblyFile="$(MicrosoftDotNetUnifiedBuildTasksAssembly)" />
3550
<Target Name="CreateSdkSymbolsTarball"
3651
AfterTargets="Build"
37-
DependsOnTargets="RepackageSymbols">
52+
DependsOnTargets="RepackageSymbols"
53+
Inputs="@(IntermediateSymbol);$(SdkTarballPath)"
54+
Outputs="$(SdkSymbolsTarball)">
3855
<PropertyGroup>
39-
<SdkSymbolsTarball>$(ArtifactsAssetsDir)dotnet-symbols-sdk-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</SdkSymbolsTarball>
40-
4156
<IntermediateSdkSymbolsLayout>$(BaseIntermediateOutputPath)SdkSymbols</IntermediateSdkSymbolsLayout>
4257
<IntermediateSdkLayout>$(BaseIntermediateOutputPath)Sdk</IntermediateSdkLayout>
4358
</PropertyGroup>
@@ -55,7 +70,6 @@
5570

5671
<Message Importance="High" Text="Packaged sdk symbols in '$(SdkSymbolsTarball)'" />
5772

58-
<RemoveDir Directories="$(IntermediateSymbolsRootDir)" />
5973
<RemoveDir Directories="$(IntermediateSdkSymbolsLayout)" />
6074
<RemoveDir Directories="$(IntermediateSdkLayout)" />
6175
</Target>

src/SourceBuild/content/repo-projects/Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<NuGetConfigFile Condition="'$(OriginalNuGetConfigFile)' != ''">$(BaseIntermediateOutputPath)$([System.IO.Path]::GetFileName('$(OriginalNuGetConfigFile)'))</NuGetConfigFile>
4040

4141
<RepoAssetManifestsDir>$([MSBuild]::NormalizeDirectory('$(AssetManifestsIntermediateDir)', '$(RepositoryName)'))</RepoAssetManifestsDir>
42+
<IntermediateSymbolsRepoDir>$([MSBuild]::NormalizeDirectory('$(IntermediateSymbolsRootDir)', '$(RepositoryName)'))</IntermediateSymbolsRepoDir>
4243

4344
<SourceBuiltSdksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'source-built-sdks'))</SourceBuiltSdksDir>
4445

@@ -92,6 +93,7 @@
9293
</PropertyGroup>
9394

9495
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
96+
<BuildArgs>$(BuildArgs) /p:SourceBuiltSymbolsDir=$(IntermediateSymbolsRepoDir)</BuildArgs>
9597
<BuildArgs>$(BuildArgs) /p:ArcadeBuildFromSource=true</BuildArgs>
9698
<BuildArgs>$(BuildArgs) /p:DotNetBuildSourceOnly=true</BuildArgs>
9799
<BuildArgs>$(BuildArgs) /p:PreviouslySourceBuiltNupkgCacheDir="$(PrebuiltSourceBuiltPackagesPath)"</BuildArgs>

src/SourceBuild/content/repo-projects/Directory.Build.targets

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
<PackageReportDataFile>$(PackageReportDir)prebuilt-usage.xml</PackageReportDataFile>
2525
<ProjectAssetsJsonArchiveFile>$(PackageReportDir)all-project-assets-json-files.zip</ProjectAssetsJsonArchiveFile>
2626
<ProdConManifestFile>$(PackageReportDir)prodcon-build.xml</ProdConManifestFile>
27-
28-
<IntermediateSymbolsRepoDir>$(IntermediateSymbolsRootDir)$(RepositoryName)</IntermediateSymbolsRepoDir>
2927
</PropertyGroup>
3028

3129
<!-- Returns the repository references of this project and all the projects this project references, recursively -->
@@ -538,43 +536,13 @@
538536
</Touch>
539537
</Target>
540538

541-
<Target Name="DiscoverSymbolsArchiveFile"
542-
Condition="'$(DotNetBuildSourceOnly)' == 'true' and
543-
'$(IsUtilityProject)' != 'true'">
544-
<PropertyGroup>
545-
<RepoAssetsSymbolsArchive>$(ArtifactsAssetsSymbolsDir)Symbols.$(RepositoryName)$(ArchiveExtension)</RepoAssetsSymbolsArchive>
546-
</PropertyGroup>
547-
548-
<ItemGroup>
549-
<RepoSymbolsArchive Include="$(RepoAssetsSymbolsArchive)" Condition="Exists('$(RepoAssetsSymbolsArchive)')" />
550-
</ItemGroup>
551-
</Target>
552-
553-
<Target Name="ExtractSymbolsArchiveFile"
554-
DependsOnTargets="RepoBuild;DiscoverSymbolsArchiveFile"
555-
Condition="'$(DotNetBuildSourceOnly)' == 'true' and
556-
'$(IsUtilityProject)' != 'true' and
557-
'@(RepoSymbolsArchive)' != ''"
558-
Inputs="@(RepoSymbolsArchive)"
559-
Outputs="$(IntermediateSymbolsRepoDir)">
560-
561-
<Error Text="There must only be a single repository symbols archive file. Found: @(RepoSymbolsArchive)"
562-
Condition="@(RepoSymbolsArchive->Count()) &gt; 1" />
563-
564-
<!-- Extract repo symbols tarball -->
565-
<MakeDir Directories="$(IntermediateSymbolsRepoDir)" />
566-
<Exec Command="tar -xzf %(RepoSymbolsArchive.Identity) -C $(IntermediateSymbolsRepoDir)" />
567-
</Target>
568-
569539
<Target Name="Build"
570540
DependsOnTargets="
571541
BuildRepoReferences;
572542
RepoBuild;
573543
LogRepoArtifacts;
574544
CopyInnerBuildRestoredPackages;
575545
ExtractToolPackage;
576-
DiscoverSymbolsArchiveFile;
577-
ExtractSymbolsArchiveFile;
578546
CleanupRepo" />
579547

580548
<UsingTask TaskName="Microsoft.DotNet.UnifiedBuild.Tasks.UsageReport.WritePackageUsageData" AssemblyFile="$(MicrosoftDotNetUnifiedBuildTasksAssembly)" />
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Nikola Milosavljevic <[email protected]>
3+
Date: Wed, 3 Apr 2024 21:23:27 +0000
4+
Subject: [PATCH] Copy repo symbols to intermediates
5+
6+
Backport: https://github.com/dotnet/arcade/pull/14681
7+
---
8+
.../tools/Publish.proj | 8 -----
9+
.../tools/SourceBuild/AfterSourceBuild.proj | 2 +-
10+
.../SourceBuild/SourceBuildArcade.targets | 35 +++++++++++++++----
11+
3 files changed, 29 insertions(+), 16 deletions(-)
12+
13+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
14+
index 43fadc322..bec1a4963 100644
15+
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
16+
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
17+
@@ -118,14 +118,6 @@
18+
<ItemsToSignPostBuild Include="@(SymbolPackagesToGenerate->'%(Filename)%(Extension)')" Condition="'$(PostBuildSign)' == 'true'" />
19+
</ItemGroup>
20+
21+
- <!-- Include Symbols.<repo>.tar.gz, if running in inner source-only build -->
22+
- <ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true' and '$(DotNetBuildInnerRepo)' == 'true'">
23+
- <UnifiedSymbolsPackage Include="$(ArtifactsNonShippingPackagesDir)Symbols.*.tar.gz" />
24+
- <Artifact Include="@(UnifiedSymbolsPackage)"
25+
- RelativeBlobPath="Symbols/%(Filename)%(Extension)"
26+
- IsShipping="false" />
27+
- </ItemGroup>
28+
-
29+
<!--
30+
If a symbol package doesn't exist yet we assume that the regular package contains Portable PDBs.
31+
Such packages can act as symbol packages since they have the same structure.
32+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
33+
index c2ba0644b..6a1fd449d 100644
34+
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
35+
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
36+
@@ -14,7 +14,7 @@
37+
<Target Name="AfterSourceBuildInnerBuild"
38+
Condition="('$(ArcadeInnerBuildFromSource)' == 'true' or '$(DotNetBuildInnerRepo)' == 'true') and
39+
'$(DotNetBuildOrchestrator)' == 'true'"
40+
- DependsOnTargets="CreateRepoSymbolsArchive;ClearPreviousSBRP" />
41+
+ DependsOnTargets="CopyRepoSymbolsToIntermediates;ClearPreviousSBRP" />
42+
43+
<Target Name="ClearPreviousSBRP"
44+
Condition="'$(GitHubRepositoryName)' == 'source-build-reference-packages'">
45+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
46+
index 41817c3a9..f06d33095 100644
47+
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
48+
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
49+
@@ -159,20 +159,20 @@
50+
51+
Conditioning out for Windows as the tar execution below doesn't work cross-plat.
52+
-->
53+
+
54+
<Target Name="CreateRepoSymbolsArchive"
55+
+ Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
56+
+ DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn);
57+
+ DiscoverRepoSymbols;
58+
+ PackageRepoSymbols"/>
59+
+
60+
+ <Target Name="DiscoverRepoSymbols"
61+
Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
62+
DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn)">
63+
<PropertyGroup>
64+
<SymbolsRoot>$(CurrentRepoSourceBuildArtifactsDir)</SymbolsRoot>
65+
<!-- Fall back to repo root for source-build-externals or repos that don't have the regular SymbolsRoot as defined above -->
66+
<SymbolsRoot Condition="!Exists('$(SymbolsRoot)') or '$(GitHubRepositoryName)' == 'source-build-externals'">$(RepoRoot)</SymbolsRoot>
67+
- <SymbolsArchiveLocation>$(CurrentRepoSourceBuildArtifactsNonShippingPackagesDir)</SymbolsArchiveLocation>
68+
- <SymbolsArchiveLocation Condition="'$(GitHubRepositoryName)' == 'nuget-client' and '$(PackageOutputPath)' != ''">$([MSBuild]::EnsureTrailingSlash('$(PackageOutputPath)'))</SymbolsArchiveLocation>
69+
- <SymbolsList>$([MSBuild]::NormalizePath('$(SymbolsArchiveLocation)', 'symbols.lst'))</SymbolsList>
70+
- <SymbolsArchivePrefix>Symbols.</SymbolsArchivePrefix>
71+
- <!-- $(Version) and $(TargetRid) are only available when target is executed as part of intermediate package creation. -->
72+
- <SymbolsArchiveSuffix Condition="'$(CreateIntermediatePackage)' == 'true'">.$(Version).$(TargetRid)</SymbolsArchiveSuffix>
73+
- <SymbolsArchiveFile>$(SymbolsArchiveLocation)$(SymbolsArchivePrefix)$(GitHubRepositoryName)$(SymbolsArchiveSuffix)$(ArchiveExtension)</SymbolsArchiveFile>
74+
</PropertyGroup>
75+
76+
<ItemGroup>
77+
@@ -181,6 +181,20 @@
78+
<RelativePath>$([MSBuild]::MakeRelative($(SymbolsRoot), %(FullPath)))</RelativePath>
79+
</AbsoluteSymbolPath>
80+
</ItemGroup>
81+
+ </Target>
82+
+
83+
+ <Target Name="PackageRepoSymbols"
84+
+ Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
85+
+ DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn);DiscoverRepoSymbols">
86+
+ <PropertyGroup>
87+
+ <SymbolsArchiveLocation>$(CurrentRepoSourceBuildArtifactsNonShippingPackagesDir)</SymbolsArchiveLocation>
88+
+ <SymbolsArchiveLocation Condition="'$(GitHubRepositoryName)' == 'nuget-client' and '$(PackageOutputPath)' != ''">$([MSBuild]::EnsureTrailingSlash('$(PackageOutputPath)'))</SymbolsArchiveLocation>
89+
+ <SymbolsList>$([MSBuild]::NormalizePath('$(SymbolsArchiveLocation)', 'symbols.lst'))</SymbolsList>
90+
+ <SymbolsArchivePrefix>Symbols.</SymbolsArchivePrefix>
91+
+ <!-- $(Version) and $(TargetRid) are only available when target is executed as part of intermediate package creation. -->
92+
+ <SymbolsArchiveSuffix Condition="'$(CreateIntermediatePackage)' == 'true'">.$(Version).$(TargetRid)</SymbolsArchiveSuffix>
93+
+ <SymbolsArchiveFile>$(SymbolsArchiveLocation)$(SymbolsArchivePrefix)$(GitHubRepositoryName)$(SymbolsArchiveSuffix)$(ArchiveExtension)</SymbolsArchiveFile>
94+
+ </PropertyGroup>
95+
96+
<WriteLinesToFile
97+
File="$(SymbolsList)"
98+
@@ -203,6 +217,13 @@
99+
<Delete Files="$(SymbolsList)" Condition="Exists($(SymbolsList))" />
100+
</Target>
101+
102+
+ <Target Name="CopyRepoSymbolsToIntermediates"
103+
+ DependsOnTargets="DiscoverRepoSymbols">
104+
+ <MakeDir Directories="$(SourceBuiltSymbolsDir)" />
105+
+ <Copy
106+
+ SourceFiles="@(AbsoluteSymbolPath)"
107+
+ DestinationFolder="$(SourceBuiltSymbolsDir)%(RecursiveDir)" />
108+
+ </Target>
109+
<!--
110+
This target can be removed once we enable standard repo assets manifests and SB orchestrator
111+
starts using it - https://github.com/dotnet/source-build/issues/3970

0 commit comments

Comments
 (0)