diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index b966a4c8c7ff..1b2696c845e3 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -293,15 +293,13 @@ extends:
runTests: false
############### SOURCE BUILD ###############
- # Temporarily removed until the SDK can target net10. The assets produced by upstream repos
- # are net10, but this repo needs net9.
- # - template: /eng/common/templates-official/job/source-build.yml@self
- # parameters:
- # platform:
- # name: Managed
- # container: centosStream9
- # jobProperties:
- # timeoutInMinutes: 30
+ - template: /eng/common/templates-official/job/source-build.yml@self
+ parameters:
+ platform:
+ name: Managed
+ container: centosStream9
+ jobProperties:
+ timeoutInMinutes: 30
############### DOTNET-FORMAT ###############
- ${{ if or(eq(parameters.runTestBuild, true), eq(variables['Build.Reason'], 'PullRequest')) }}:
diff --git a/.vsts-pr.yml b/.vsts-pr.yml
index ee6748b90f33..838aa699d3f3 100644
--- a/.vsts-pr.yml
+++ b/.vsts-pr.yml
@@ -65,15 +65,13 @@ stages:
helixTargetQueue: osx.13.amd64.open
############### SOURCE BUILD ###############
- # Temporarily removed until the SDK can target net10. The assets produced by upstream repos
- # are net10, but this repo needs net9.
- # - template: /eng/common/templates-official/job/source-build.yml@self
- # parameters:
- # platform:
- # name: Managed
- # container: centosStream9
- # jobProperties:
- # timeoutInMinutes: 30
+ - template: /eng/common/templates/job/source-build.yml@self
+ parameters:
+ platform:
+ name: Managed
+ container: centosStream9
+ jobProperties:
+ timeoutInMinutes: 30
############### DOTNET-FORMAT ###############
- template: /eng/dotnet-format/dotnet-format-integration.yml
diff --git a/Directory.Build.props b/Directory.Build.props
index 9552cf270487..4d4369595efd 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -37,6 +37,7 @@
net10.0
net10.0
+ $(NetCurrent)
$(SdkTargetFramework)
net8.0
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index f158acb38adb..7ab0b595f844 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -135,17 +135,13 @@
https://github.com/dotnet/roslyn
543cb4568f28b0d2f2cfecdf2d56365b9252e848
-
-
+
https://github.com/dotnet/aspnetcore
- 280c613963a1768b810d09f32c998fe4490855e9
+ eb68e016a554b4da50d7fb0aeffe897cfabf36c7
-
-
+
https://github.com/dotnet/aspnetcore
- 280c613963a1768b810d09f32c998fe4490855e9
+ eb68e016a554b4da50d7fb0aeffe897cfabf36c7
https://github.com/nuget/nuget.client
diff --git a/eng/Versions.props b/eng/Versions.props
index 04388b7ad7d1..211574aa9bd3 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -233,12 +233,12 @@
10.0.0-alpha.2.24568.8
- 9.0.0-rc.2.24474.3
+ 10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
- 9.0.0-rc.2.24474.3
+ 10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
10.0.0-alpha.2.24568.8
diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml
index 33a4bdae80b6..1d2083389922 100644
--- a/eng/pipelines/templates/stages/vmr-build.yml
+++ b/eng/pipelines/templates/stages/vmr-build.yml
@@ -942,6 +942,64 @@ stages:
targetArchitecture: arm64
targetRid: ${{ variables.linuxMuslArm64Rid }}
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: AzureLinux_x64_Cross_ShortStack_Alpine_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: x64
+ pool: ${{ parameters.pool_Linux }}
+ container: ${{ variables.azurelinuxX64AlpineCrossContainer }}
+ crossRootFs: '/crossrootfs/x64'
+ targetOS: linux-musl
+ targetArchitecture: x64
+ targetRid: ${{ variables.linuxMuslX64Rid }}
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: AzureLinux_x64_Cross_ShortStack_Alpine_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: arm64
+ pool: ${{ parameters.pool_Linux }}
+ container: ${{ variables.azurelinuxArm64AlpineCrossContainer }}
+ crossRootFs: '/crossrootfs/arm64'
+ targetOS: linux-musl
+ targetArchitecture: arm64
+ targetRid: ${{ variables.linuxMuslX64Rid }}
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: AzureLinux_x64_Cross_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: x64
+ pool: ${{ parameters.pool_Linux_Shortstack }}
+ container: ${{ variables.azurelinuxX64CrossContainer }}
+ crossRootFs: '/crossrootfs/x64'
+ targetOS: linux
+ targetArchitecture: x64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: AzureLinux_x64_Cross_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: arm64
+ pool: ${{ parameters.pool_Linux_Shortstack }}
+ container: ${{ variables.azurelinuxArm64CrossContainer }}
+ crossRootFs: '/crossrootfs/arm64'
+ targetOS: linux
+ targetArchitecture: arm64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
- template: ../jobs/vmr-build.yml
parameters:
buildName: AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT
@@ -993,6 +1051,30 @@ stages:
targetOS: osx
targetArchitecture: arm64
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: OSX_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: x64
+ pool: ${{ parameters.pool_Mac }}
+ targetOS: osx
+ targetArchitecture: x64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: OSX_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: arm64
+ pool: ${{ parameters.pool_Mac }}
+ targetOS: osx
+ targetArchitecture: arm64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX_ShortStack_Mono_LLVMJIT
@@ -1051,6 +1133,30 @@ stages:
targetOS: windows
targetArchitecture: x64
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: Windows_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: x64
+ pool: ${{ parameters.pool_Windows }}
+ targetOS: windows
+ targetArchitecture: x64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: Windows_ShortStack_Mono_CrossAOT
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: arm64
+ pool: ${{ parameters.pool_Windows }}
+ targetOS: windows
+ targetArchitecture: arm64
+ extraProperties: /p:DotNetBuildMonoCrossAOT=true
+ runTests: false
+
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
diff --git a/src/SourceBuild/content/Directory.Build.props b/src/SourceBuild/content/Directory.Build.props
index f088f0499d2e..2de080d8f33e 100644
--- a/src/SourceBuild/content/Directory.Build.props
+++ b/src/SourceBuild/content/Directory.Build.props
@@ -19,7 +19,7 @@
$(TargetOS)
-
+
true
true
@@ -34,6 +34,8 @@
true
true
+
+ true
runtime
diff --git a/src/SourceBuild/content/repo-projects/msbuild.proj b/src/SourceBuild/content/repo-projects/msbuild.proj
index d37114a0f742..e50e9d7613a5 100644
--- a/src/SourceBuild/content/repo-projects/msbuild.proj
+++ b/src/SourceBuild/content/repo-projects/msbuild.proj
@@ -18,9 +18,7 @@
-
-
+
diff --git a/src/SourceBuild/content/repo-projects/nuget-client.proj b/src/SourceBuild/content/repo-projects/nuget-client.proj
index 81eb39fc37c2..45380380ad50 100644
--- a/src/SourceBuild/content/repo-projects/nuget-client.proj
+++ b/src/SourceBuild/content/repo-projects/nuget-client.proj
@@ -20,9 +20,7 @@
-
-
+
diff --git a/src/SourceBuild/content/repo-projects/roslyn-analyzers.proj b/src/SourceBuild/content/repo-projects/roslyn-analyzers.proj
index 04c0b70e19d3..57c6b4a5c39a 100644
--- a/src/SourceBuild/content/repo-projects/roslyn-analyzers.proj
+++ b/src/SourceBuild/content/repo-projects/roslyn-analyzers.proj
@@ -11,9 +11,7 @@
-
-
+
diff --git a/src/SourceBuild/content/repo-projects/roslyn.proj b/src/SourceBuild/content/repo-projects/roslyn.proj
index b5df8da7286d..0d7b27c74b62 100644
--- a/src/SourceBuild/content/repo-projects/roslyn.proj
+++ b/src/SourceBuild/content/repo-projects/roslyn.proj
@@ -37,9 +37,7 @@
-
-
+
diff --git a/src/SourceBuild/content/repo-projects/runtime.proj b/src/SourceBuild/content/repo-projects/runtime.proj
index 6ece535e2a89..5c187068e132 100644
--- a/src/SourceBuild/content/repo-projects/runtime.proj
+++ b/src/SourceBuild/content/repo-projects/runtime.proj
@@ -14,6 +14,7 @@
$(BuildArgs) /p:DotNetBuildMonoEnableLLVM=$(DotNetBuildMonoEnableLLVM)
$(BuildArgs) /p:DotNetBuildMonoAOTEnableLLVM=$(DotNetBuildMonoAOTEnableLLVM)
$(BuildArgs) /p:DotNetBuildMonoBundleLLVMOptimizer=$(DotNetBuildMonoBundleLLVMOptimizer)
+ $(BuildArgs) /p:DotNetBuildMonoCrossAOT=$(DotNetBuildMonoCrossAOT)
$(BuildArgs) $(FlagParameterPrefix)pgoinstrument
$(BuildArgs) /p:UseSystemLibs=$(UseSystemLibs)
diff --git a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch
new file mode 100644
index 000000000000..76d5f11a5849
--- /dev/null
+++ b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch
@@ -0,0 +1,108 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alexander=20K=C3=B6plinger?=
+Date: Mon, 18 Nov 2024 22:38:56 +0100
+Subject: [PATCH] [mono] Fix output directory for cross compilers if OutputRID
+ is overridden
+
+This happens e.g. in the VMR where OutputRID is set globally. We assumed in monoaotcross.proj that the inner mono cross compiler runtime build would put files into a path that matches the target RID but we were using OutputRID in the inner build.
+
+Instead use the preexisting MonoAotCrossDir property.
+---
+ eng/DotNetBuild.props | 1 +
+ src/mono/mono.proj | 16 ++++++++--------
+ src/mono/monoaotcross.proj | 7 +++++--
+ 3 files changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/eng/DotNetBuild.props b/eng/DotNetBuild.props
+index 49f7bdaf9cf..fb0e235841f 100644
+--- a/eng/DotNetBuild.props
++++ b/eng/DotNetBuild.props
+@@ -33,6 +33,7 @@
+ true
+ true
+ true
++ true
+
+
+ $(RuntimeBinDir)$(MonoStaticLibFileName)
+
+ <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)" Condition="Exists($(_MonoAotCrossFilePath))">
+- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName)$(ExeSuffix)
++ $(MonoAotCrossDir)$(MonoAotCrossName)$(ExeSuffix)
+
+ <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dbg" Condition="Exists('$(_MonoAotCrossFilePath).dbg')">
+- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dbg
++ $(MonoAotCrossDir)$(MonoAotCrossName).dbg
+
+ <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dwarf" Condition="Exists('$(_MonoAotCrossFilePath).dwarf')">
+- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dwarf
++ $(MonoAotCrossDir)$(MonoAotCrossName).dwarf
+
+ <_MonoRuntimeArtifacts Include="$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb" Condition="Exists('$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb')">
+- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).pdb
++ $(MonoAotCrossDir)$(MonoAotCrossName).pdb
+
+
+ <_MonoRuntimeArtifacts Include="@(_MonoRuntimeComponentsStaticFilePath)">
+@@ -1119,10 +1119,10 @@ JS_ENGINES = [NODE_JS]
+ $(RuntimeBinDir)libc++abi.so.1
+
+ <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++.so.1">
+- $(RuntimeBinDir)cross\$(OutputRID)\libc++.so.1
++ $(MonoAotCrossDir)libc++.so.1
+
+ <_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++abi.so.1">
+- $(RuntimeBinDir)cross\$(OutputRID)\libc++abi.so.1
++ $(MonoAotCrossDir)libc++abi.so.1
+
+ <_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)">
+ $(RuntimeBinDir)\llc$(ExeSuffix)
+@@ -1131,10 +1131,10 @@ JS_ENGINES = [NODE_JS]
+ $(RuntimeBinDir)\opt$(ExeSuffix)
+
+ <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)">
+- $(RuntimeBinDir)cross\$(OutputRID)\llc$(ExeSuffix)
++ $(MonoAotCrossDir)llc$(ExeSuffix)
+
+ <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\opt$(ExeSuffix)">
+- $(RuntimeBinDir)cross\$(OutputRID)\opt$(ExeSuffix)
++ $(MonoAotCrossDir)opt$(ExeSuffix)
+
+ <_MonoIncludeArtifacts Include="$(MonoObjDir)out\include\**" />
+ <_MonoRuntimeArtifacts Condition="'$(MonoComponentsStatic)' != 'true' and Exists('$(MonoObjDir)out\lib\Mono.release.framework')" Include="@(_MonoRuntimeComponentsSharedFilePath)">
+diff --git a/src/mono/monoaotcross.proj b/src/mono/monoaotcross.proj
+index c747e87f763..d5969fb48fd 100644
+--- a/src/mono/monoaotcross.proj
++++ b/src/mono/monoaotcross.proj
+@@ -43,20 +43,23 @@
+ $(MonoAotTargetRid.Substring($([MSBuild]::Add(1, $(MonoAotTargetRid.LastIndexOf('-'))))))
+ $(TargetOS)
+ linux-musl
++ $(TargetArchitecture)
+
+
+
++ Properties="TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS);AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture)" />
+
+
++ Properties="AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture);BuildMonoAOTCrossCompilerOnly=true;TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS)" />
+
+
+ <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" />
+
+
++
++
+
+
+