Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f6e9722
[Apple mobile] Stage the R2R app payload outside the crossgen2 input dir
davidnguyen-tech Aug 18, 2026
74ba84a
Warn instead of failing when the publish dir already holds R2R output
davidnguyen-tech Aug 18, 2026
89052bd
Drop the stale input check
davidnguyen-tech Aug 18, 2026
34d0bc6
Add a regression test for the Helix R2R staging behaviour
davidnguyen-tech Aug 19, 2026
6c965d2
Pin the child SDK and narrow the CI trigger
davidnguyen-tech Aug 19, 2026
1d85c36
Do not leave an empty PATH entry behind for the child
davidnguyen-tech Aug 19, 2026
079c6a9
Move Apple build regression tests out of WASM
davidnguyen-tech Aug 19, 2026
0746a40
Isolate the Apple build tests from the src/mono targets
davidnguyen-tech Aug 19, 2026
57fbd8e
Shield the child build from a global.json above the temp directory
davidnguyen-tech Aug 19, 2026
3886fa3
Promote Apple build tests to a top-level subset
davidnguyen-tech Aug 20, 2026
843fc04
Run Apple build tests on macOS
davidnguyen-tech Aug 20, 2026
6969cbe
Clarify Apple build test CI requirements
davidnguyen-tech Aug 20, 2026
34a90b5
Finalize Apple R2R bundle source paths during preparation
davidnguyen-tech Aug 20, 2026
16ad56b
Simplify Apple R2R bundle source selection
davidnguyen-tech Aug 20, 2026
a5137fc
Clarify Apple R2R regression assertions
davidnguyen-tech Aug 21, 2026
8d5d92c
Apply unstaged changes for CI filtering
davidnguyen-tech Aug 21, 2026
528e6c9
Clarify direct Apple build test wiring
davidnguyen-tech Aug 21, 2026
c71a7f8
Record required Copilot attribution
davidnguyen-tech Aug 21, 2026
648552b
Run Apple build tests before tvOS Helix submission
davidnguyen-tech Sep 1, 2026
64a3ee0
Temporarily test Apple R2R IL stripping
davidnguyen-tech Sep 1, 2026
149bc2e
Restore Apple R2R IL stripping opt-outs
davidnguyen-tech Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,18 @@ jobs:
testGroup: innerloop
nameSuffix: AllSubsets_CoreCLR
buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:UseMonoRuntime=false /p:UseNativeAOTRuntime=false $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:EnableAggressiveTrimming=true
enablePublishTestResults: true
testResultsFormat: 'xunit'
timeoutInMinutes: 240
# extra steps, run tests
postBuildSteps:
- script: >-
$(Build.SourcesDirectory)/build.sh
--projects
$(Build.SourcesDirectory)/src/mono/msbuild/apple/tests/Apple.Build.Tests/Apple.Build.Tests.csproj
-c $(_BuildConfig)
-test
displayName: Run Apple build tests
- template: /eng/pipelines/libraries/helix.yml
parameters:
creator: dotnet-bot
Expand Down
45 changes: 33 additions & 12 deletions src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
<PublishDir>$(OriginalPublishDir)</PublishDir>
</PropertyGroup>

<!-- The app bundle source is staged outside publish because publish is the crossgen2
input for every run, and AppleAppBuilder bundles every top-level entry of its AppDir. -->
<PropertyGroup Condition="'$(PublishReadyToRun)' == 'true' and '$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true'">
<_R2RAppBundleSourceDir>$([MSBuild]::NormalizeDirectory($(BaseIntermediateOutputPath), 'r2r-app-bundle-source'))</_R2RAppBundleSourceDir>
</PropertyGroup>

<PropertyGroup Condition="'$(UseNativeAOTRuntime)' == 'true'">
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<UseArtifactsIntermediateOutput>true</UseArtifactsIntermediateOutput>
Expand Down Expand Up @@ -114,19 +120,24 @@
<MainLibraryFileName Condition="'$(MainLibraryFileName)' == '' and '$(IncludesTestRunner)' == 'true' and '$(_NativeAotLibraryTestOnHelix)' != 'true'">AppleTestRunner.dll</MainLibraryFileName>
<MainLibraryFileName Condition="'$(_NativeAotLibraryTestOnHelix)' == 'true'"></MainLibraryFileName>

<AppleBuildDir>$(OriginalPublishDir)</AppleBuildDir>
<AppleBuildDir Condition="'$(PublishReadyToRun)' == 'true' and '$(UseMonoRuntime)' != 'true' and '$(UseNativeAOTRuntime)' != 'true' and '$(PublishReadyToRunContainerFormat)' == 'macho'">$(_R2RAppBundleSourceDir)</AppleBuildDir>
<AppleBuildDir Condition="'$(AppleBuildDir)' == ''">$(OriginalPublishDir)</AppleBuildDir>
<AppleBundleDir>$(TestRootDir)AppBundle\</AppleBundleDir>
</PropertyGroup>

