From 5ac523e7268bc57da62c1b217f41f2974ccaf26b Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Wed, 11 Sep 2024 14:50:27 -0700 Subject: [PATCH 1/9] Now that fsharp is on 9.0, we can switch to the new control set. Generally: - DotNetBuildFromSource -> DotNetBuildSourceOnly - Building a source-only build. - DotnetBuildFromSourceFlavor == Product -> DotNetBuildOrchestrator == true - Building in the VMR, could be source-only or MS's build. - ArcadeBuildFromSource -> DotNetBuildRepo == true -> Indicates an outer repo build. --- Directory.Build.props | 4 ++-- Directory.Build.targets | 2 +- FSharpBuild.Directory.Build.props | 4 ++-- eng/Build.ps1 | 3 ++- eng/SourceBuild.props | 6 +++--- eng/build.sh | 5 +++-- eng/test-determinism.ps1 | 2 +- proto.proj | 4 ++-- setup/Swix/Directory.Build.targets | 2 +- 9 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 573faa9eb9e..94e4b63ef40 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -7,7 +7,7 @@ $(MSBuildThisFileDirectory) true net9.0 - $(DotNetBuildFromSource) + $(DotNetBuildSourceOnly) - + $(NetCurrent) diff --git a/Directory.Build.targets b/Directory.Build.targets index 8aed019a00f..6bcb1c02c6b 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -26,7 +26,7 @@ When .NET gets built from source, make the SDK aware there are bootstrap packages for Microsoft.NETCore.App.Runtime. and Microsoft.NETCore.App.Crossgen2.. --> - + %(RuntimePackRuntimeIdentifiers);$(NETCoreSdkRuntimeIdentifier) diff --git a/FSharpBuild.Directory.Build.props b/FSharpBuild.Directory.Build.props index b2b9ae303cb..148d9c95116 100644 --- a/FSharpBuild.Directory.Build.props +++ b/FSharpBuild.Directory.Build.props @@ -73,8 +73,8 @@ false - - + + false diff --git a/eng/Build.ps1 b/eng/Build.ps1 index a6bda85ef6b..6764a1332d6 100644 --- a/eng/Build.ps1 +++ b/eng/Build.ps1 @@ -314,7 +314,8 @@ function BuildSolution([string] $solutionName, $nopack) { /p:QuietRestore=$quietRestore ` /p:QuietRestoreBinaryLog=$binaryLog ` /p:TestTargetFrameworks=$testTargetFrameworks ` - /p:DotNetBuildFromSource=$sourceBuild ` + /p:DotNetBuildSourceOnly=$sourceBuild ` + /p:DotNetBuildRepo=$sourceBuild ` /p:CompressAllMetadata=$CompressAllMetadata ` /p:BuildNoRealsig=$buildnorealsig ` /v:$verbosity ` diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props index c1759d53260..da8ef281a94 100644 --- a/eng/SourceBuild.props +++ b/eng/SourceBuild.props @@ -13,7 +13,7 @@ --> + Condition="'$(DotNetBuildSourceOnly)' == 'true'"> $(InnerBuildArgs) /p:Projects="$(InnerSourceBuildRepoRoot)\Microsoft.FSharp.Compiler.sln" @@ -26,7 +26,7 @@ + Condition="'$(DotNetBuildSourceOnly)' == 'true'"> --tfm $(SourceBuildBootstrapTfm) @@ -43,7 +43,7 @@ + EnvironmentVariables="@(InnerBuildEnv);DotNetBuildSourceOnly=true" /> diff --git a/eng/build.sh b/eng/build.sh index 8544de1e72e..1169b8c8dfb 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -274,7 +274,7 @@ function BuildSolution { fi BuildMessage="Error building tools" - local args=" publish $repo_root/proto.proj $blrestore $bltools /p:Configuration=Proto /p:ArcadeBuildFromSource=$source_build $properties" + local args=" publish $repo_root/proto.proj $blrestore $bltools /p:Configuration=Proto /p:DotNetBuildRepo=$source_build /p:DotNetBuildSourceOnly=$source_build $properties" echo $args "$DOTNET_INSTALL_DIR/dotnet" $args #$args || exit $? fi @@ -296,7 +296,8 @@ function BuildSolution { /p:ContinuousIntegrationBuild=$ci \ /p:QuietRestore=$quiet_restore \ /p:QuietRestoreBinaryLog="$binary_log" \ - /p:ArcadeBuildFromSource=$source_build \ + /p:DotNetBuildSourceOnly=$source_build \ + /p:DotNetBuildRepo=$source_build \ /p:BuildNoRealsig=$buildnorealsig \ $properties fi diff --git a/eng/test-determinism.ps1 b/eng/test-determinism.ps1 index fcb5495f434..8056de2b371 100644 --- a/eng/test-determinism.ps1 +++ b/eng/test-determinism.ps1 @@ -78,7 +78,7 @@ function Run-Build([string]$rootDir, [string]$increment) { /p:ContinuousIntegrationBuild=false ` /p:OfficialBuildId="" ` /p:QuietRestore=false ` - /p:DotNetBuildFromSource=false ` + /p:DotNetBuildSourceOnly=false ` /p:Deterministic=true ` /p:DebugDeterminism=true ` /p:Features="debug-determinism" ` diff --git a/proto.proj b/proto.proj index 2d07b389fa6..621f39961a6 100644 --- a/proto.proj +++ b/proto.proj @@ -4,8 +4,8 @@ Bootstrap - - + + diff --git a/setup/Swix/Directory.Build.targets b/setup/Swix/Directory.Build.targets index 5e826e8da63..85048309295 100644 --- a/setup/Swix/Directory.Build.targets +++ b/setup/Swix/Directory.Build.targets @@ -15,7 +15,7 @@ + Condition="'$(DotNetBuildSourceOnly)' != 'true'"> From abc01dfce655a7bddd7fb8e2bd6d6846c88b8529 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Thu, 12 Sep 2024 14:51:08 -0700 Subject: [PATCH 2/9] Split out source build args --- eng/build.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/eng/build.sh b/eng/build.sh index 1169b8c8dfb..90260cbfa4f 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -241,6 +241,11 @@ function BuildSolution { if [[ "$UNAME" == "Darwin" ]]; then enable_analyzers=false fi + + local source_build_args="" + if [[ "$source_build" == true ]]; then + source_build_args="/p:DotNetBuildRepo=true /p:DotNetBuildSourceOnly=true" + fi # NuGet often exceeds the limit of open files on Mac and Linux # https://github.com/NuGet/Home/issues/2163 @@ -274,7 +279,7 @@ function BuildSolution { fi BuildMessage="Error building tools" - local args=" publish $repo_root/proto.proj $blrestore $bltools /p:Configuration=Proto /p:DotNetBuildRepo=$source_build /p:DotNetBuildSourceOnly=$source_build $properties" + local args=" publish $repo_root/proto.proj $blrestore $bltools /p:Configuration=Proto $source_build_args $properties" echo $args "$DOTNET_INSTALL_DIR/dotnet" $args #$args || exit $? fi @@ -296,9 +301,8 @@ function BuildSolution { /p:ContinuousIntegrationBuild=$ci \ /p:QuietRestore=$quiet_restore \ /p:QuietRestoreBinaryLog="$binary_log" \ - /p:DotNetBuildSourceOnly=$source_build \ - /p:DotNetBuildRepo=$source_build \ /p:BuildNoRealsig=$buildnorealsig \ + $source_build_args \ $properties fi } From a5d032b23823069e7bdd46a1624ea0b7d957ac27 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Thu, 12 Sep 2024 14:55:43 -0700 Subject: [PATCH 3/9] Split out source build args --- eng/Build.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/Build.ps1 b/eng/Build.ps1 index 6764a1332d6..6305083d0df 100644 --- a/eng/Build.ps1 +++ b/eng/Build.ps1 @@ -292,6 +292,8 @@ function BuildSolution([string] $solutionName, $nopack) { # Do not set the property to true explicitly, since that would override value projects might set. $suppressExtensionDeployment = if (!$deployExtensions) { "/p:DeployExtension=false" } else { "" } + $sourceBuildArgs = if ($sourceBuild) { "/p:DotNetBuildSourceOnly=true /p:DotNetBuildRepo=true" } else { "" } + $BUILDING_USING_DOTNET_ORIG = $env:BUILDING_USING_DOTNET $env:BUILDING_USING_DOTNET="false" @@ -314,11 +316,10 @@ function BuildSolution([string] $solutionName, $nopack) { /p:QuietRestore=$quietRestore ` /p:QuietRestoreBinaryLog=$binaryLog ` /p:TestTargetFrameworks=$testTargetFrameworks ` - /p:DotNetBuildSourceOnly=$sourceBuild ` - /p:DotNetBuildRepo=$sourceBuild ` /p:CompressAllMetadata=$CompressAllMetadata ` /p:BuildNoRealsig=$buildnorealsig ` /v:$verbosity ` + $sourceBuildArgs ` $suppressExtensionDeployment ` @properties From 027c2a096057c93ae375f6a2170bf8c508b2657b Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 13 Sep 2024 09:32:23 -0700 Subject: [PATCH 4/9] Remove unnecessary source build env var set --- eng/SourceBuild.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props index da8ef281a94..9e6f38393bf 100644 --- a/eng/SourceBuild.props +++ b/eng/SourceBuild.props @@ -43,7 +43,7 @@ + EnvironmentVariables="@(InnerBuildEnv)" /> From 06bf5c7aa0a96f5c75544efccbd6717d8368f94c Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 13 Sep 2024 11:01:31 -0700 Subject: [PATCH 5/9] Add properties to the bootstrap compiler build --- eng/SourceBuild.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props index 9e6f38393bf..46fb053d064 100644 --- a/eng/SourceBuild.props +++ b/eng/SourceBuild.props @@ -41,7 +41,7 @@ -bl enables the binlogs for the tools and Proto builds, which make debugging failures here easier --> From fda7889e88dcbefe1cd2dc18ab5f8930c93ae599 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 13 Sep 2024 11:52:32 -0700 Subject: [PATCH 6/9] BuildRepo -> BuildInnerRepo --- eng/SourceBuild.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props index 46fb053d064..f4cd816d9fb 100644 --- a/eng/SourceBuild.props +++ b/eng/SourceBuild.props @@ -41,7 +41,7 @@ -bl enables the binlogs for the tools and Proto builds, which make debugging failures here easier --> From 7fd456927aa01664a0effe5103e6c84dd91fe194 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 13 Sep 2024 12:32:38 -0700 Subject: [PATCH 7/9] Only build proto repo in inner build --- proto.proj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/proto.proj b/proto.proj index 621f39961a6..eb0814976ea 100644 --- a/proto.proj +++ b/proto.proj @@ -4,8 +4,10 @@ Bootstrap - - + + From fbc9ef2d877c273d190e2cd5fe72386d2a9fd1ae Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 13 Sep 2024 12:38:54 -0700 Subject: [PATCH 8/9] Additional VMR properties for completeness --- eng/SourceBuild.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props index f4cd816d9fb..c7bc688ba3e 100644 --- a/eng/SourceBuild.props +++ b/eng/SourceBuild.props @@ -41,7 +41,7 @@ -bl enables the binlogs for the tools and Proto builds, which make debugging failures here easier --> From 41bda43857bbc92a3fed6011664b3e81ffb56cff Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Mon, 16 Sep 2024 08:00:11 -0700 Subject: [PATCH 9/9] Rename sourcebuild.props -> dotnetbuild.props --- eng/{SourceBuild.props => DotNetBuild.props} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eng/{SourceBuild.props => DotNetBuild.props} (100%) diff --git a/eng/SourceBuild.props b/eng/DotNetBuild.props similarity index 100% rename from eng/SourceBuild.props rename to eng/DotNetBuild.props