From afbf2c1efaba2c86a64c1b1af4aeec57dda7ac1c Mon Sep 17 00:00:00 2001
From: Michael Simons <msimons@microsoft.com>
Date: Wed, 31 Mar 2021 18:29:56 -0500
Subject: [PATCH] ArPow stage 1: local source-build infrastructure (#31235)

Conflicts:
	eng/Version.Details.xml

Co-authored-by: John Luo <johluo@microsoft.com>
---
 eng/SourceBuild.props                         | 69 +++++++++++++
 eng/SourceBuildPrebuiltBaseline.xml           |  5 +
 eng/Version.Details.xml                       |  1 +
 eng/build.sh                                  | 13 ++-
 ...-Conditionally-set-PackAsToolShimRID.patch | 28 ++++++
 ...lude-some-projects-from-source-build.patch | 27 ++++++
 ...-dependency-not-used-in-source-build.patch | 77 +++++++++++++++
 ...nce-versions-of-source-built-package.patch | 42 ++++++++
 .../0006-Add-FreeBSD.patch                    | 37 +++++++
 ...Support-global.json-on-arm64-as-well.patch | 42 ++++++++
 ...08-use-sourcebuildRID-to-find-clrjit.patch | 25 +++++
 .../0011-Fix-a-couple-issues.patch            | 96 +++++++++++++++++++
 .../0012-Don-t-warn-on-CA1416.patch           | 26 +++++
 ...se-source-built-NuGet-for-repo-tasks.patch | 39 ++++++++
 .../0017-Emit-RepoTasks.binlog.patch          | 25 +++++
 15 files changed, 549 insertions(+), 3 deletions(-)
 create mode 100644 eng/SourceBuild.props
 create mode 100644 eng/SourceBuildPrebuiltBaseline.xml
 create mode 100644 eng/source-build-patches/0002-Conditionally-set-PackAsToolShimRID.patch
 create mode 100644 eng/source-build-patches/0003-Exclude-some-projects-from-source-build.patch
 create mode 100644 eng/source-build-patches/0004-Remove-Yarn-dependency-not-used-in-source-build.patch
 create mode 100644 eng/source-build-patches/0005-Revert-to-reference-versions-of-source-built-package.patch
 create mode 100644 eng/source-build-patches/0006-Add-FreeBSD.patch
 create mode 100644 eng/source-build-patches/0007-Support-global.json-on-arm64-as-well.patch
 create mode 100644 eng/source-build-patches/0008-use-sourcebuildRID-to-find-clrjit.patch
 create mode 100644 eng/source-build-patches/0011-Fix-a-couple-issues.patch
 create mode 100644 eng/source-build-patches/0012-Don-t-warn-on-CA1416.patch
 create mode 100644 eng/source-build-patches/0013-Use-source-built-NuGet-for-repo-tasks.patch
 create mode 100644 eng/source-build-patches/0017-Emit-RepoTasks.binlog.patch

diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
new file mode 100644
index 00000000000..98f9b244c2a
--- /dev/null
+++ b/eng/SourceBuild.props
@@ -0,0 +1,69 @@
+<Project>
+
+  <PropertyGroup>
+    <GitHubRepositoryName>aspnetcore</GitHubRepositoryName>
+    <SourceBuildManagedOnly>true</SourceBuildManagedOnly>
+    <CloneSubmodulesToInnerSourceBuildRepo>false</CloneSubmodulesToInnerSourceBuildRepo>
+  </PropertyGroup>
+
+  <Target Name="ApplySourceBuildPatchFiles"
+          AfterTargets="PrepareInnerSourceBuildRepoRoot"
+          BeforeTargets="RunInnerSourceBuildCommand">
+
+    <ItemGroup>
+      <SourceBuildPatchFile Include="$(RepositoryEngineeringDir)source-build-patches\*.patch" />
+    </ItemGroup>
+
+    <Exec
+      Command="git apply --ignore-whitespace --whitespace=nowarn &quot;%(SourceBuildPatchFile.FullPath)&quot;"
+      WorkingDirectory="$(InnerSourceBuildRepoRoot)"
+      Condition="'@(SourceBuildPatchFile)' != ''" />
+  </Target>
+
+  <!--
+    Init submodules - temporarary workaround for https://github.com/dotnet/sourcelink/pull/653
+  -->
+  <Target Name="InitSubmodules"
+          DependsOnTargets="PrepareInnerSourceBuildRepoRoot"
+          BeforeTargets="RunInnerSourceBuildCommand">
+
+    <Exec
+      Command="git submodule update --init --recursive"
+      WorkingDirectory="$(InnerSourceBuildRepoRoot)"
+      EnvironmentVariables="@(InnerBuildEnv)" />
+  </Target>
+
+  <!--
+    Remove inner source .globalconfig file as both the inner and outer config files get loaded and cause a conflict.
+    Leaving the inner will cause all conflicting settings to be ignored.
+    https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files#general-options
+  -->
+  <Target Name="RemoveInnerGlobalConfig"
+          DependsOnTargets="PrepareInnerSourceBuildRepoRoot"
+          BeforeTargets="RunInnerSourceBuildCommand">
+
+    <Delete Files="$(InnerSourceBuildRepoRoot).globalconfig" />
+  </Target>
+
+  <!--
+    Build RepoTasks - this is normally triggered via the build script but the inner ArPow source-build is run via msbuild
+  -->
+  <Target Name="BuildRepoTasks"
+          Condition="'$(ArcadeInnerBuildFromSource)' == 'true'"
+          BeforeTargets="Execute">
+
+    <Exec
+      Command="./eng/build.sh --only-build-repo-tasks"
+      WorkingDirectory="$(InnerSourceBuildRepoRoot)"
+      EnvironmentVariables="@(InnerBuildEnv)" />
+  </Target>
+
+  <Target Name="CustomizeInnerBuildArgs"
+          BeforeTargets="GetSourceBuildCommandConfiguration">
+
+    <PropertyGroup>
+      <InnerBuildArgs>$(InnerBuildArgs) /p:SourceBuildRuntimeIdentifier=$(TargetRuntimeIdentifier)</InnerBuildArgs>
+    </PropertyGroup>
+  </Target>
+
+</Project>
diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml
new file mode 100644
index 00000000000..c1b6dfbf053
--- /dev/null
+++ b/eng/SourceBuildPrebuiltBaseline.xml
@@ -0,0 +1,5 @@
+<UsageData>
+  <IgnorePatterns>
+    <UsagePattern IdentityGlob="*/*" />
+  </IgnorePatterns>
+</UsageData>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 5f42865e28e..e3b26244763 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -299,6 +299,7 @@
     <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="6.0.0-beta.21179.7">
       <Uri>https://github.com/dotnet/arcade</Uri>
       <Sha>fd5f55c64d48b7894516cc841fba1253b2e79ffd</Sha>
+      <SourceBuild RepoName="arcade" ManagedOnly="true"/>
     </Dependency>
     <Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="6.0.0-beta.21179.7">
       <Uri>https://github.com/dotnet/arcade</Uri>
diff --git a/eng/build.sh b/eng/build.sh
index 0721865b00a..458f2ae643a 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -21,6 +21,7 @@ run_pack=false
 run_tests=false
 build_all=false
 build_deps=true
+only_build_repo_tasks=false
 build_repo_tasks=true
 build_managed=''
 build_native=''
@@ -64,6 +65,7 @@ Options:
                                       Globbing patterns are supported, such as \"$(pwd)/**/*.csproj\".
     --no-build-deps                   Do not build project-to-project references and only build the specified project.
     --no-build-repo-tasks             Suppress building RepoTasks.
+    --only-build-repo-tasks           Only build RepoTasks.
 
     --all                             Build all project types.
     --[no-]build-native               Build native projects (C, C++). Ignored in most cases i.e. with `dotnet msbuild`.
@@ -195,6 +197,9 @@ while [[ $# -gt 0 ]]; do
         -no-build-repo-tasks|-nobuildrepotasks)
             build_repo_tasks=false
             ;;
+        -only-build-repo-tasks|-onlybuildrepotasks)
+            only_build_repo_tasks=true
+            ;;
         -arch)
             shift
             target_arch="${1:-}"