<ItemGroup Condition="'$(_NativeAotLibraryTestOnHelix)' != 'true'">
<!-- Figure out if we can support JustInterp mode -->
<AppleAssembliesToBundle Include="$(OriginalPublishDir)\*.dll" Exclude="$(OriginalPublishDir)\*.resources.dll" />
<_PublishAssemblies Include="$(OriginalPublishDir)*.dll" Exclude="$(OriginalPublishDir)*.resources.dll" />
<_PublishNativeFiles Include="$(OriginalPublishDir)**\*.*" Exclude="$(OriginalPublishDir)*.dll" />

<!-- Extra files are NativeLibraries and should be excluded from AppleAssembliesToBundle -->
<_ExtraFiles Include="$(ExtraFilesPath)**\*" />

<AppleNativeFilesToBundle Include="@(_ExtraFiles)" Exclude="$(OriginalPublishDir)\*.dll" />
<AppleNativeFilesToBundle Include="$(OriginalPublishDir)\**\*.*" Exclude="$(OriginalPublishDir)\*.dll" />
<!-- For R2R these are future bundle-source paths. _AddR2RFilesToAppleBundle materializes them
before the shared Apple targets consume the final item identities. -->
<AppleAssembliesToBundle Include="@(_PublishAssemblies->'$(AppleBuildDir)%(Filename)%(Extension)')" />
<AppleNativeFilesToBundle Include="@(_ExtraFiles)" />
<AppleNativeFilesToBundle Include="@(_PublishNativeFiles->'$(AppleBuildDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</ItemGroup>

<!-- For NativeAOT library mode we need to manually create the 'obj' dir and copy all assemblies in there to properly build the library -->
Expand Down Expand Up @@ -167,19 +178,24 @@
<_R2RDylibFiles Include="$(_R2ROutputPath)\*.r2r.dylib" />
</ItemGroup>

<Warning Condition="'@(_R2RCompiledAssemblies)' == ''" Text="No R2R compiled assemblies found at $(_R2ROutputPath)." />
<Warning Condition="'@(_R2RDylibFiles)' == ''" Text="No R2R dylib files found at $(_R2ROutputPath)." />

<Copy SourceFiles="@(_R2RCompiledAssemblies)"
DestinationFolder="$(OriginalPublishDir)"
OverwriteReadOnlyFiles="true" />

<Copy SourceFiles="@(_R2RDylibFiles)"
DestinationFolder="$(OriginalPublishDir)"
OverwriteReadOnlyFiles="true" />
<!-- Recreated on every run so that a Helix retry in the same work item cannot inherit stale dylibs
or app builder output from a previous attempt. -->
<RemoveDir Directories="$(_R2RAppBundleSourceDir)" />
<MakeDir Directories="$(_R2RAppBundleSourceDir)" />

<ItemGroup>
<AppleNativeFilesToBundle Include="@(_R2RDylibFiles->'$(OriginalPublishDir)%(Filename)%(Extension)')" />
<_R2RAppBundleSourceFiles Include="$(OriginalPublishDir)**\*" />
</ItemGroup>

<Copy SourceFiles="@(_R2RAppBundleSourceFiles)"
DestinationFiles="@(_R2RAppBundleSourceFiles->'$(_R2RAppBundleSourceDir)%(RecursiveDir)%(Filename)%(Extension)')" />

<Copy SourceFiles="@(_R2RCompiledAssemblies);@(_R2RDylibFiles)"
DestinationFolder="$(_R2RAppBundleSourceDir)"
OverwriteReadOnlyFiles="true" />
</Target>

<Target Name="_PrepareR2RItemsOnHelix">
Expand All @@ -188,6 +204,11 @@
<RuntimeIdentifier>$(TargetOS)-$(TargetArchitecture)</RuntimeIdentifier>
</PropertyGroup>

<!-- The compilation is skipped whenever the tracked output, the composite image, is newer than the
inputs, and the per assembly outputs written next to it are not tracked at all, so an attempt
that was killed mid write can look up to date to the next one. Always compile from scratch. -->
<RemoveDir Directories="$(IntermediateOutputPath)R2R" />

<ItemGroup>
<ResolvedFileToPublish Remove="@(ResolvedFileToPublish)" />
<_R2RPublishAssembly Include="$(OriginalPublishDir)*.dll" Exclude="$(OriginalPublishDir)*.resources.dll" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!-- Use the tool TFM so the tests run on the SDK's own runtime, the way Wasm.Build.Tests and
ILAssembler.Tests do. Nothing here needs the runtime that is being built. -->
<TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<!-- The tests drive the real proxy project, so it has to travel with the test payload. It is laid
out under 'data' to mirror the directory it is shipped from. -->
<None Include="..\..\data\ProxyProjectForAOTOnHelix.proj"
Link="data\ProxyProjectForAOTOnHelix.proj"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

</Project>
Comment thread
davidnguyen-tech marked this conversation as resolved.
Loading
Loading