Skip to content

Commit ef685ad

Browse files
authored
[mono] Check in offsets files used for AOT cross compilers (#109612)
This allows us to remove a join point in the VMR build. Instead of generating the offsets during the AOT cross compiler build we use the checked in files and change the existing CI job to validate that the generated file matches the checked in ones. Fixes dotnet/source-build#3701
1 parent b567474 commit ef685ad

24 files changed

+3274
-154
lines changed

eng/pipelines/common/global-build-job.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,6 @@ jobs:
193193
# credential provider is installed.
194194
- task: NuGetAuthenticate@1
195195

196-
- ${{ each monoCrossAOTTargetOS in parameters.monoCrossAOTTargetOS }}:
197-
- task: DownloadPipelineArtifact@2
198-
displayName: Download ${{monoCrossAOTTargetOS}} AOT offset files
199-
inputs:
200-
artifact: Mono_Offsets_${{monoCrossAOTTargetOS}}
201-
path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
202-
203196
- ${{ if in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator') }}:
204197
- script: $(Build.SourcesDirectory)/eng/common/native/install-dependencies.sh ${{ parameters.osGroup }}
205198
displayName: Install Build Dependencies

eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ steps:
5959
-arch ${{ parameters.archType }}
6060
/p:BuildMonoAotCrossCompiler=true
6161
/p:BuildMonoAotCrossCompilerOnly=true
62-
/p:MonoLibClang="/usr/local/lib/libclang.so.16"
6362
/p:MonoAOTEnableLLVM=true
6463
/p:CrossBuild=true
6564
displayName: "Build Mono LLVM AOT cross compiler"

eng/pipelines/common/templates/runtimes/run-test-job.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,6 @@ jobs:
256256
-arch $(archType)
257257
/p:BuildMonoAotCrossCompiler=true
258258
/p:BuildMonoAotCrossCompilerOnly=true
259-
/p:MonoLibClang="/usr/local/lib/libclang.so.16"
260259
/p:MonoAOTEnableLLVM=true
261260
displayName: "Build Mono LLVM AOT cross compiler"
262261

eng/pipelines/coreclr/perf-non-wasm-jobs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
platforms:
4040
- linux_x64
4141
jobParameters:
42-
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoAOTEnableLLVM=true /p:MonoEnableLLVM=true /p:BuildMonoAOTCrossCompiler=true /p:MonoLibClang="/usr/local/lib/libclang.so.16" /p:AotHostArchitecture=x64 /p:AotHostOS=linux
42+
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoAOTEnableLLVM=true /p:MonoEnableLLVM=true /p:BuildMonoAOTCrossCompiler=true /p:AotHostArchitecture=x64 /p:AotHostOS=linux
4343
nameSuffix: AOT
4444
isOfficialBuild: false
4545
postBuildSteps:

eng/pipelines/coreclr/perf_slow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ extends:
146146
platforms:
147147
- linux_arm64
148148
jobParameters:
149-
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoAOTEnableLLVM=true /p:MonoEnableLLVM=true /p:BuildMonoAOTCrossCompiler=true /p:MonoLibClang="/usr/local/lib/libclang.so" /p:AotHostArchitecture=arm64 /p:AotHostOS=linux
149+
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoAOTEnableLLVM=true /p:MonoEnableLLVM=true /p:BuildMonoAOTCrossCompiler=true /p:AotHostArchitecture=arm64 /p:AotHostOS=linux
150150
nameSuffix: AOT
151151
isOfficialBuild: false
152152
postBuildSteps:

eng/pipelines/runtime-official.yml

Lines changed: 3 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -382,46 +382,6 @@ extends:
382382
parameters:
383383
name: MonoRuntimePacks
384384

385-
386-
# Build Mono AOT offset headers once, for consumption elsewhere
387-
#
388-
- template: /eng/pipelines/common/platform-matrix.yml
389-
parameters:
390-
jobTemplate: /eng/pipelines/common/global-build-job.yml
391-
buildConfig: release
392-
platforms:
393-
- android_x64
394-
- browser_wasm
395-
- wasi_wasm
396-
- tvos_arm64
397-
- ios_arm64
398-
- maccatalyst_x64
399-
variables:
400-
- name: _osParameter
401-
value: -os linux
402-
- name: _archParameter
403-
value: -arch x64
404-
jobParameters:
405-
templatePath: 'templates-official'
406-
nameSuffix: MonoAOTOffsets
407-
buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup)
408-
postBuildSteps:
409-
# Upload offset files
410-
- task: CopyFiles@2
411-
displayName: Collect offset files
412-
inputs:
413-
sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/'
414-
contents: '**/offsets-*.h'
415-
targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/'
416-
417-
templateContext:
418-
outputs:
419-
- output: pipelineArtifact
420-
displayName: 'Publish Mono AOT offsets'
421-
condition: succeeded()
422-
targetPath: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
423-
artifactName: 'Mono_Offsets_$(osGroup)$(osSubGroup)'
424-
425385
#
426386
# Build Mono release AOT cross-compilers
427387
#
@@ -438,17 +398,9 @@ extends:
438398
jobParameters:
439399
templatePath: 'templates-official'
440400
buildArgs: -s mono+packs -c $(_BuildConfig)
441-
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
401+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:BuildMonoAOTCrossCompilerOnly=true
442402
nameSuffix: CrossAOT_Mono
443403
runtimeVariant: crossaot
444-
dependsOn:
445-
- build_android_x64_release_MonoAOTOffsets
446-
- build_browser_wasm_linux_release_MonoAOTOffsets
447-
- build_wasi_wasm_linux_release_MonoAOTOffsets
448-
monoCrossAOTTargetOS:
449-
- android
450-
- browser
451-
- wasi
452404
isOfficialBuild: ${{ variables.isOfficialBuild }}
453405
postBuildSteps:
454406
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
@@ -466,17 +418,9 @@ extends:
466418
jobParameters:
467419
templatePath: 'templates-official'
468420
buildArgs: -s mono+packs -c $(_BuildConfig)
469-
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
421+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:BuildMonoAOTCrossCompilerOnly=true
470422
nameSuffix: CrossAOT_Mono
471423
runtimeVariant: crossaot
472-
dependsOn:
473-
- build_android_x64_release_MonoAOTOffsets
474-
- build_browser_wasm_linux_release_MonoAOTOffsets
475-
- build_wasi_wasm_linux_release_MonoAOTOffsets
476-
monoCrossAOTTargetOS:
477-
- android
478-
- browser
479-
- wasi
480424
isOfficialBuild: ${{ variables.isOfficialBuild }}
481425
postBuildSteps:
482426
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
@@ -494,23 +438,9 @@ extends:
494438
jobParameters:
495439
templatePath: 'templates-official'
496440
buildArgs: -s mono+packs -c $(_BuildConfig)
497-
/p:MonoCrossAOTTargetOS=android+browser+wasi+tvos+ios+maccatalyst /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
441+
/p:MonoCrossAOTTargetOS=android+browser+wasi+tvos+ios+maccatalyst /p:BuildMonoAOTCrossCompilerOnly=true
498442
nameSuffix: CrossAOT_Mono
499443
runtimeVariant: crossaot
500-
dependsOn:
501-
- build_android_x64_release_MonoAOTOffsets
502-
- build_browser_wasm_linux_release_MonoAOTOffsets
503-
- build_wasi_wasm_linux_release_MonoAOTOffsets
504-
- build_tvos_arm64_release_MonoAOTOffsets
505-
- build_ios_arm64_release_MonoAOTOffsets
506-
- build_maccatalyst_x64_release_MonoAOTOffsets
507-
monoCrossAOTTargetOS:
508-
- android
509-
- browser
510-
- wasi
511-
- tvos
512-
- ios
513-
- maccatalyst
514444
isOfficialBuild: ${{ variables.isOfficialBuild }}
515445
postBuildSteps:
516446
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml

eng/pipelines/runtime.yml

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ extends:
728728
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
729729
eq(variables['isRollingBuild'], true))
730730
731-
# Build Mono AOT offset headers once, for consumption elsewhere
731+
# Build Mono AOT offset headers once, for validation
732732
# Only when mono changed
733733
#
734734
- template: /eng/pipelines/common/platform-matrix.yml
@@ -739,8 +739,7 @@ extends:
739739
- android_x64
740740
- browser_wasm
741741
- wasi_wasm
742-
- tvos_arm64
743-
- ios_arm64
742+
- ios_arm64 # tvos and ios use the same offsets so we only need to build once
744743
- maccatalyst_x64
745744
variables:
746745
- name: _osParameter
@@ -749,20 +748,21 @@ extends:
749748
value: -arch x64
750749
jobParameters:
751750
nameSuffix: MonoAOTOffsets
752-
buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup)
751+
buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup) /p:ValidateMonoOffsets=true
753752
postBuildSteps:
754753
# Upload offset files
755754
- task: CopyFiles@2
756755
displayName: Collect offset files
756+
condition: failed()
757757
inputs:
758-
sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/'
759-
contents: '**/offsets-*.h'
758+
sourceFolder: '$(Build.SourcesDirectory)/src/mono/mono/offsets'
759+
contents: '*.h.new'
760760
targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/'
761761

