diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml index bdede627acf5..f5ba03ffc93b 100644 --- a/eng/pipelines/templates/stages/vmr-build.yml +++ b/eng/pipelines/templates/stages/vmr-build.yml @@ -379,7 +379,7 @@ stages: vmrBranch: ${{ variables.VmrBranch }} pool: ${{ parameters.pool_Windows }} targetOS: windows - targetArchitecture: x64 + targetArchitecture: x86 useDevVersions: true # Use dev versions for CI validation of the experience. runTests: false # Temporarily do not run tests. The nuget comparison fails for some non-obvious reason and needs further investigation. Mostly, I'm not sure why it ever passed. https://github.com/dotnet/sdk/issues/42920 diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.props b/src/SourceBuild/content/repo-projects/Directory.Build.props index 6d200e0e2799..8f134097e901 100644 --- a/src/SourceBuild/content/repo-projects/Directory.Build.props +++ b/src/SourceBuild/content/repo-projects/Directory.Build.props @@ -81,6 +81,9 @@ $(BuildArgs) /p:DotNetBuildOrchestrator=true + + $(BuildArgs) /p:TargetRid=$(TargetRid) + $(BuildArgs) /p:DotNetBuildPass=$(DotNetBuildPass) diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.targets b/src/SourceBuild/content/repo-projects/Directory.Build.targets index c554a1082169..c6e5077c20e6 100644 --- a/src/SourceBuild/content/repo-projects/Directory.Build.targets +++ b/src/SourceBuild/content/repo-projects/Directory.Build.targets @@ -37,8 +37,6 @@ - $(BuildScript) $(BuildActions) $(BuildArgs) - $(ArtifactsLogRepoDir)$(RepositoryName).log @@ -449,6 +447,20 @@ + + + + $(BuildArgs) /p:DotNetBuildTargetRidOnly=true + + $(BuildScript) $(BuildActions) $(BuildArgs) + + + + SetSourceBuiltSdkOverrides; + SetBuildProperties"> @@ -734,6 +747,7 @@ $(BuildArgs) $(FlagParameterPrefix)officialBuildId $(OfficialBuildId) $(BuildArgs) $(FlagParameterPrefix)officialSkipTests true @@ -19,8 +20,8 @@ $(BuildArgs) $(FlagParameterPrefix)officialSourceBranchName placeholder $(BuildArgs) $(FlagParameterPrefix)officialVisualStudioDropAccessToken placeholder + - $(BuildArgs) /p:TargetRid=$(TargetRid) $(BuildArgs) /p:TreatWarningsAsErrors=false $(BuildArgs) /p:ApplyPartialNgenOptimization=false $(BuildArgs) /p:EnablePartialNgenOptimization=false diff --git a/src/SourceBuild/content/repo-projects/runtime.proj b/src/SourceBuild/content/repo-projects/runtime.proj index 5c187068e132..d1e2e17126ef 100644 --- a/src/SourceBuild/content/repo-projects/runtime.proj +++ b/src/SourceBuild/content/repo-projects/runtime.proj @@ -8,7 +8,6 @@ $(BuildArgs) $(FlagParameterPrefix)arch $(TargetArchitecture) $(BuildArgs) $(FlagParameterPrefix)os $(TargetOS) - $(BuildArgs) /p:TargetRid=$(TargetRid) $(BuildArgs) /p:DotNetBuildRuntimeWasmEnableThreads=true $(BuildArgs) /p:DotNetBuildRuntimeNativeAOTRuntimePack=true $(BuildArgs) /p:DotNetBuildMonoEnableLLVM=$(DotNetBuildMonoEnableLLVM) diff --git a/src/SourceBuild/content/repo-projects/sdk.proj b/src/SourceBuild/content/repo-projects/sdk.proj index 7f34a2f370f9..f5f7cc67e817 100644 --- a/src/SourceBuild/content/repo-projects/sdk.proj +++ b/src/SourceBuild/content/repo-projects/sdk.proj @@ -1,4 +1,4 @@ - + true @@ -6,7 +6,6 @@ $(BuildArgs) -nativeToolsOnMachine $(BuildArgs) /p:PackageProjectUrl=https://github.com/dotnet/sdk $(BuildArgs) /p:PortableRid=$(PortableRid) - $(BuildArgs) /p:TargetRid=$(TargetRid) $(BuildArgs) $(FlagParameterPrefix)v $(LogVerbosity) diff --git a/src/SourceBuild/patches/arcade/0001-set-rid-for-project-for-live-runtime.patch b/src/SourceBuild/patches/arcade/0001-set-rid-for-project-for-live-runtime.patch new file mode 100644 index 000000000000..54d57dab139a --- /dev/null +++ b/src/SourceBuild/patches/arcade/0001-set-rid-for-project-for-live-runtime.patch @@ -0,0 +1,150 @@ +From 0b326d7d0d266808c6109282c6417d26835ef648 Mon Sep 17 00:00:00 2001 +From: Jeremy Koritzinsky +Date: Thu, 2 Jan 2025 12:19:02 -0800 +Subject: [PATCH] Infer the projects runtime identifier as the vertical's RID + when doing a vertical build and filter down RID lists to the target RID in + such a scenario. + +Backport: https://github.com/dotnet/arcade/pull/15371 + +--- + .../UnifiedBuild/Unified-Build-Controls.md | 1 + + .../tools/BeforeNETSdkTargets.targets | 4 + + ...ifierInference.BeforeNETSdkTargets.targets | 79 +++++++++++++++++++ + .../tools/Settings.props | 1 + + .../SourceBuildArcadeBuild.targets | 1 + + 5 files changed, 86 insertions(+) + create mode 100644 src/Microsoft.DotNet.Arcade.Sdk/tools/BeforeNETSdkTargets.targets + create mode 100644 src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets + +diff --git a/Documentation/UnifiedBuild/Unified-Build-Controls.md b/Documentation/UnifiedBuild/Unified-Build-Controls.md +index 809d94443..872e14167 100644 +--- a/Documentation/UnifiedBuild/Unified-Build-Controls.md ++++ b/Documentation/UnifiedBuild/Unified-Build-Controls.md +@@ -135,6 +135,7 @@ These controls may be used for **infrastructure or product purposes**. + | -------- | -------- | -------- | -------- | + | DotNetBuildWithOnlineSources | "true", "false", "" | "false" by default when `SourceOnly` switch is active. | When "true", do not remove non-local input sources. Infrastructure switch only. This switch is only exposed at the orchestrator level.
This replaces the existing `DotNetBuildOffline` switch. | + | DotNetBuildSourceOnly | "true", "false", "" | "" | When "true", build only from source. Online sources may remain unless `DotNetBuildOffline` is set to true. This is both an infrastructure and a product switch.
This is roughly equivalent to `DotNetBuildFromSource` in the current infrastructure, though other controls may be better suited. | ++| DotNetBuildTargetRidOnly | "true", "false", "" | "" | When not set, defaults to "true" if the repository build transitively depends on dotnet/runtime and `DotNetBuildOrchestrator` == "true"; otherwise "false". When "true", builds projects for the current `TargetRid` instead of using the current runtime identifier. | + + ### Output Controls + +diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/BeforeNETSdkTargets.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/BeforeNETSdkTargets.targets +new file mode 100644 +index 000000000..84b2020b6 +--- /dev/null ++++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/BeforeNETSdkTargets.targets +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets +new file mode 100644 +index 000000000..9eba3fad9 +--- /dev/null ++++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets +@@ -0,0 +1,79 @@ ++ ++ ++ ++ <_EnableArcadeRuntimeIdentifierInference Condition="'$(_EnableArcadeRuntimeIdentifierInference)' == ''">$(EnableArcadeRuntimeIdentifierInference) ++ ++ ++ <_EnableArcadeRuntimeIdentifierInference Condition="'$(_EnableArcadeRuntimeIdentifierInference)' == '' and '$(RuntimeIdentifier)' != ''">false ++ ++ ++ <_RidAgnosticProject Condition="('$(OutputType)' == 'Library' or '$(IsTestProject)' == 'true') and '$(RuntimeIdentifiers)' == ''">true ++ ++ ++ <_EnableArcadeRuntimeIdentifierInference Condition="'$(_EnableArcadeRuntimeIdentifierInference)' == '' and ('$(IsRidAgnostic)' == 'true' or '$(_RidAgnosticProject)' == 'true')">false ++ ++ ++ <_BuildFlavorRequiredRid ++ Condition=" ++ '$(SelfContained)' == 'true' or ++ ('$(_IsPublishing)' == 'true' and ++ ( ++ '$(PublishReadyToRun)' == 'true' or ++ '$(PublishSingleFile)' == 'true' or ++ '$(PublishAot)' == 'true' ++ ) ++ )">true ++ <_EnableArcadeRuntimeIdentifierInference Condition="'$(_EnableArcadeRuntimeIdentifierInference)' == '' and '$(_BuildFlavorRequiredRid)' != 'true'">false ++ ++ ++ <_EnableArcadeRuntimeIdentifierInference Condition="'$(_EnableArcadeRuntimeIdentifierInference)' == '' and '$(DotNetBuildTargetRidOnly)' == 'true'">true ++ ++ <_EnableArcadeRuntimeIdentifierFilters Condition="'$(EnableArcadeRuntimeIdentifierFilters)' != ''">$(EnableArcadeRuntimeIdentifierFilters) ++ ++ ++ <_EnableArcadeRuntimeIdentifierFilters Condition="'$(_EnableArcadeRuntimeIdentifierFilters)' == '' and '$(_EnableArcadeRuntimeIdentifierInference)' == 'true'">$(_EnableArcadeRuntimeIdentifierFilters) ++ ++ ++ ++ ++ false ++ $(TargetRid) ++ ++ ++ true ++ ++ ++ ++ ++ <_ExplicitlySpecifiedRuntimeIdentifiers>;$(RuntimeIdentifiers); ++ ++ ++ <_FilterRuntimeIdentifier>$(TargetRid) ++ ++ <_FilterRuntimeIdentifier Condition="'$(BaseOS)' != ''">$(BaseOS) ++ ++ ++ <_SuppressAllTargets Condition="'$(DisableArcadeExcludeFromBuildSupport)' != 'true' and $(_ExplicitlySpecifiedRuntimeIdentifiers).Contains(';$(_FilterRuntimeIdentifier);')) == 'false'">true ++ ++ ++ $(RuntimeIdentifier) ++ ++ +diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Settings.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/Settings.props +index b19ed1c3e..0b1d6c41d 100644 +--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Settings.props ++++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Settings.props +@@ -6,6 +6,7 @@ + <_ArcadeOverriddenCustomBeforeMicrosoftCommonCrossTargetingTargets>$(CustomBeforeMicrosoftCommonCrossTargetingTargets) + $(MSBuildThisFileDirectory)BeforeCommonTargets.targets + $(MSBuildThisFileDirectory)BeforeCommonTargets.CrossTargeting.targets ++ $(BeforeMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)BeforeNETSdkTargets.targets + +diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets +index 76e314d1f..a94d4e5ac 100644 +--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets ++++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets +@@ -55,6 +55,7 @@ + - DotNetBuildSourceOnly - Build from source only. Pass through outer build value if present. --> + $(InnerBuildArgs) /p:DotNetBuildInnerRepo=true + $(InnerBuildArgs) /p:DotNetBuildSourceOnly=$(DotNetBuildSourceOnly) ++ $(InnerBuildArgs) /p:DotNetBuildTargetRidOnly=$(DotNetBuildTargetRidOnly) + + $(InnerBuildArgs) /p:RepoRoot="$(InnerSourceBuildRepoRoot)$(_DirSeparatorEscapedCharForExecArg)" + diff --git a/src/SourceBuild/patches/roslyn/0001-Use-BaseOS-instead-of-TargetRid-when-its-available.patch b/src/SourceBuild/patches/roslyn/0001-Use-BaseOS-instead-of-TargetRid-when-its-available.patch new file mode 100644 index 000000000000..cf2d19f1ce75 --- /dev/null +++ b/src/SourceBuild/patches/roslyn/0001-Use-BaseOS-instead-of-TargetRid-when-its-available.patch @@ -0,0 +1,34 @@ +From fe7b6d17a00a69b6bb8cb25d640af56f74a60032 Mon Sep 17 00:00:00 2001 +From: Jeremy Koritzinsky +Date: Tue, 21 Jan 2025 11:31:58 -0800 +Subject: [PATCH] Use BaseOS instead of TargetRid when its available. + +In Source Build, BaseOS is the portable runtime identifier for TargetRid. + +Backport: https://github.com/dotnet/roslyn/pull/76838 + +--- + .../Microsoft.CodeAnalysis.LanguageServer.csproj | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj +index 9b556fcdb8f..a76305b4a29 100644 +--- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj ++++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Microsoft.CodeAnalysis.LanguageServer.csproj +@@ -45,12 +45,13 @@ + $(ArtifactsDir)/LanguageServer/$(Configuration)/$(TargetFramework)/neutral + + +- + $(TargetRid) +- win-x64;win-arm64;linux-x64;linux-arm64;linux-musl-x64;linux-musl-arm64;osx-x64;osx-arm64 ++ $(BaseOS) ++ win-x64;win-arm64;linux-x64;linux-arm64;linux-musl-x64;linux-musl-arm64;osx-x64;osx-arm64 + + true +