@@ -366,8 +371,10 @@ if [ "$build_repo_tasks" = true ]; then
         ${toolset_build_args[@]+"${toolset_build_args[@]}"}
 fi
 
-# This incantation avoids unbound variable issues if msbuild_args is empty
-# https://stackoverflow.com/questions/7577052/bash-empty-array-expansion-with-set-u
-MSBuild $_InitializeToolset -p:RepoRoot="$repo_root" ${msbuild_args[@]+"${msbuild_args[@]}"}
+if [ "$only_build_repo_tasks" != true ]; then
+    # This incantation avoids unbound variable issues if msbuild_args is empty
+    # https://stackoverflow.com/questions/7577052/bash-empty-array-expansion-with-set-u
+    MSBuild $_InitializeToolset -p:RepoRoot="$repo_root" ${msbuild_args[@]+"${msbuild_args[@]}"}
+fi
 
 ExitWithExitCode 0
diff --git a/eng/source-build-patches/0002-Conditionally-set-PackAsToolShimRID.patch b/eng/source-build-patches/0002-Conditionally-set-PackAsToolShimRID.patch
new file mode 100644
index 00000000000..99a6483e940
--- /dev/null
+++ b/eng/source-build-patches/0002-Conditionally-set-PackAsToolShimRID.patch
@@ -0,0 +1,28 @@
+From 64d2efe24308d9e8b99fdea60c92ee1115259506 Mon Sep 17 00:00:00 2001
+From: dseefeld <dseefeld@microsoft.com>
+Date: Thu, 31 Oct 2019 20:38:26 +0000
+Subject: [PATCH 02/14] Conditionally set PackAsToolShimRID
+
+---
+ Directory.Build.targets | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Directory.Build.targets b/Directory.Build.targets
+index 4b72a52947..1a3b01e858 100644
+--- a/Directory.Build.targets
++++ b/Directory.Build.targets
+@@ -52,6 +52,11 @@
+     <SuppressDependenciesWhenPacking Condition="'$(SuppressDependenciesWhenPacking)' == '' AND '$(IsAnalyzersProject)' == 'true'">true</SuppressDependenciesWhenPacking>
+   </PropertyGroup>
+ 
++  <PropertyGroup Condition="'$(PackAsTool)' == 'true' AND '$(IsShippingPackage)' == 'true' AND '$(DotNetBuildFromSource)' != 'true'">
++    <!-- This is a requirement for Microsoft tool packages only. -->
++    <PackAsToolShimRuntimeIdentifiers>win-x64;win-x86</PackAsToolShimRuntimeIdentifiers>
++  </PropertyGroup>
++
+   <PropertyGroup Condition=" '$(MSBuildProjectExtension)' == '.csproj' ">
+     <PackageId Condition=" '$(PackageId)' == '' ">$(AssemblyName)</PackageId>
+     <IsPackable
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0003-Exclude-some-projects-from-source-build.patch b/eng/source-build-patches/0003-Exclude-some-projects-from-source-build.patch
new file mode 100644
index 00000000000..f92f6fe3e98
--- /dev/null
+++ b/eng/source-build-patches/0003-Exclude-some-projects-from-source-build.patch
@@ -0,0 +1,27 @@
+From 6f903f6870011b6a11074d93a03481faac6a35dc Mon Sep 17 00:00:00 2001
+From: dseefeld <dseefeld@microsoft.com>
+Date: Thu, 4 Feb 2021 15:18:11 +0000
+Subject: [PATCH] Exclude some projects from source-build
+
+---
+ Directory.Build.props | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index 50d30f12fd..85c2f2428b 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -27,7 +27,9 @@
+         '$(IsTestAssetProject)' == 'true' OR
+         '$(IsBenchmarkProject)' == 'true' OR
+         '$(IsUnitTestProject)' == 'true'">false</IsShipping>
+-
++    <IsOtherTestProject Condition="$(MSBuildProjectName.Contains('IntegrationTesting')) or $(MSBuildProjectName.Contains('TestCommon'))">true</IsOtherTestProject>
++    <ExcludeFromSourceBuild Condition="'$(IsSampleProject)' == 'true' or '$(IsTestAssetProject)' == 'true' or '$(IsBenchmarkProject)' == 'true' or '$(IsUnitTestProject)' == 'true' or '$(IsSpecificationTestProject)' == 'true' or '$(IsOtherTestProject)' == 'true'">true</ExcludeFromSourceBuild>
++
+     <!--
+       Following logic mimics core-setup approach as well as
+       https://github.com/dotnet/arcade/blob/694d59f090b743f894779d04a7ffe11cbaf352e7/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj#L30-L31
+-- 
+2.21.3
+
diff --git a/eng/source-build-patches/0004-Remove-Yarn-dependency-not-used-in-source-build.patch b/eng/source-build-patches/0004-Remove-Yarn-dependency-not-used-in-source-build.patch
new file mode 100644
index 00000000000..a047f721cf3
--- /dev/null
+++ b/eng/source-build-patches/0004-Remove-Yarn-dependency-not-used-in-source-build.patch
@@ -0,0 +1,77 @@
+From 83c0f95c563fa6eb9b446f09166cac2c62ab6390 Mon Sep 17 00:00:00 2001
+From: dseefeld <dseefeld@microsoft.com>
+Date: Thu, 14 May 2020 16:29:28 +0000
+Subject: [PATCH 04/14] Remove Yarn dependency - not used in source-build
+
+---
+ eng/targets/Npm.Common.targets                                 | 3 ---
+ global.json                                                    | 1 -
+ .../src/Microsoft.Authentication.WebAssembly.Msal.csproj       | 2 --
+ ...oft.AspNetCore.Components.WebAssembly.Authentication.csproj | 2 --
+ src/Shared/E2ETesting/E2ETesting.targets                       | 3 ---
+ 5 files changed, 11 deletions(-)
+
+diff --git a/eng/targets/Npm.Common.targets b/eng/targets/Npm.Common.targets
+index 696d23402b..6086dd0843 100644
+--- a/eng/targets/Npm.Common.targets
++++ b/eng/targets/Npm.Common.targets
+@@ -1,8 +1,5 @@
+ <Project DefaultTargets="Build" InitialTargets="_CheckForInvalidConfiguration">
+ 
+-  <!-- Version of this SDK is set in global.json -->
+-  <Sdk Name="Yarn.MSBuild" />
+-
+   <PropertyGroup>
+     <NormalizedPackageId>$(PackageId.Replace('@','').Replace('/','-'))</NormalizedPackageId>
+     <PackageFileName>$(NormalizedPackageId)-$(PackageVersion).tgz</PackageFileName>
+diff --git a/global.json b/global.json
+index 501ba161bf..ee9dcaf4fa 100644
+--- a/global.json
++++ b/global.json
+@@ -29,7 +29,6 @@
+     "xcopy-msbuild": "16.5.0-alpha"
+   },
+   "msbuild-sdks": {
+-    "Yarn.MSBuild": "1.22.10",
+    "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21167.3",
+    "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.21167.3"
+   }
+diff --git a/src/Components/WebAssembly/Authentication.Msal/src/Microsoft.Authentication.WebAssembly.Msal.csproj b/src/Components/WebAssembly/Authentication.Msal/src/Microsoft.Authentication.WebAssembly.Msal.csproj
+index 939ba16f88..ea2c849ea3 100644
+--- a/src/Components/WebAssembly/Authentication.Msal/src/Microsoft.Authentication.WebAssembly.Msal.csproj
++++ b/src/Components/WebAssembly/Authentication.Msal/src/Microsoft.Authentication.WebAssembly.Msal.csproj
+@@ -1,7 +1,5 @@
+ <Project Sdk="Microsoft.NET.Sdk.Razor">
+ 
+-  <Sdk Name="Yarn.MSBuild" />
+-
+   <PropertyGroup>
+     <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
+     <Description>Authenticate your Blazor webassembly applications with Azure Active Directory and Azure Active Directory B2C</Description>
+diff --git a/src/Components/WebAssembly/WebAssembly.Authentication/src/Microsoft.AspNetCore.Components.WebAssembly.Authentication.csproj b/src/Components/WebAssembly/WebAssembly.Authentication/src/Microsoft.AspNetCore.Components.WebAssembly.Authentication.csproj
+index 21a2efba4e..b4a6a75446 100644
+--- a/src/Components/WebAssembly/WebAssembly.Authentication/src/Microsoft.AspNetCore.Components.WebAssembly.Authentication.csproj
++++ b/src/Components/WebAssembly/WebAssembly.Authentication/src/Microsoft.AspNetCore.Components.WebAssembly.Authentication.csproj
+@@ -1,7 +1,5 @@
+ <Project Sdk="Microsoft.NET.Sdk.Razor">
+ 
+-  <Sdk Name="Yarn.MSBuild" />
+-
+   <PropertyGroup>
+     <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
+     <Description>Build client-side authentication for single-page applications (SPAs).</Description>
+diff --git a/src/Shared/E2ETesting/E2ETesting.targets b/src/Shared/E2ETesting/E2ETesting.targets
+index 76ced2cce9..eaecb913a9 100644
+--- a/src/Shared/E2ETesting/E2ETesting.targets
++++ b/src/Shared/E2ETesting/E2ETesting.targets
+@@ -1,7 +1,4 @@
+ <Project>
+-  <!-- Version of this SDK is set in global.json -->
+-  <Sdk Name="Yarn.MSBuild" />
+-
+   <!-- Make sure the settings files get copied to the test output folder. -->
+   <ItemGroup>
+     <None Update="e2eTestSettings*.json">
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0005-Revert-to-reference-versions-of-source-built-package.patch b/eng/source-build-patches/0005-Revert-to-reference-versions-of-source-built-package.patch
new file mode 100644
index 00000000000..41a435e42bc
--- /dev/null
+++ b/eng/source-build-patches/0005-Revert-to-reference-versions-of-source-built-package.patch
@@ -0,0 +1,42 @@
+From adef97cd8923986914006454777f9f96d48c3a42 Mon Sep 17 00:00:00 2001
+From: Chris Rummel <crummel@microsoft.com>
+Date: Sun, 28 Jun 2020 18:41:22 +0000
+Subject: [PATCH 09/14] Use source-built version of MSBuild.
+
+---
+ eng/Versions.props                   | 1 +
+ eng/tools/RepoTasks/RepoTasks.csproj | 6 +++---
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/eng/Versions.props b/eng/Versions.props
+index 90bb9be..2266be5 100644
+--- a/eng/Versions.props
++++ b/eng/Versions.props
+@@ -186,6 +186,7 @@
+     <!-- Partner teams -->
+     <MicrosoftBclAsyncInterfacesVersion>1.0.0</MicrosoftBclAsyncInterfacesVersion>
+     <MicrosoftBuildVersion>16.9.0</MicrosoftBuildVersion>
++    <MicrosoftBuildFrameworkPackageVersion>16.9.0</MicrosoftBuildFrameworkPackageVersion>
+     <MicrosoftAzureSignalRVersion>1.2.0</MicrosoftAzureSignalRVersion>
+     <MicrosoftBuildFrameworkVersion>16.9.0</MicrosoftBuildFrameworkVersion>
+     <MicrosoftBuildLocatorVersion>1.2.6</MicrosoftBuildLocatorVersion>
+diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj
+index 7fa9957..3664366 100644
+--- a/eng/tools/RepoTasks/RepoTasks.csproj
++++ b/eng/tools/RepoTasks/RepoTasks.csproj
+@@ -20,9 +20,9 @@
+   </ItemGroup>
+
+   <ItemGroup Condition="'$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)'">
+-    <PackageReference Include="Microsoft.Build.Framework" Version="16.9.0" />
+-    <PackageReference Include="Microsoft.Build.Tasks.Core" Version="16.9.0" />
+-    <PackageReference Include="Microsoft.Build.Utilities.Core" Version="16.9.0" />
++    <PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
++    <PackageReference Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
++    <PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
+   </ItemGroup>
+
+   <ItemGroup Condition="'$(TargetFramework)' == 'net472'">
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0006-Add-FreeBSD.patch b/eng/source-build-patches/0006-Add-FreeBSD.patch
new file mode 100644
index 00000000000..ea1212f66b7
--- /dev/null
+++ b/eng/source-build-patches/0006-Add-FreeBSD.patch
@@ -0,0 +1,37 @@
+From d67aa83be72cbb1ca37aba992633da87235f397b Mon Sep 17 00:00:00 2001
+From: Tomas Weinfurt <tweinfurt@yahoo.com>
+Date: Wed, 13 Nov 2019 22:32:02 -0800
+Subject: [PATCH 06/14] Add FreeBSD
+
+---
+ Directory.Build.props | 1 +
+ eng/Common.props      | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index cd2dabcdba..53d90f2903 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -159,6 +159,7 @@
+       win-arm64;
+       osx-x64;
+       osx-arm64;
++      freebsd-x64;
+       linux-musl-x64;
+       linux-musl-arm;
+       linux-musl-arm64;
+diff --git a/eng/Common.props b/eng/Common.props
+index 7c489b15a9..a9a69bde9f 100644
+--- a/eng/Common.props
++++ b/eng/Common.props
+@@ -3,6 +3,7 @@
+     <TargetOsName Condition=" '$(TargetOsName)' == '' AND $([MSBuild]::IsOSPlatform('Windows'))">win</TargetOsName>
+     <TargetOsName Condition=" '$(TargetOsName)' == '' AND $([MSBuild]::IsOSPlatform('OSX'))">osx</TargetOsName>
+     <TargetOsName Condition=" '$(TargetOsName)' == '' AND $([MSBuild]::IsOSPlatform('Linux'))">linux</TargetOsName>
++    <TargetOsName Condition=" '$(TargetOsName)' == '' AND $([MSBuild]::IsOSPlatform('FreeBSD'))">freebsd</TargetOsName>
+     <TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>
+     <TargetRuntimeIdentifier Condition="'$(TargetRuntimeIdentifier)' == ''">$(TargetOsName)-$(TargetArchitecture)</TargetRuntimeIdentifier>
+   </PropertyGroup>
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0007-Support-global.json-on-arm64-as-well.patch b/eng/source-build-patches/0007-Support-global.json-on-arm64-as-well.patch
new file mode 100644
index 00000000000..d54f0281c15
--- /dev/null
+++ b/eng/source-build-patches/0007-Support-global.json-on-arm64-as-well.patch
@@ -0,0 +1,42 @@
+From ca706cd8670d14fae05b36ee83de716fa19d95ba Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid@redhat.com>
+Date: Wed, 23 Oct 2019 15:43:57 -0400
+Subject: [PATCH 07/14] Support global.json on arm64 as well
+
+arcade uses the runtime section of global.json to decide which
+architecture + runtime combination needs to be installed.
+
+With https://github.com/dotnet/arcade/pull/4132 arcade can install
+foreign SDKs in separate locations correctly.
+
+This change, suggested by @dougbu, makes arcade always install the
+runtime for the local architecture (which means it should work on arm64
+and x64) as well as the x86 architecture (skipped on Linux).
+
+This gets us a working SDK/Runtime combo on arm64.
+---
+ global.json | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/global.json b/global.json
+index ee9dcaf4fa..053e92ebee 100644
+--- a/global.json
++++ b/global.json
+@@ -5,13 +5,10 @@
+   "tools": {
+     "dotnet": "6.0.100-preview.3.21168.19",
+     "runtimes": {
+-      "dotnet/x64": [
++      "dotnet": [
+         "2.1.25",
+         "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)"
+       ],
+-      "dotnet/x86": [
+-        "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)"
+-      ],
+       "aspnetcore/x64": [
+         "3.1.13"
+       ]
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0008-use-sourcebuildRID-to-find-clrjit.patch b/eng/source-build-patches/0008-use-sourcebuildRID-to-find-clrjit.patch
new file mode 100644
index 00000000000..77f17bb5a97
--- /dev/null
+++ b/eng/source-build-patches/0008-use-sourcebuildRID-to-find-clrjit.patch
@@ -0,0 +1,25 @@
+From 2ac4c152b5c4409025dcbaf473b89a6094453e97 Mon Sep 17 00:00:00 2001
+From: adaggarwal <aditya.aggarwal@microsoft.com>
+Date: Sat, 8 Feb 2020 06:43:48 +0000
+Subject: [PATCH 08/14] use-sourcebuildRID-to-find-clrjit
+
+---
+ .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj b/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
+index 4199691fdb..6387557d8f 100644
+--- a/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
++++ b/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
+@@ -411,7 +411,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
+     <PropertyGroup>
+       <!-- Pick the right coreclr jit based on whether we are cross-compiling or not. -->
+       <CoreCLRJitPath
+-          Condition="'$(CrossCompileDirectory)' == ''">$(RuntimePackageRoot)runtimes\$(RuntimeIdentifier)\native\$(LibPrefix)clrjit$(LibExtension)</CoreCLRJitPath>
++          Condition="'$(CrossCompileDirectory)' == ''">$(RuntimePackageRoot)runtimes\$(SourceBuildRuntimeIdentifier)\native\$(LibPrefix)clrjit$(LibExtension)</CoreCLRJitPath>
+       <CoreCLRJitPath
+           Condition="'$(CrossCompileDirectory)' != ''">$(RuntimePackageRoot)runtimes\$(CrossCompileDirectory)\native\$(LibPrefix)clrjit$(LibExtension)</CoreCLRJitPath>
+     </PropertyGroup>
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0011-Fix-a-couple-issues.patch b/eng/source-build-patches/0011-Fix-a-couple-issues.patch
new file mode 100644
index 00000000000..f32be5bebbd
--- /dev/null
+++ b/eng/source-build-patches/0011-Fix-a-couple-issues.patch
@@ -0,0 +1,96 @@
+From 594c716ad8993df91b4cbade593b9bee7cacae47 Mon Sep 17 00:00:00 2001
+From: Chris Rummel <crummel@microsoft.com>
+Date: Thu, 3 Sep 2020 06:29:25 -0500
+Subject: [PATCH 11/14] Fix a couple issues.
+
+---
+ AspNetCore.sln                                |  2 -
+ src/Components/Components.slnf                |  1 -
+ src/Components/ComponentsNoDeps.slnf          |  1 -
+ .../Driver/Wasm.Performance.Driver.csproj     | 37 -------------------
+ 4 files changed, 41 deletions(-)
+ delete mode 100644 src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj
+
+diff --git a/AspNetCore.sln b/AspNetCore.sln
+index 06f5b1b4c6..4a7c2e59a8 100644
+--- a/AspNetCore.sln
++++ b/AspNetCore.sln
+@@ -475,8 +475,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarkapps", "benchmarka
+ EndProject
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wasm.Performance", "Wasm.Performance", "{6276A9A0-791B-49C1-AD8F-50AC47CDC196}"
+ EndProject
+-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wasm.Performance.Driver", "src\Components\benchmarkapps\Wasm.Performance\Driver\Wasm.Performance.Driver.csproj", "{B81C7FA1-870F-4F21-A928-A5BE18754E6E}"
+-EndProject
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wasm.Performance.TestApp", "src\Components\benchmarkapps\Wasm.Performance\TestApp\Wasm.Performance.TestApp.csproj", "{2AEACF69-7F68-414A-B49D-2C627D37D0F6}"
+ EndProject
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.Server.Tests", "src\Components\WebAssembly\Server\test\Microsoft.AspNetCore.Components.WebAssembly.Server.Tests.csproj", "{0C610220-E00C-4752-98A0-44A3D4B96A21}"
+diff --git a/src/Components/Components.slnf b/src/Components/Components.slnf
+index d023481b95..a28aa122b1 100644
+--- a/src/Components/Components.slnf
++++ b/src/Components/Components.slnf
+@@ -37,7 +37,6 @@
+       "src\\Components\\WebAssembly\\testassets\\WasmLinkerTest.csproj",
+       "src\\Components\\Web\\src\\Microsoft.AspNetCore.Components.Web.csproj",
+       "src\\Components\\Web\\test\\Microsoft.AspNetCore.Components.Web.Tests.csproj",
+-      "src\\Components\\benchmarkapps\\Wasm.Performance\\Driver\\Wasm.Performance.Driver.csproj",
+       "src\\Components\\benchmarkapps\\Wasm.Performance\\TestApp\\Wasm.Performance.TestApp.csproj",
+       "src\\Components\\test\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj",
+       "src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj",
+diff --git a/src/Components/ComponentsNoDeps.slnf b/src/Components/ComponentsNoDeps.slnf
+index 7cf830b329..82e51fba83 100644
+--- a/src/Components/ComponentsNoDeps.slnf
++++ b/src/Components/ComponentsNoDeps.slnf
+@@ -39,7 +39,6 @@
+       "src\\Components\\Web\\src\\Microsoft.AspNetCore.Components.Web.csproj",
+       "src\\Components\\Web\\test\\Microsoft.AspNetCore.Components.Web.Tests.csproj",
+       "src\\Components\\benchmarkapps\\Wasm.Performance\\ConsoleHost\\Wasm.Performance.ConsoleHost.csproj",
+-      "src\\Components\\benchmarkapps\\Wasm.Performance\\Driver\\Wasm.Performance.Driver.csproj",
+       "src\\Components\\benchmarkapps\\Wasm.Performance\\TestApp\\Wasm.Performance.TestApp.csproj",
+       "src\\Components\\test\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj",
+       "src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj",
+diff --git a/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj b/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj
+deleted file mode 100644
+index 346ddc48f1..0000000000
+--- a/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj
++++ /dev/null
+@@ -1,37 +0,0 @@
+-<Project Sdk="Microsoft.NET.Sdk.Web">
+-
+-  <PropertyGroup>
+-    <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
+-    <OutputType>exe</OutputType>
+-
+-    <IsShippingPackage>false</IsShippingPackage>
+-    <!-- WebDriver is not strong-named, so this test project cannot be strong named either. -->
+-    <SignAssembly>false</SignAssembly>
+-    <IsTestAssetProject>true</IsTestAssetProject>
+-    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
+-  </PropertyGroup>
+-
+-  <ItemGroup>
+-    <Reference Include="Microsoft.AspNetCore" />
+-    <Reference Include="Microsoft.AspNetCore.Cors" />
+-    <Reference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
+-    <Reference Include="Selenium.Support" />
+-    <Reference Include="Selenium.WebDriver" />
+-    <ProjectReference Include="..\TestApp\Wasm.Performance.TestApp.csproj" />
+-  </ItemGroup>
+-
+-  <ItemGroup>
+-    <Compile Include="..\..\..\WebAssembly\DevServer\src\Server\*.cs" />
+-  </ItemGroup>
+-
+-  <Target Name="_AddTestProjectMetadataAttributes" BeforeTargets="BeforeCompile">
+-    <ItemGroup>
+-      <AssemblyAttribute
+-        Include="System.Reflection.AssemblyMetadataAttribute">
+-        <_Parameter1>TestAppLocatiion</_Parameter1>
+-        <_Parameter2>$(MSBuildThisFileDirectory)..\TestApp\</_Parameter2>
+-      </AssemblyAttribute>
+-  </ItemGroup>
+-  </Target>
+-
+-</Project>
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0012-Don-t-warn-on-CA1416.patch b/eng/source-build-patches/0012-Don-t-warn-on-CA1416.patch
new file mode 100644
index 00000000000..87415782f67
--- /dev/null
+++ b/eng/source-build-patches/0012-Don-t-warn-on-CA1416.patch
@@ -0,0 +1,26 @@
+From 446691a345e68861bd653c1be4b9111aafad5613 Mon Sep 17 00:00:00 2001
+From: dseefeld <dseefeld@microsoft.com>
+Date: Thu, 8 Oct 2020 14:18:02 +0000
+Subject: [PATCH 12/14] Don't warn on CA1416
+
+---
+ Directory.Build.props | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index 53d90f2903..72cee68b4e 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -102,6 +102,9 @@
+ 
+   <!-- Warnings and errors -->
+   <PropertyGroup>
++    <!-- Don't warn on CA1416 since source-build TFM changes
++        are causing the warning to occur -->
++    <NoWarn>$(NoWarn);CA1416</NoWarn>
+     <!-- Ensure API docs are available. -->
+     <NoWarn>$(NoWarn.Replace('1591', ''))</NoWarn>
+ 
+-- 
+2.18.0
+
diff --git a/eng/source-build-patches/0013-Use-source-built-NuGet-for-repo-tasks.patch b/eng/source-build-patches/0013-Use-source-built-NuGet-for-repo-tasks.patch
new file mode 100644
index 00000000000..8c00f50d1be
--- /dev/null
+++ b/eng/source-build-patches/0013-Use-source-built-NuGet-for-repo-tasks.patch
@@ -0,0 +1,39 @@
+From 1fa8097f1a6a49606c0aefad2763f3e0adf0e845 Mon Sep 17 00:00:00 2001
+From: Davis Goodin <dagood@microsoft.com>
+Date: Fri, 6 Nov 2020 10:41:33 -0600
+Subject: [PATCH 13/14] Use source-built NuGet for repo tasks
+
+This allows us to use the source-built version of NuGet when we
+have it, to avoid prebuilts.
+---
+ eng/Versions.props                   | 1 +
+ eng/tools/RepoTasks/RepoTasks.csproj | 2 +-
+ 2 files changed, 2 insertion(+), 1 deletion(-)
+
+diff --git a/eng/Versions.props b/eng/Versions.props
+index 90bb9be..20a4c8c 100644
+--- a/eng/Versions.props
++++ b/eng/Versions.props
+@@ -208,6 +208,7 @@
+     <MicrosoftWebXdtVersion>1.4.0</MicrosoftWebXdtVersion>
+     <SystemIdentityModelTokensJwtVersion>6.8.0</SystemIdentityModelTokensJwtVersion>
+     <NuGetVersioningVersion>5.9.0</NuGetVersioningVersion>
++    <NuGetVersioningPackageVersion>5.9.0</NuGetVersioningPackageVersion>
+     <NuGetFrameworksVersion>5.9.0</NuGetFrameworksVersion>
+     <SystemNetExperimentalMsQuicVersion>5.0.0-alpha.20560.6</SystemNetExperimentalMsQuicVersion>
+     <!-- Packages from 2.1, 3.1, and 5.0 branches used for site extension build. -->
+diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj
+index 2b09f16594..657974b2b0 100644
+--- a/eng/tools/RepoTasks/RepoTasks.csproj
++++ b/eng/tools/RepoTasks/RepoTasks.csproj
+@@ -15,7 +15,7 @@
+   </PropertyGroup>
+
+   <ItemGroup>
+-    <PackageReference Include="NuGet.Packaging" Version="5.9.0" />
++    <PackageReference Include="NuGet.Packaging" Version="$(NuGetVersioningPackageVersion)" />
+     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.1.0" />
+   </ItemGroup>
+
+-- 
+2.18.0
diff --git a/eng/source-build-patches/0017-Emit-RepoTasks.binlog.patch b/eng/source-build-patches/0017-Emit-RepoTasks.binlog.patch
new file mode 100644
index 00000000000..79cc2f7ab9e
--- /dev/null
+++ b/eng/source-build-patches/0017-Emit-RepoTasks.binlog.patch
@@ -0,0 +1,25 @@
+From 8f63217ad54ec431e398753b2bf745a1eb565e36 Mon Sep 17 00:00:00 2001
+From: Davis Goodin <dagood@microsoft.com>
+Date: Mon, 21 Dec 2020 14:37:58 -0600
+Subject: [PATCH] Emit RepoTasks.binlog
+
+Lets us diagnose errors that occur while building RepoTasks.csproj.
+---
+ eng/build.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/eng/build.sh b/eng/build.sh
+index 3c3cab39ce..029bb4f0c8 100755
+--- a/eng/build.sh
++++ b/eng/build.sh
+@@ -363,6 +363,7 @@ if [ "$build_repo_tasks" = true ]; then
+         -p:Restore=$run_restore \
+         -p:Build=true \
+         -clp:NoSummary \
++        -bl:RepoTasks.binlog \
+         ${toolset_build_args[@]+"${toolset_build_args[@]}"}
+ fi
+ 
+-- 
+2.25.4
+
-- 
GitLab