762762
- publish: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
763+
condition: failed()
763764
artifact: Mono_Offsets_$(osGroup)$(osSubGroup)
764765
displayName: Upload offset files
765-
# needed by crossaot
766766
condition: >-
767767
or(
768768
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
@@ -1199,17 +1199,9 @@ extends:
11991199
- linux_musl_arm64
12001200
jobParameters:
12011201
buildArgs: -s mono+packs -c $(_BuildConfig)
1202-
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
1202+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:BuildMonoAOTCrossCompilerOnly=true
12031203
nameSuffix: CrossAOT_Mono
12041204
runtimeVariant: crossaot
1205-
dependsOn:
1206-
- build_android_x64_release_MonoAOTOffsets
1207-
- build_browser_wasm_linux_release_MonoAOTOffsets
1208-
- build_wasi_wasm_linux_release_MonoAOTOffsets
1209-
monoCrossAOTTargetOS:
1210-
- android
1211-
- browser
1212-
- wasi
12131205
condition: >-
12141206
or(
12151207
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
@@ -1226,17 +1218,9 @@ extends:
12261218
- windows_x64
12271219
jobParameters:
12281220
buildArgs: -s mono+packs -c $(_BuildConfig)
1229-
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
1221+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:BuildMonoAOTCrossCompilerOnly=true
12301222
nameSuffix: CrossAOT_Mono
12311223
runtimeVariant: crossaot
1232-
dependsOn:
1233-
- build_android_x64_release_MonoAOTOffsets
1234-
- build_browser_wasm_linux_release_MonoAOTOffsets
1235-
- build_wasi_wasm_linux_release_MonoAOTOffsets
1236-
monoCrossAOTTargetOS:
1237-
- android
1238-
- browser
1239-
- wasi
12401224
condition: >-
12411225
or(
12421226
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
@@ -1257,23 +1241,9 @@ extends:
12571241
- osx_arm64
12581242
jobParameters:
12591243
buildArgs: -s mono+packs -c $(_BuildConfig)
1260-
/p:MonoCrossAOTTargetOS=android+browser+wasi+tvos+ios+maccatalyst /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
1244+
/p:MonoCrossAOTTargetOS=android+browser+wasi+tvos+ios+maccatalyst /p:BuildMonoAOTCrossCompilerOnly=true
12611245
nameSuffix: CrossAOT_Mono
12621246
runtimeVariant: crossaot
1263-
dependsOn:
1264-
- build_android_x64_release_MonoAOTOffsets
1265-
- build_browser_wasm_linux_release_MonoAOTOffsets
1266-
- build_wasi_wasm_linux_release_MonoAOTOffsets
1267-
- build_tvos_arm64_release_MonoAOTOffsets
1268-
- build_ios_arm64_release_MonoAOTOffsets
1269-
- build_maccatalyst_x64_release_MonoAOTOffsets
1270-
monoCrossAOTTargetOS:
1271-
- android
1272-
- browser
1273-
- wasi
1274-
- tvos
1275-
- ios
1276-
- maccatalyst
12771247
condition: >-
12781248
or(
12791249
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),

src/mono/CMakeLists.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,9 @@ if(NOT AOT_TARGET_TRIPLE STREQUAL "")
130130
if(AOT_TARGET_TRIPLE STREQUAL "x86_64-apple-darwin10")
131131
set(TARGET_SYSTEM_NAME "ios")
132132
set(TARGET_ARCH "x86_64")
133-
elseif(AOT_TARGET_TRIPLE STREQUAL "i386-apple-darwin10")
134-
set(TARGET_SYSTEM_NAME "ios")
135-
set(TARGET_ARCH "x86")
136133
elseif(AOT_TARGET_TRIPLE STREQUAL "aarch64-apple-darwin10")
137134
set(TARGET_SYSTEM_NAME "ios")
138135
set(TARGET_ARCH "arm64")
139-
elseif(AOT_TARGET_TRIPLE STREQUAL "arm-apple-darwin10")
140-
set(TARGET_SYSTEM_NAME "ios")
141-
set(TARGET_ARCH "arm")
142136
elseif(AOT_TARGET_TRIPLE STREQUAL "x86_64-apple-maccatalyst")
143137
set(TARGET_SYSTEM_NAME "darwin")
144138
set(TARGET_ARCH "x86_64")

0 commit comments

Comments
 (0)