From 1e3dacc1a0a26a189c74cd130e5966326a3c45ab Mon Sep 17 00:00:00 2001 From: Antoine Martin <dev@ayakael.net> Date: Tue, 1 Nov 2022 22:47:58 -0400 Subject: [PATCH] source-build: support building aspnetcore using non-portable runtime packages (backport #43937) (#44752) --- Directory.Build.props | 2 ++ eng/Common.props | 2 ++ eng/Dependencies.props | 2 ++ eng/tools/GenerateFiles/Directory.Build.targets.in | 7 +++++++ .../Wasm.Performance/Driver/Wasm.Performance.Driver.csproj | 2 +- .../src/Microsoft.AspNetCore.App.Runtime.csproj | 5 +++-- src/Tools/Directory.Build.targets | 2 +- 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 721f099a773..9979b084ffc 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -173,6 +173,8 @@ freebsd-x64 </SupportedRuntimeIdentifiers> + <SupportedRuntimeIdentifiers Condition=" '$(PortableBuild)' == 'false' ">$(SupportedRuntimeIdentifiers);$(TargetRuntimeIdentifier)</SupportedRuntimeIdentifiers> + <!-- Make error messages clickable in VS Code's console --> <GenerateFullPaths Condition="'$(VSCODE_CWD)' != '' OR '$(TERM_PROGRAM)' == 'vscode'">true</GenerateFullPaths> diff --git a/eng/Common.props b/eng/Common.props index a9a69bde9f2..3dcca1c6b54 100644 --- a/eng/Common.props +++ b/eng/Common.props @@ -6,6 +6,8 @@ <TargetOsName Condition=" '$(TargetOsName)' == '' AND $([MSBuild]::IsOSPlatform('FreeBSD'))">freebsd</TargetOsName> <TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture> <TargetRuntimeIdentifier Condition="'$(TargetRuntimeIdentifier)' == ''">$(TargetOsName)-$(TargetArchitecture)</TargetRuntimeIdentifier> + <PortableBuild Condition="'$(PortableBuild)' == ''">true</PortableBuild> + <DefaultAppHostRuntimeIdentifier Condition=" '$(PortableBuild)' == 'false' ">$(TargetRuntimeIdentifier)</DefaultAppHostRuntimeIdentifier> </PropertyGroup> <PropertyGroup Condition=" '$(BuildAllProjects)' == 'true' "> diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 75c41177ffa..d39473508c3 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -95,6 +95,7 @@ and are generated based on the last package release. <LatestPackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-x64" /> <LatestPackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-arm" /> <LatestPackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-arm64" /> + <LatestPackageReference Include="Microsoft.NETCore.App.Runtime.$(TargetRuntimeIdentifier)" Condition=" '$(PortableBuild)' == 'false' " /> <!-- Crossgen2 compiler --> <LatestPackageReference Include="Microsoft.NETCore.App.Crossgen2.osx-x64" /> @@ -109,6 +110,7 @@ and are generated based on the last package release. <LatestPackageReference Include="Microsoft.NETCore.App.Crossgen2.win-x86" /> <LatestPackageReference Include="Microsoft.NETCore.App.Crossgen2.win-arm" /> <LatestPackageReference Include="Microsoft.NETCore.App.Crossgen2.win-arm64" /> + <LatestPackageReference Include="Microsoft.NETCore.App.Crossgen2.$(TargetRuntimeIdentifier)" Condition=" '$(PortableBuild)' == 'false' " /> </ItemGroup> <ItemGroup Label=".NET team dependencies (Non-source-build)" Condition="'$(DotNetBuildFromSource)' != 'true'"> diff --git a/eng/tools/GenerateFiles/Directory.Build.targets.in b/eng/tools/GenerateFiles/Directory.Build.targets.in index c5206ec8c61..5e693b6d7cc 100644 --- a/eng/tools/GenerateFiles/Directory.Build.targets.in +++ b/eng/tools/GenerateFiles/Directory.Build.targets.in @@ -39,8 +39,15 @@ <DefaultRuntimeFrameworkVersion Condition=" '$(IsServicingBuild)' != 'true' AND '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' AND '$(TargetLatestDotNetRuntime)' != 'false' ">${MicrosoftNETCoreAppRuntimeVersion}</DefaultRuntimeFrameworkVersion> + <RuntimePackRuntimeIdentifiers Condition=" '$(PortableBuild)' == 'false' ">$(TargetRuntimeIdentifier)</RuntimePackRuntimeIdentifiers> </KnownFrameworkReference> + <KnownCrossgen2Pack Update="Microsoft.NETCore.App.Crossgen2" Condition=" '$(PortableBuild)' == 'false' "> + <Crossgen2PackVersion + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRuntimeVersion}</Crossgen2PackVersion> + <Crossgen2RuntimeIdentifiers>$(TargetRuntimeIdentifier)</Crossgen2RuntimeIdentifiers> + </KnownCrossgen2Pack> + <!-- Use the just-built ASP.NET Core shared framework if available except when building product code in servicing. --> <KnownFrameworkReference Update="Microsoft.AspNetCore.App" Condition=" $(UpdateAspNetCoreKnownFramework) "> <LatestRuntimeFrameworkVersion diff --git a/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj b/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj index 346ddc48f16..9e35e9b1e75 100644 --- a/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj +++ b/src/Components/benchmarkapps/Wasm.Performance/Driver/Wasm.Performance.Driver.csproj @@ -8,7 +8,7 @@ <!-- WebDriver is not strong-named, so this test project cannot be strong named either. --> <SignAssembly>false</SignAssembly> <IsTestAssetProject>true</IsTestAssetProject> - <RuntimeIdentifier>linux-x64</RuntimeIdentifier> + <RuntimeIdentifier Condition=" '$(DotNetBuildFromSource)' != 'true' ">linux-x64</RuntimeIdentifier> </PropertyGroup> <ItemGroup> 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 aeb3c08f138..a23f607e492 100644 --- a/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +++ b/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj @@ -96,7 +96,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant <Crossgen2ToolFileName Condition=" '$(TargetOsName)' == 'win' ">$(Crossgen2ToolFileName).exe</Crossgen2ToolFileName> <!-- E.g. "PkgMicrosoft_NETCore_App_Runtime_win-x64" (set in obj/Microsoft.AspNetCore.App.Runtime.csproj.nuget.g.props). --> - <RuntimePackageRootVariableName>PkgMicrosoft_NETCore_App_Runtime_$(RuntimeIdentifier)</RuntimePackageRootVariableName> + <RuntimePackageRootVariableName>PkgMicrosoft_NETCore_App_Runtime_$(RuntimeIdentifier.Replace('.', '_'))</RuntimePackageRootVariableName> <!-- Determine the crossgen2 package path property name. Special case linux-musl-arm and linux-musl-arm64 because they @@ -105,9 +105,10 @@ This package is an internal implementation of the .NET Core SDK and is not meant --> <BuildOsName>$(TargetOsName)</BuildOsName> <BuildOsName Condition="'$(TargetOsName)' == 'linux-musl' and '$(TargetArchitecture)'!='x64'">linux</BuildOsName> + <BuildOsName Condition=" '$(PortableBuild)' == 'false' ">$(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-'))))</BuildOsName> <Crossgen2BuildArchitecture Condition=" '$(BuildOsName)' == 'win' ">x64</Crossgen2BuildArchitecture> <Crossgen2BuildArchitecture Condition=" '$(Crossgen2BuildArchitecture)' == '' ">$(BuildArchitecture)</Crossgen2BuildArchitecture> - <Crossgen2PackageRootVariableName>PkgMicrosoft_NETCore_App_Crossgen2_$(BuildOsName)-$(Crossgen2BuildArchitecture)</Crossgen2PackageRootVariableName> + <Crossgen2PackageRootVariableName>PkgMicrosoft_NETCore_App_Crossgen2_$(BuildOsName.Replace('.', '_'))-$(Crossgen2BuildArchitecture)</Crossgen2PackageRootVariableName> <AssetTargetFallback>$(AssetTargetFallback);native,Version=0.0</AssetTargetFallback> diff --git a/src/Tools/Directory.Build.targets b/src/Tools/Directory.Build.targets index 854f90ab5c2..438ea3da045 100644 --- a/src/Tools/Directory.Build.targets +++ b/src/Tools/Directory.Build.targets @@ -1,7 +1,7 @@ <Project> <PropertyGroup Condition=" '$(PackAsTool)' == 'true' "> <!-- Microsoft tool packages are required to target both x64 and x86. --> - <PackAsToolShimRuntimeIdentifiers Condition=" '$(IsShippingPackage)' == 'true' ">win-x64;win-x86</PackAsToolShimRuntimeIdentifiers> + <PackAsToolShimRuntimeIdentifiers Condition=" '$(IsShippingPackage)' == 'true' AND '$(DotNetBuildFromSource)' != 'true' ">win-x64;win-x86</PackAsToolShimRuntimeIdentifiers> <!-- None of the tool projects are project reference providers. --> <IsProjectReferenceProvider>false</IsProjectReferenceProvider> <!-- -- GitLab