diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 4ac803009c2d..5a0ddabb36a5 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -497,9 +497,9 @@
-
+
https://github.com/dotnet/source-build-reference-packages
- 432b22e3cdaf69c011358a44e61959769b2f607c
+ 4b566314cf9602b77f25538a88b9c8175231c106
@@ -631,42 +631,42 @@
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
-
+
https://github.com/dotnet/arcade
- 87401be5731aa537bbf4cb71d7800d1c74d5e429
+ 1741844bd26eb13fc4731b1e9aed218686717fbd
diff --git a/eng/Versions.props b/eng/Versions.props
index 1ecc4617a39d..9ad7d3fc79be 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -282,12 +282,12 @@
- 10.0.0-beta.25212.1
- 10.0.0-beta.25212.1
- 10.0.0-beta.25212.1
- 10.0.0-beta.25212.1
- 10.0.0-beta.25212.1
- 10.0.0-beta.25212.1
+ 10.0.0-beta.25215.5
+ 10.0.0-beta.25215.5
+ 10.0.0-beta.25215.5
+ 10.0.0-beta.25215.5
+ 10.0.0-beta.25215.5
+ 10.0.0-beta.25215.5
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index d0422085cb16..2bcf974ee153 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -11,30 +11,6 @@ parameters:
steps:
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
- # Install Python 3.12.x on when Python > 3.12.x is installed - https://github.com/dotnet/source-build/issues/4802
- - script: |
- version=$(python3 --version | awk '{print $2}')
- major=$(echo $version | cut -d. -f1)
- minor=$(echo $version | cut -d. -f2)
-
- installPython=false
- if [ "$major" -gt 3 ] || { [ "$major" -eq 3 ] && [ "$minor" -gt 12 ]; }; then
- installPython=true
- fi
-
- echo "Python version: $version."
- echo "Install Python 3.12.x: $installPython."
- echo "##vso[task.setvariable variable=installPython;isOutput=true]$installPython"
- name: InstallPython
- displayName: 'Determine Python installation'
- condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
-
- - task: UsePythonVersion@0
- inputs:
- versionSpec: '3.12.x'
- displayName: 'Use Python 3.12.x'
- condition: and(succeeded(), eq(variables['InstallPython.installPython'], 'true'), ne(variables['Agent.Os'], 'Windows_NT'))
-
# Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
- task: UseDotNet@2
displayName: Install .NET 8.0 SDK for MicroBuild Plugin
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
index ab2b13f63fb2..a9d2a2d26996 100644
--- a/eng/common/sdk-task.ps1
+++ b/eng/common/sdk-task.ps1
@@ -6,12 +6,13 @@ Param(
[string] $msbuildEngine = $null,
[switch] $restore,
[switch] $prepareMachine,
+ [switch][Alias('nobl')]$excludeCIBinaryLog,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
$ci = $true
-$binaryLog = $true
+$binaryLog = if ($excludeCIBinaryLog) { $false } else { $true }
$warnAsError = $true
. $PSScriptRoot\tools.ps1
@@ -27,6 +28,7 @@ function Print-Usage() {
Write-Host "Advanced settings:"
Write-Host " -prepareMachine Prepare machine for CI run"
Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
+ Write-Host " -excludeCIBinaryLog When running on CI, allow no binary log (short: -nobl)"
Write-Host ""
Write-Host "Command line arguments not listed above are passed thru to msbuild."
}
@@ -34,10 +36,11 @@ function Print-Usage() {
function Build([string]$target) {
$logSuffix = if ($target -eq 'Execute') { '' } else { ".$target" }
$log = Join-Path $LogDir "$task$logSuffix.binlog"
+ $binaryLogArg = if ($binaryLog) { "/bl:$log" } else { "" }
$outputPath = Join-Path $ToolsetDir "$task\"
MSBuild $taskProject `
- /bl:$log `
+ $binaryLogArg `
/t:$target `
/p:Configuration=$configuration `
/p:RepoRoot=$RepoRoot `
diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh
index b9b9e58db9ad..2f83adc0269f 100644
--- a/eng/common/sdk-task.sh
+++ b/eng/common/sdk-task.sh
@@ -7,6 +7,10 @@ show_usage() {
echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
echo " --help Print help and exit"
echo ""
+
+ echo "Advanced settings:"
+ echo " --excludeCIBinarylog Don't output binary log (short: -nobl)"
+ echo ""
echo "Command line arguments not listed above are passed thru to msbuild."
}
@@ -27,10 +31,12 @@ Build() {
local log_suffix=""
[[ "$target" != "Execute" ]] && log_suffix=".$target"
local log="$log_dir/$task$log_suffix.binlog"
+ local binaryLogArg=""
+ [[ $binary_log == true ]] && binaryLogArg="/bl:$log"
local output_path="$toolset_dir/$task/"
MSBuild "$taskProject" \
- /bl:"$log" \
+ $binaryLogArg \
/t:"$target" \
/p:Configuration="$configuration" \
/p:RepoRoot="$repo_root" \
@@ -39,8 +45,10 @@ Build() {
$properties
}
+binary_log=true
configuration="Debug"
verbosity="minimal"
+exclude_ci_binary_log=false
restore=false
help=false
properties=''
@@ -60,6 +68,11 @@ while (($# > 0)); do
verbosity=$2
shift 2
;;
+ --excludecibinarylog|--nobl)
+ binary_log=false
+ exclude_ci_binary_log=true
+ shift 1
+ ;;
--help)
help=true
shift 1
@@ -72,7 +85,6 @@ while (($# > 0)); do
done
ci=true
-binaryLog=true
warnAsError=true
if $help; then
diff --git a/global.json b/global.json
index d586ecd1ad07..0246e1172b85 100644
--- a/global.json
+++ b/global.json
@@ -14,8 +14,8 @@
}
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25212.1",
- "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25212.1",
+ "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25215.5",
+ "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25215.5",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0"
}
diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props
index c929632b274c..5663ed90b110 100644
--- a/src/SourceBuild/content/eng/Versions.props
+++ b/src/SourceBuild/content/eng/Versions.props
@@ -23,8 +23,8 @@
of a .NET major or minor release, prebuilts may be needed. When the release is mature, prebuilts
are not necessary, and this property is removed from the file.
-->
- 10.0.100-preview.4.25214.1
- 10.0.100-preview.4.25214.1
+ 10.0.100-preview.4.25216.1
+ 10.0.100-preview.4.25216.1
10.0.0-beta.25110.3
diff --git a/src/SourceBuild/content/eng/tools/BinaryToolKit/Program.cs b/src/SourceBuild/content/eng/tools/BinaryToolKit/Program.cs
index 5feb90aad74a..768e76e36d0a 100644
--- a/src/SourceBuild/content/eng/tools/BinaryToolKit/Program.cs
+++ b/src/SourceBuild/content/eng/tools/BinaryToolKit/Program.cs
@@ -9,20 +9,20 @@ namespace BinaryToolKit;
public class Program
{
- public static readonly CliArgument TargetDirectory = new("target-directory")
+ public static readonly Argument TargetDirectory = new("target-directory")
{
Description = "The directory to run the binary tooling on.",
Arity = ArgumentArity.ExactlyOne
};
- public static readonly CliOption OutputReportDirectory = new("--output-directory", "-o")
+ public static readonly Option OutputReportDirectory = new("--output-directory", "-o")
{
Description = "The directory to output the report to.",
Arity = ArgumentArity.ZeroOrOne,
DefaultValueFactory = _ => Path.Combine(Directory.GetCurrentDirectory(), "binary-report")
};
- public static readonly CliOption Level = new("--log-level", "-l")
+ public static readonly Option Level = new("--log-level", "-l")
{
Description = "The log level to run the tool in.",
Arity = ArgumentArity.ZeroOrOne,
@@ -30,7 +30,7 @@ public class Program
Recursive = true
};
- public static readonly CliOption AllowedBinariesFile = new("--allowed-binaries-file", "-ab")
+ public static readonly Option AllowedBinariesFile = new("--allowed-binaries-file", "-ab")
{
Description = "The file containing the list of allowed binaries that are ignored for cleaning or validating.\n",
Arity = ArgumentArity.ZeroOrOne
@@ -43,7 +43,7 @@ public static async Task Main(string[] args)
var cleanCommand = CreateCommand("clean", "Clean the binaries in the target directory.");
var validateCommand = CreateCommand("validate", "Detect new binaries in the target directory.");
- var rootCommand = new CliRootCommand("Tool for detecting, validating, and cleaning binaries in the target directory.")
+ var rootCommand = new RootCommand("Tool for detecting, validating, and cleaning binaries in the target directory.")
{
Level,
cleanCommand,
@@ -58,9 +58,9 @@ public static async Task Main(string[] args)
return ExitCode;
}
- private static CliCommand CreateCommand(string name, string description)
+ private static Command CreateCommand(string name, string description)
{
- return new CliCommand(name, description)
+ return new Command(name, description)
{
TargetDirectory,
OutputReportDirectory,
@@ -68,7 +68,7 @@ private static CliCommand CreateCommand(string name, string description)
};
}
- private static void SetCommandAction(CliCommand command, Modes mode)
+ private static void SetCommandAction(Command command, Modes mode)
{
command.SetAction(async (result, CancellationToken) =>
{
diff --git a/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs b/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
index 4c5f938173e8..2e0528abc8f0 100644
--- a/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
+++ b/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
@@ -24,43 +24,43 @@ public class Program
/// Return code indicating success (0) or failure (non-zero).
static int Main(string[] args)
{
- var vmrManifestPathArgument = new CliOption("-vmrManifestPath")
+ var vmrManifestPathArgument = new Option("-vmrManifestPath")
{
Description = "Path to the manifest file",
Required = true
};
- var vmrAssetBasePathArgument = new CliOption("-vmrAssetBasePath")
+ var vmrAssetBasePathArgument = new Option("-vmrAssetBasePath")
{
Description = "Path to the manifest file",
Required = true
};
- var msftAssetBasePathArgument = new CliOption("-msftAssetBasePath")
+ var msftAssetBasePathArgument = new Option("-msftAssetBasePath")
{
Description = "Path to the asset base path",
Required = true
};
- var issuesReportArgument = new CliOption("-issuesReport")
+ var issuesReportArgument = new Option("-issuesReport")
{
Description = "Path to output xml file for non-baselined issues.",
Required = true
};
- var noIssuesReportArgument = new CliOption("-noIssuesReport")
+ var noIssuesReportArgument = new Option("-noIssuesReport")
{
Description = "Path to output xml file for baselined issues and assets without issues.",
Required = true
};
- var parallelismArgument = new CliOption("-parallel")
+ var parallelismArgument = new Option("-parallel")
{
Description = "Amount of parallelism used while analyzing the builds.",
DefaultValueFactory = _ => 8,
Required = true
};
- var baselineArgument = new CliOption("-baseline")
+ var baselineArgument = new Option("-baseline")
{
Description = "Path to the baseline build manifest.",
Required = true
};
- var rootCommand = new CliRootCommand(description: "Tool for comparing Microsoft builds with VMR builds.")
+ var rootCommand = new RootCommand(description: "Tool for comparing Microsoft builds with VMR builds.")
{
vmrManifestPathArgument,
vmrAssetBasePathArgument,
diff --git a/src/SourceBuild/content/eng/tools/CreateBaselineUpdatePR/Program.cs b/src/SourceBuild/content/eng/tools/CreateBaselineUpdatePR/Program.cs
index 641f3b20df18..bdf940673386 100644
--- a/src/SourceBuild/content/eng/tools/CreateBaselineUpdatePR/Program.cs
+++ b/src/SourceBuild/content/eng/tools/CreateBaselineUpdatePR/Program.cs
@@ -9,52 +9,52 @@ namespace CreateBaselineUpdatePR;
public class Program
{
- public static readonly CliArgument Repo = new("repo")
+ public static readonly Argument Repo = new("repo")
{
Description = "The GitHub repository to create the PR in. Should be in the form '/'",
Arity = ArgumentArity.ExactlyOne
};
- public static readonly CliArgument OriginalFilesDirectory = new("original-files-directory")
+ public static readonly Argument OriginalFilesDirectory = new("original-files-directory")
{
Description = "The directory where the original test files are located. Should be relative to the repo",
Arity = ArgumentArity.ExactlyOne
};
- public static readonly CliArgument UpdatedFilesDirectory = new("updated-files-directory")
+ public static readonly Argument UpdatedFilesDirectory = new("updated-files-directory")
{
Description = "The directory containing the updated test files published by the associated test. Should be absolute or relative to the working directory of the tool.",
Arity = ArgumentArity.ExactlyOne
};
- public static readonly CliArgument BuildId = new("build-id")
+ public static readonly Argument BuildId = new("build-id")
{
Description = "The id of the build that published the updated test files.",
Arity = ArgumentArity.ExactlyOne
};
- public static readonly CliOption Title = new("--title", "-t")
+ public static readonly Option Title = new("--title", "-t")
{
Description = "The title of the PR.",
Arity = ArgumentArity.ZeroOrOne,
DefaultValueFactory = _ => "Update Test Baselines and Exclusions"
};
- public static readonly CliOption Branch = new("--branch", "-b")
+ public static readonly Option Branch = new("--branch", "-b")
{
Description = "The target branch of the PR.",
Arity = ArgumentArity.ZeroOrOne,
DefaultValueFactory = _ => "main"
};
- public static readonly CliOption GitHubToken = new("--github-token", "-g")
+ public static readonly Option GitHubToken = new("--github-token", "-g")
{
Description = "The GitHub token to use to create the PR.",
Arity = ArgumentArity.ZeroOrOne,
DefaultValueFactory = _ => Environment.GetEnvironmentVariable("GH_TOKEN") ?? throw new ArgumentException("GitHub token not provided.")
};
- public static readonly CliOption Level = new("--log-level", "-l")
+ public static readonly Option Level = new("--log-level", "-l")
{
Description = "The log level to run the tool in.",
Arity = ArgumentArity.ZeroOrOne,
@@ -69,7 +69,7 @@ public static async Task Main(string[] args)
var sdkDiffTestsCommand = CreateCommand("sdk", "Creates a PR that updates baselines and exclusion files published by the sdk diff tests.");
var licenseScanTestsCommand = CreateCommand("license", "Creates a PR that updates baselines and exclusion files published by the license scan tests.");
- var rootCommand = new CliRootCommand("Tool for creating PRs that update baselines and exclusion files.")
+ var rootCommand = new RootCommand("Tool for creating PRs that update baselines and exclusion files.")
{
Level,
sdkDiffTestsCommand,
@@ -84,9 +84,9 @@ public static async Task Main(string[] args)
return ExitCode;
}
- private static CliCommand CreateCommand(string name, string description)
+ private static Command CreateCommand(string name, string description)
{
- return new CliCommand(name, description)
+ return new Command(name, description)
{
Repo,
OriginalFilesDirectory,
@@ -98,7 +98,7 @@ private static CliCommand CreateCommand(string name, string description)
};
}
- private static void SetCommandAction(CliCommand command, Pipelines pipeline)
+ private static void SetCommandAction(Command command, Pipelines pipeline)
{
command.SetAction(async (result, CancellationToken) =>
{
diff --git a/src/SourceBuild/content/global.json b/src/SourceBuild/content/global.json
index aefce550fdae..01a09105b25a 100644
--- a/src/SourceBuild/content/global.json
+++ b/src/SourceBuild/content/global.json
@@ -1,6 +1,6 @@
{
"tools": {
- "dotnet": "10.0.100-preview.4.25213.6"
+ "dotnet": "10.0.100-preview.4.25216.3"
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0",
diff --git a/src/SourceBuild/content/repo-projects/wpf.proj b/src/SourceBuild/content/repo-projects/wpf.proj
index ccbb6575b2d0..248594a5401b 100644
--- a/src/SourceBuild/content/repo-projects/wpf.proj
+++ b/src/SourceBuild/content/repo-projects/wpf.proj
@@ -9,6 +9,10 @@
$(BuildArgs) /p:Platform=$(TargetArchitecture)
$(BuildArgs) /p:BuildWithNetFrameworkHostedCompiler=true
+
+
+ $(BuildArgs) /p:ValidateTemplates=false
diff --git a/src/SourceBuild/patches/runtime/0002-dont-use-baseos-as-rid.patch b/src/SourceBuild/patches/runtime/0002-dont-use-baseos-as-rid.patch
new file mode 100644
index 000000000000..f1352c10e6f4
--- /dev/null
+++ b/src/SourceBuild/patches/runtime/0002-dont-use-baseos-as-rid.patch
@@ -0,0 +1,48 @@
+From 14e1f3562b60ae979b3993ee538ca54b34bad328 Mon Sep 17 00:00:00 2001
+From: Jeremy Koritzinsky
+Date: Wed, 16 Apr 2025 15:22:59 -0700
+Subject: [PATCH] Don't use BaseOS as the RID for publishing NativeAOT'd assets
+ when OutputRID is the SDK's RID
+
+This fixes SourceBuild Stage2 failures in https://github.com/dotnet/sdk/pull/48523
+
+Backport: https://github.com/dotnet/runtime/pull/114755
+---
+ src/coreclr/tools/aot/ILCompiler/ILCompiler_publish.csproj | 6 +++++-
+ src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler_publish.csproj b/src/coreclr/tools/aot/ILCompiler/ILCompiler_publish.csproj
+index 3b996b78fb0416..d49edad34c479c 100644
+--- a/src/coreclr/tools/aot/ILCompiler/ILCompiler_publish.csproj
++++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler_publish.csproj
+@@ -3,7 +3,11 @@
+
+ <_IsPublishing>true
+ $(OutputRID)
+- $(BaseOS)
++
++ $(BaseOS)
+ $(RuntimeBinDir)ilc-published/
+ true
+ true
+diff --git a/src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj b/src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj
+index 54953da6834124..8e81546a2770a1 100644
+--- a/src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj
++++ b/src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj
+@@ -3,7 +3,11 @@
+
+ <_IsPublishing>true
+ $(OutputRID)
+- $(BaseOS)
++
++ $(BaseOS)
+ $(RuntimeBinDir)crossgen2-published/
+ true
+ true
diff --git a/src/VirtualMonoRepo/source-mappings.json b/src/VirtualMonoRepo/source-mappings.json
index 5175b4ffe8e8..3c486bcab22d 100644
--- a/src/VirtualMonoRepo/source-mappings.json
+++ b/src/VirtualMonoRepo/source-mappings.json
@@ -150,7 +150,9 @@
},
{
"name": "sourcelink",
- "defaultRemote": "https://github.com/dotnet/sourcelink"
+ "defaultRemote": "https://github.com/dotnet/sourcelink",
+ // Migrated onto the flat flow
+ "disableSynchronization": true
},
{
"name": "symreader",