From 19c5f544cd666195f21c054efee7be11670bcd76 Mon Sep 17 00:00:00 2001 From: imhameed Date: Mon, 13 Sep 2021 09:33:56 -0400 Subject: [PATCH] [mono] Revive FullAOT test lanes (#55362) We don't ship any products using FullAOT on Linux x64/arm64, but this compilation mode is used for iOS, FullAOT-related issues that affect iOS are likely to be caught by FullAOT on Linux x64/arm64, and it is a lot easier to build, develop, and debug on desktop OSes. --- .../templates/runtimes/run-test-job.yml | 24 +- .../mono/templates/xplat-pipeline-job.yml | 4 + eng/pipelines/runtime.yml | 25 ++ src/mono/msbuild/aot-compile.proj | 13 +- src/tests/Common/testenvironment.proj | 5 +- src/tests/build.sh | 18 +- src/tests/issues.targets | 249 +++++++++++++++++- src/tests/run.proj | 25 +- 8 files changed, 333 insertions(+), 30 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 5729e08972efc1..726ecee0725c0c 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -70,7 +70,10 @@ jobs: # minijit and mono interpreter runtimevariants do not require any special build of the runtime - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, '', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} - ${{ if not(or(eq(parameters.runtimeVariant, 'minijit'), eq(parameters.runtimeVariant, 'monointerpreter'))) }}: - - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + - ${{ if eq(parameters.runtimeVariant, 'llvmfullaot') }}: + - ${{ format('{0}_llvmaot_product_build_{1}{2}_{3}_{4}', parameters.runtimeFlavor, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + - ${{ if not(eq(parameters.runtimeVariant, 'llvmfullaot')) }}: + - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}: - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }} @@ -84,6 +87,17 @@ jobs: variables: + - name: monoAotBuildshCommand + value: '' + + - ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}: + - name: monoAotBuildshCommand + value: 'mono_aot' + + - ${{ if eq(parameters.runtimeVariant, 'llvmfullaot') }}: + - name: monoAotBuildshCommand + value: 'mono_fullaot' + - name: runtimeFlavorArgs value: '' @@ -293,7 +307,7 @@ jobs: displayName: "Patch dotnet with mono" # Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64) - - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), eq(parameters.runtimeVariant, 'llvmaot')) }}: + - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), or(eq(parameters.runtimeVariant, 'llvmaot'), eq(parameters.runtimeVariant, 'llvmfullaot'))) }}: - ${{ if eq(parameters.archType, 'arm64') }}: - script: ./build.sh -subset mono @@ -306,12 +320,12 @@ jobs: /p:MonoAOTLLVMUseCxx11Abi=true displayName: "Build Mono LLVM AOT cross compiler" - - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), eq(parameters.runtimeVariant, 'llvmaot')) }}: + - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), or(eq(parameters.runtimeVariant, 'llvmaot'), eq(parameters.runtimeVariant, 'llvmfullaot'))) }}: - ${{ if eq(parameters.archType, 'x64') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType) $(runtimeVariantArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(monoAotBuildshCommand) $(buildConfig) $(archType) $(runtimeVariantArg) displayName: "LLVM AOT compile CoreCLR tests" - ${{ if eq(parameters.archType, 'arm64') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType) cross $(runtimeVariantArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(monoAotBuildshCommand) $(buildConfig) $(archType) cross $(runtimeVariantArg) displayName: "LLVM AOT cross-compile CoreCLR tests" env: __MonoToolPrefix: aarch64-linux-gnu- diff --git a/eng/pipelines/mono/templates/xplat-pipeline-job.yml b/eng/pipelines/mono/templates/xplat-pipeline-job.yml index 0b0ae5a28f6e64..4d07037c413a04 100644 --- a/eng/pipelines/mono/templates/xplat-pipeline-job.yml +++ b/eng/pipelines/mono/templates/xplat-pipeline-job.yml @@ -63,6 +63,10 @@ jobs: - name : buildProductArtifactName value : 'MonoProduct___$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' + - ${{ if eq(parameters.runtimeVariant, 'llvmfullaot') }}: + - name : buildProductArtifactName + value : 'MonoProduct__llvmaot_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' + - name: binTestsPath value: '$(Build.SourcesDirectory)/artifacts/tests/coreclr' diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 0fca635b793987..c85ddd293736e1 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1069,6 +1069,31 @@ jobs: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isFullMatrix'], true)) +# +# Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT +# Only when Mono is changed +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_x64 + - Linux_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + liveRuntimeBuildConfig: release + runtimeVariant: llvmfullaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isFullMatrix'], true)) + # # Libraries Release Test Execution against a release mono runtime. # Only when libraries or mono changed diff --git a/src/mono/msbuild/aot-compile.proj b/src/mono/msbuild/aot-compile.proj index 3a2e71619d2347..9a1097510524d7 100644 --- a/src/mono/msbuild/aot-compile.proj +++ b/src/mono/msbuild/aot-compile.proj @@ -1,10 +1,21 @@ + + $([System.IO.Path]::GetDirectoryName($(_TestDll))) + - + + + + + @(MonoPathItem->'%(Identity)', ':') + + + + diff --git a/src/tests/Common/testenvironment.proj b/src/tests/Common/testenvironment.proj index 540eb4698c777f..f040056fd35e10 100644 --- a/src/tests/Common/testenvironment.proj +++ b/src/tests/Common/testenvironment.proj @@ -221,9 +221,12 @@ <_TestEnvFileLine Condition="'$(RuntimeVariant)' == 'monointerpreter'" Include="export MONO_ENV_OPTIONS=--interpreter" /> - + <_TestEnvFileLine Condition="'$(RuntimeVariant)' == 'llvmaot'" Include="export MONO_ENV_OPTIONS=--llvm" /> + + <_TestEnvFileLine Condition="'$(RuntimeVariant)' == 'llvmfullaot'" Include="export MONO_ENV_OPTIONS=--full-aot" /> + <_TestEnvFileLine Condition="'$(Scenario)' == 'clrinterpreter'" Include="export COMPlus_Interpret=%2A" /> <_TestEnvFileLine Condition="'$(Scenario)' == 'clrinterpreter'" Include="export COMPlus_InterpreterHWIntrinsicsIsSupportedFalse=1" /> diff --git a/src/tests/build.sh b/src/tests/build.sh index ac59074ac35c12..b2d926ef4fe39e 100755 --- a/src/tests/build.sh +++ b/src/tests/build.sh @@ -43,12 +43,16 @@ build_test_wrappers() build_mono_aot() { __RuntimeFlavor="mono" - __Exclude="$__RepoRootDir/src/tests/issues.targets" __TestBinDir="$__TestWorkingDir" + __Exclude="$__RepoRootDir/src/tests/issues.targets" CORE_ROOT="$__TestBinDir"/Tests/Core_Root + __MonoFullAotPropVal="false" + if [[ "$__MonoFullAot" -eq 1 ]]; then + __MonoFullAotPropVal="true" + fi export __Exclude export CORE_ROOT - build_MSBuild_projects "Tests_MonoAot" "$__RepoRootDir/src/tests/run.proj" "Mono AOT compile tests" "/t:MonoAotCompileTests" "/p:RuntimeFlavor=$__RuntimeFlavor" "/p:MonoBinDir=$__MonoBinDir" + build_MSBuild_projects "Tests_MonoAot" "$__RepoRootDir/src/tests/run.proj" "Mono AOT compile tests" "/t:MonoAotCompileTests" "/p:RuntimeFlavor=$__RuntimeFlavor" "/p:MonoBinDir=$__MonoBinDir" "/p:MonoFullAot=$__MonoFullAotPropVal" } build_ios_apps() @@ -530,6 +534,11 @@ handle_arguments_local() { __MonoAot=1 ;; + mono_fullaot|-mono_fullaot) + __Mono=1 + __MonoFullAot=1 + ;; + *) __UnprocessedBuildArgs+=("$1") ;; @@ -586,6 +595,7 @@ __CMakeArgs="" __priority1= __Mono=0 __MonoAot=0 +__MonoFullAot=0 CORE_ROOT= source $__RepoRootDir/src/coreclr/_build-commons.sh @@ -638,11 +648,11 @@ if [[ "$__RebuildTests" -ne 0 ]]; then fi fi -if [[ (-z "$__GenerateLayoutOnly") && (-z "$__BuildTestWrappersOnly") && ("$__MonoAot" -eq 0) ]]; then +if [[ (-z "$__GenerateLayoutOnly") && (-z "$__BuildTestWrappersOnly") && ("$__MonoAot" -eq 0) && ("$__MonoFullAot" -eq 0) ]]; then build_Tests elif [[ ! -z "$__BuildTestWrappersOnly" ]]; then build_test_wrappers -elif [[ "$__MonoAot" -eq 1 ]]; then +elif [[ ("$__MonoAot" -eq 1) || ("$__MonoFullAot" -eq 1) ]]; then build_mono_aot else generate_layout diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 0b09eccb568fae..fefbdf09003331 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2079,9 +2079,6 @@ needs triage - - needs triage - needs triage @@ -2095,9 +2092,6 @@ needs triage - - https://github.com/dotnet/runtime/issues/48914 - https://github.com/dotnet/runtime/issues/54113 @@ -2105,6 +2099,233 @@ needs triage + + + + + https://github.com/dotnet/runtime/issues/57361 + + + https://github.com/dotnet/runtime/issues/57362 + + + https://github.com/dotnet/runtime/issues/57361 + + + https://github.com/dotnet/runtime/issues/57361 + + + https://github.com/dotnet/runtime/issues/57361 + + + https://github.com/dotnet/runtime/issues/57361 + + + https://github.com/dotnet/runtime/issues/57369 + + + https://github.com/dotnet/runtime/issues/57369 + + + https://github.com/dotnet/runtime/issues/57369 + + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + https://github.com/dotnet/runtime/issues/57350 + + + + llvmfullaot: EH problem + + + llvmfullaot: EH problem + + + + https://github.com/dotnet/runtime/issues/57353 + + + https://github.com/dotnet/runtime/issues/57353 + + + + https://github.com/dotnet/runtime/issues/57352 + + + https://github.com/dotnet/runtime/issues/57352 + + + https://github.com/dotnet/runtime/issues/57352 + + + + https://github.com/dotnet/runtime/issues/57512 + + + + + + https://github.com/dotnet/runtime/issues/48914 + + + https://github.com/dotnet/runtime/issues/58062 + + + needs triage + + + needs triage + needs triage @@ -2117,9 +2338,6 @@ needs triage - - needs triage - needs triage @@ -2141,17 +2359,20 @@ needs triage - - needs triage - needs triage needs triage - - https://github.com/dotnet/runtime/issues/58062 + + + + + https://github.com/dotnet/runtime/issues/57371 + + + https://github.com/dotnet/runtime/issues/57350 diff --git a/src/tests/run.proj b/src/tests/run.proj index b7fe57ead80de5..f812ee9ea6a657 100644 --- a/src/tests/run.proj +++ b/src/tests/run.proj @@ -579,8 +579,19 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). - - + + + + + + + + + + + + + @@ -594,6 +605,7 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). + @@ -613,18 +625,21 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). @(MonoAotOption->'%(Identity)', ',') - $(CORE_ROOT) + $(CORE_ROOT) + + + - _AotCompiler=$(AotCompiler);_TestDll=%(TestDlls.Identity);_MonoPath=$(MonoPath);_MonoAotOptions=$(MonoAotOptions) + _AotCompiler=$(AotCompiler);_TestDll=%(AllDlls.Identity);_MonoPath=$(MonoPath);_MonoAotOptions=$(MonoAotOptions)