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())\**" /> + + ++ ++ + + +