Skip to content

Commit 9c5838f

Browse files
committed
Merge branch 'main' into dev/grendel/assembly-blobs-per-rid
* main: [ci] Stop building monodroid in builds from forks (#8444) [docs] Don't overwrite xml produced by docs build (#8451) Bump NDK to r26b (#8450) [Tests] Fix TestResolveToolsExists on .NET (#8445)
2 parents 5e4c5e9 + b1bb67b commit 9c5838f

27 files changed

+150
-218
lines changed

build-tools/automation/azure-pipelines.yaml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ resources:
3737
endpoint: xamarin
3838

3939
parameters:
40-
- name: provisionatorChannel
41-
type: string
42-
default: latest # Support for launching a build against a Provisionator PR (e.g., pr/[github-account-name]/[pr-number]) as a means to test in-progress Provisionator changes
4340
- name: macTestAgentsUseCleanImages # Test agents we do not need to clean up when finished because they are not reused
4441
default: true
4542

@@ -83,8 +80,6 @@ variables:
8380
# Stage and Job "display names" are shortened because they are combined to form the name of the corresponding GitHub check.
8481
stages:
8582
- template: yaml-templates/build-macos.yaml
86-
parameters:
87-
provisionatorChannel: ${{ parameters.provisionatorChannel }}
8883

8984
- template: yaml-templates/build-windows.yaml
9085

@@ -107,7 +102,6 @@ stages:
107102
- template: yaml-templates/setup-test-environment.yaml
108103
parameters:
109104
provisionClassic: false
110-
provisionatorChannel: ${{ parameters.provisionatorChannel }}
111105
installLegacyDotNet: false
112106
restoreNUnitConsole: false
113107
updateMono: false
@@ -267,8 +261,6 @@ stages:
267261
- template: yaml-templates/setup-ubuntu.yaml
268262

269263
- template: yaml-templates/setup-test-environment.yaml
270-
parameters:
271-
provisionatorChannel: ${{ parameters.provisionatorChannel }}
272264

273265
- task: DownloadPipelineArtifact@2
274266
inputs:
@@ -347,7 +339,6 @@ stages:
347339
parameters:
348340
xaSourcePath: $(Build.SourcesDirectory)/xamarin-android
349341
provisionClassic: false
350-
provisionatorChannel: ${{ parameters.provisionatorChannel }}
351342
installLegacyDotNet: false
352343
restoreNUnitConsole: false
353344
updateMono: false

build-tools/automation/yaml-templates/build-macos.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ parameters:
1111
jobName: mac_build_create_installers
1212
jobDisplayName: macOS > Build
1313
nugetArtifactName: $(NuGetArtifactName)
14-
provisionatorChannel: latest
1514
repositoryAlias: self
1615
stageName: mac_build
1716
stageDisplayName: Mac
@@ -49,7 +48,6 @@ stages:
4948
parameters:
5049
installerArtifactName: ${{ parameters.installerArtifactName }}
5150
nugetArtifactName: ${{ parameters.nugetArtifactName }}
52-
provisionatorChannel: ${{ parameters.provisionatorChannel }}
5351
testAssembliesArtifactName: ${{ parameters.testAssembliesArtifactName }}
5452

5553
- powershell: |

build-tools/automation/yaml-templates/commercial-build.yaml

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ parameters:
33
xaSourcePath: $(System.DefaultWorkingDirectory)/xamarin-android
44
makeMSBuildArgs: ''
55
nugetArtifactName: $(NuGetArtifactName)
6-
provisionatorChannel: latest
76
testAssembliesArtifactName: $(TestAssembliesArtifactName)
87

98
steps:
@@ -19,55 +18,49 @@ steps:
1918
inputs:
2019
forceReinstallCredentialProvider: true
2120

22-
- task: provisionator@2
23-
displayName: Install Xcode
24-
inputs:
25-
github_token: $(GitHub.Token)
26-
provisioning_script: ${{ parameters.xaSourcePath }}/build-tools/provisioning/xcode.csx
27-
provisioning_extra_args: '-v -v -v -v'
28-
env:
29-
PROVISIONATOR_CHANNEL: ${{ parameters.provisionatorChannel }}
30-
3121
- script: make prepare-update-mono CONFIGURATION=$(XA.Build.Configuration) PREPARE_CI=1 PREPARE_AUTOPROVISION=1
3222
workingDirectory: ${{ parameters.xaSourcePath }}
3323
displayName: make prepare-update-mono
3424

35-
# Clone 'monodroid' without submodules
36-
- checkout: monodroid
37-
clean: true
38-
path: s/xamarin-android/external/monodroid
39-
40-
# Tell git to ignore the 'xamarin-android' submodule, which is large and unneeded
41-
- script: git config submodule."external/xamarin-android".update none
42-
workingDirectory: xamarin-android/external/monodroid
43-
displayName: Ignore XA submodule
44-
45-
# Clone 'monodroid' with the rest of the submodules
46-
- checkout: monodroid
47-
submodules: recursive
48-
path: s/xamarin-android/external/monodroid
49-
persistCredentials: true
50-
51-
- script: rm -rf external/monodroid/external/xamarin-android
52-
workingDirectory: ${{ parameters.xaSourcePath }}
53-
displayName: delete legacy xamarin-android submodule
54-
55-
- script: rm -rf external/opentk
56-
workingDirectory: ${{ parameters.xaSourcePath }}
57-
displayName: delete legacy opentk submodule
58-
59-
- script: rm -rf external/sqlite
60-
workingDirectory: ${{ parameters.xaSourcePath }}
61-
displayName: delete legacy sqlite submodule
25+
# Always checkout a second resource to ensure we are using multi-repo checkout behavior
26+
# https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#checkout-path
27+
- checkout: yaml-templates
28+
29+
- ${{ if ne(variables['System.PullRequest.IsFork'], 'True') }}:
30+
- script: >
31+
ls -l /Applications &&
32+
sudo xcode-select --switch /Applications/Xcode_14.2.app &&
33+
xcode-select --print-path
34+
displayName: Use Xcode 14.2
35+
36+
# Clone 'monodroid' without submodules
37+
- checkout: monodroid
38+
clean: true
39+
path: s/xamarin-android/external/monodroid
40+
41+
# Tell git to ignore the 'xamarin-android' submodule, which is large and unneeded
42+
- script: git config submodule."external/xamarin-android".update none
43+
workingDirectory: xamarin-android/external/monodroid
44+
displayName: Ignore XA submodule
45+
46+
# Clone 'monodroid' with the rest of the submodules
47+
- checkout: monodroid
48+
submodules: recursive
49+
path: s/xamarin-android/external/monodroid
50+
persistCredentials: true
51+
52+
- script: rm -rf external/monodroid/external/xamarin-android
53+
workingDirectory: ${{ parameters.xaSourcePath }}
54+
displayName: delete legacy xamarin-android submodule
55+
56+
- script: make prepare-external-git-dependencies PREPARE_CI=1 CONFIGURATION=$(XA.Build.Configuration)
57+
workingDirectory: ${{ parameters.xaSourcePath }}
58+
displayName: make prepare-external-git-dependencies
6259

6360
- task: CodeQL3000Init@0
6461
displayName: CodeQL 3000 Init
6562
condition: and(succeeded(), eq(variables['Codeql.Enabled'], 'true'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
6663

67-
- script: make prepare-external-git-dependencies PREPARE_CI=1 CONFIGURATION=$(XA.Build.Configuration)
68-
workingDirectory: ${{ parameters.xaSourcePath }}
69-
displayName: make prepare-external-git-dependencies
70-
7164
# Prepare and Build everything
7265
- script: make jenkins CONFIGURATION=$(XA.Build.Configuration) PREPARE_CI=1 PREPARE_AUTOPROVISION=1 MSBUILD_ARGS='${{ parameters.makeMSBuildArgs }}'
7366
workingDirectory: ${{ parameters.xaSourcePath }}

build-tools/automation/yaml-templates/run-installer.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
parameters:
22
provisionExtraArgs: -vv -f
3-
provisionatorChannel: latest
43

54
steps:
65
- task: DownloadPipelineArtifact@2
@@ -38,6 +37,4 @@ steps:
3837
provisioning_script: $(XA.Provisionator.Args)
3938
provisioning_extra_args: ${{ parameters.provisionExtraArgs }}
4039
# Disabled on Windows on .NET release branches
41-
condition: and(succeeded(), ne(variables['agent.os'], 'Linux'), or(eq(variables.IsRelOrTargetingRel, 'False'), eq(variables['agent.os'], 'Darwin')))
42-
env:
43-
PROVISIONATOR_CHANNEL: ${{ parameters.provisionatorChannel }}
40+
condition: and(succeeded(), ne(variables['System.PullRequest.IsFork'], 'True'), ne(variables['agent.os'], 'Linux'), or(eq(variables.IsRelOrTargetingRel, 'False'), eq(variables['agent.os'], 'Darwin')))

build-tools/automation/yaml-templates/setup-test-environment.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
parameters:
22
configuration: $(XA.Build.Configuration)
33
xaSourcePath: $(System.DefaultWorkingDirectory)
4-
updateVS: false
54
jdkTestFolder: $(JAVA_HOME_11_X64)
65
remove_dotnet: false
76
installTestSlicer: false
@@ -24,11 +23,6 @@ steps:
2423
clean: true
2524
submodules: recursive
2625

27-
- ${{ if eq(parameters.updateVS, true) }}:
28-
- template: update-vs.yaml
29-
parameters:
30-
xasourcePath: ${{ parameters.xaSourcePath }}
31-
3226
- script: |
3327
echo "##vso[task.setvariable variable=JI_JAVA_HOME]${{ parameters.jdkTestFolder }}"
3428
echo "##vso[task.setvariable variable=DOTNET_TOOL_PATH]${{ parameters.xaSourcePath }}/bin/${{ parameters.configuration }}/dotnet/dotnet"

build-tools/automation/yaml-templates/update-vs.yaml

Lines changed: 0 additions & 17 deletions
This file was deleted.

build-tools/installers/create-installers.targets

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,29 +29,11 @@
2929
<_EarlierFrameworkDir Include="@(_FrameworkDirsThatExist)" Exclude="$(_LatestStableFrameworkDir)" />
3030
</ItemGroup>
3131
</Target>
32-
<Target Name="_WriteVersionFiles"
33-
DependsOnTargets="GetXAVersionInfo" >
34-
<WriteLinesToFile
35-
File="$(MicrosoftAndroidSdkOutDir)Version"
36-
Lines="$(ProductVersion)"
37-
Overwrite="True"
38-
/>
39-
<WriteLinesToFile
40-
File="$(MicrosoftAndroidSdkOutDir)Version.commit"
41-
Lines="$(XARepositoryName)/$(XAVersionBranch)/$(XAVersionHash)"
42-
Overwrite="True"
43-
/>
44-
<WriteLinesToFile
45-
File="$(MicrosoftAndroidSdkOutDir)Version.rev"
46-
Lines="$(XAVersionCommitCount)"
47-
Overwrite="True"
48-
/>
49-
<ItemGroup>
50-
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version" />
51-
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version.commit" />
52-
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version.rev" />
53-
</ItemGroup>
54-
</Target>
32+
<ItemGroup>
33+
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version" />
34+
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version.commit" />
35+
<VersionFiles Include="$(MicrosoftAndroidSdkOutDir)Version.rev" />
36+
</ItemGroup>
5537
<ItemGroup>
5638
<_DesignerFilesUnix Include="$(LegacyMSBuildSrcDir)$(HostOS)\bcl\**\*" />
5739
<_DesignerFilesWin Include="$(LegacyMSBuildSrcDir)bcl\**\* "/>
@@ -369,7 +351,7 @@
369351
<Import Project="$(_MonoDroidPath)\tools\scripts\installer-files.projitems" Condition=" '$(_HasCommercialFiles)' == 'True' And Exists ('$(_MonoDroidPath)\tools\scripts\installer-files.projitems') " />
370352
<!-- end monodroid -->
371353
<Target Name="ConstructInstallerItems"
372-
DependsOnTargets="_FindFrameworkDirs;_WriteVersionFiles"
354+
DependsOnTargets="_FindFrameworkDirs"
373355
Returns="@(FrameworkItemsWin);@(FrameworkItemsUnix);@(MSBuildItemsWin);@(LegacyMSBuildItemsWin);@(MSBuildItemsUnix);@(LegacyMSBuildItemsUnix)">
374356
<ItemGroup>
375357
<_FrameworkFiles Include="@(_FrameworkDirsThatExist->'%(Identity)\AndroidApiInfo.xml')" />

build-tools/provisioning/vs2019.csx

Lines changed: 0 additions & 3 deletions
This file was deleted.

build-tools/provisioning/xcode.csx

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/Mono.Android/Mono.Android.targets

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@
241241
<DocsApiLevel Condition=" '$(DocsApiLevel)' == '' ">34</DocsApiLevel>
242242
<DocsPlatformId Condition=" '$(DocsPlatformId)' == '' ">$(DocsApiLevel)</DocsPlatformId>
243243
<DocsFxMoniker Condition=" '$(DocsFxMoniker)' == '' ">net-android-$(DocsApiLevel).0</DocsFxMoniker>
244+
<DocsExportOutput Condition=" '$(DocsExportOutput)' == '' ">$(_MonoAndroidNETDefaultOutDir)Mono.Android.xml</DocsExportOutput>
244245
<_LogPrefix>$(MSBuildThisFileDirectory)../../bin/Build$(Configuration)/UpdateApiDocs-$([System.DateTime]::Now.ToString ("yyyyMMddTHHmmss"))</_LogPrefix>
245246
<_Mdoc Condition=" '$(Pkgmdoc)' != '' ">"$(Pkgmdoc)/tools/mdoc.exe"</_Mdoc>
246247
<_Mdoc Condition=" '$(Pkgmdoc)' == '' ">"$(XAPackagesDir)/mdoc/$(MdocPackageVersion)/tools/mdoc.exe"</_Mdoc>
@@ -249,7 +250,7 @@
249250
<!-- Generate documentation using MDoc -->
250251
<Target Name="UpdateExternalDocumentation">
251252
<MSBuild Projects="$(MSBuildThisFileDirectory)Mono.Android.csproj"
252-
Properties="TargetFramework=$(DotNetTargetFramework)"
253+
Properties="TargetFramework=$(DotNetTargetFramework);DocsExportOutput=$(BaseIntermediateOutputPath)Mono.Android.temp.xml"
253254
Targets="_UpdateExternalDocumentation;_RunMdoc;_ExportMsxDoc;_GenerateApiDocsDiff"
254255
/>
255256
</Target>
@@ -286,7 +287,7 @@
286287
<_FxConfig>-fx "$(_RootFxDir)"</_FxConfig>
287288
<_Lang>--lang fsharp</_Lang>
288289
<!-- $(FrameworksXmlContent) describes the docs versions found at android-api-docs/tree/master/docs/Mono.Android/en/FrameworksIndex/
289-
and https://docs.microsoft.com/en-us/dotnet/api/android?view=xamarin-android-sdk-9 -->
290+
and https://learn.microsoft.com/en-us/dotnet/api/android?view=xamarin-android-sdk-13 -->
290291
<FrameworksXmlContent>
291292
<![CDATA[
292293
<Frameworks>
@@ -296,7 +297,7 @@
296297
</FrameworksXmlContent>
297298
</PropertyGroup>
298299
<!-- Create a temporary directory which contains frameworks.xml and our framework assembly.
299-
Copy Mono.Android.dll and Java.Interop.dll to the %(Source) path described in frameworks.xml (e.g. xamarin-android-sdk-12) -->
300+
Copy Mono.Android.dll and Java.Interop.dll to the %(Source) path described in frameworks.xml (e.g. net-android-34.0) -->
300301
<RemoveDir Directories="$(_RootFxDir)" />
301302
<MakeDir Directories="$(_RootFxDir)" />
302303
<MakeDir Directories="$(_RootFxDir)$(DocsFxMoniker)" />
@@ -338,9 +339,9 @@
338339
<Target Name="_ExportMsxDoc"
339340
DependsOnTargets="_FindDocSourceFiles"
340341
Inputs="@(_MsxDocSourceFile)"
341-
Outputs="$(_MonoAndroidNETDefaultOutDir)Mono.Android.xml">
342+
Outputs="$(DocsExportOutput)">
342343
<Exec
343-
Command="$(ManagedRuntime) $(ManagedRuntimeArgs) $(_Mdoc) --debug export-msxdoc -o &quot;$(_MonoAndroidNETDefaultOutDir)Mono.Android.xml&quot; &quot;$(XamarinAndroidSourcePath)external/android-api-docs/docs/Mono.Android/en/&quot;"
344+
Command="$(ManagedRuntime) $(ManagedRuntimeArgs) $(_Mdoc) --debug export-msxdoc -o &quot;$(DocsExportOutput)&quot; &quot;$(XamarinAndroidSourcePath)external/android-api-docs/docs/Mono.Android/en/&quot;"
344345
/>
345346
</Target>
346347

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.TestCaseSource.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public partial class BuildTest : BaseTest
124124
/* debugSymbols */ true ,
125125
/* optimize */ true ,
126126
/* embedassebmlies */ false ,
127-
/* expectedResult */ CommercialBuildAvailable ? "debug" : "release",
127+
/* expectedResult */ TestEnvironment.CommercialBuildAvailable ? "debug" : "release",
128128
},
129129
new object[] {
130130
/* supportedAbi */ "armeabi-v7a",
@@ -145,7 +145,7 @@ public partial class BuildTest : BaseTest
145145
/* debugSymbols */ false ,
146146
/* optimize */ null ,
147147
/* embedassebmlies */ null ,
148-
/* expectedResult */ CommercialBuildAvailable ? "debug" : "release",
148+
/* expectedResult */ TestEnvironment.CommercialBuildAvailable ? "debug" : "release",
149149
},
150150
};
151151
#pragma warning restore 414

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,12 @@ public void DotNetBuild (string runtimeIdentifiers, bool isRelease, bool aot, bo
139139
Assert.AreEqual (XABuildConfig.AndroidDefaultTargetDotnetApiLevel.ToString(),
140140
uses_sdk.Attribute (ns + "targetSdkVersion").Value);
141141

142-
bool expectEmbeddedAssembies = !(CommercialBuildAvailable && !isRelease);
142+
bool expectEmbeddedAssembies = !(TestEnvironment.CommercialBuildAvailable && !isRelease);
143143
var apkPath = Path.Combine (outputPath, $"{proj.PackageName}-Signed.apk");
144144
FileAssert.Exists (apkPath);
145145
var helper = new ArchiveAssemblyHelper (apkPath, usesAssemblyStore, rids);
146146
helper.AssertContainsEntry ($"assemblies/{proj.ProjectName}.dll", shouldContainEntry: expectEmbeddedAssembies);
147-
helper.AssertContainsEntry ($"assemblies/{proj.ProjectName}.pdb", shouldContainEntry: !CommercialBuildAvailable && !isRelease);
147+
helper.AssertContainsEntry ($"assemblies/{proj.ProjectName}.pdb", shouldContainEntry: !TestEnvironment.CommercialBuildAvailable && !isRelease);
148148
helper.AssertContainsEntry ($"assemblies/Mono.Android.dll", shouldContainEntry: expectEmbeddedAssembies);
149149
helper.AssertContainsEntry ($"assemblies/es/{proj.ProjectName}.resources.dll", shouldContainEntry: expectEmbeddedAssembies);
150150
foreach (var abi in rids.Select (AndroidRidAbiHelper.RuntimeIdentifierToAbi)) {
@@ -1030,6 +1030,8 @@ public void MicrosoftExtensionsHttp ()
10301030
[Test]
10311031
public void FastDeploymentDoesNotAddContentProvider ()
10321032
{
1033+
AssertCommercialBuild ();
1034+
10331035
var proj = new XamarinAndroidApplicationProject {
10341036
EmbedAssembliesIntoApk = false,
10351037
};

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,11 +605,10 @@ public void DuplicateManagedNames ()
605605
}
606606

607607
[Test]
608-
[Category ("Commercial")]
609608
public void LibraryProjectsShouldSkipGetPrimaryCpuAbi ()
610609
{
611-
if (!CommercialBuildAvailable)
612-
Assert.Ignore ("Not required on Open Source Builds");
610+
AssertCommercialBuild ();
611+
613612
const string target = "_GetPrimaryCpuAbi";
614613
var proj = new XamarinAndroidLibraryProject ();
615614
using (var b = CreateDllBuilder (Path.Combine ("temp", TestName))) {
@@ -619,10 +618,10 @@ public void LibraryProjectsShouldSkipGetPrimaryCpuAbi ()
619618
}
620619

621620
[Test]
622-
[Category ("Commercial")]
623621
public void LibraryReferenceWithHigherTFVShouldDisplayWarning ([Values (true, false)] bool isRelease)
624622
{
625-
if (!CommercialBuildAvailable || Builder.UseDotNet)
623+
624+
if (!TestEnvironment.CommercialBuildAvailable || Builder.UseDotNet)
626625
Assert.Ignore ("Not applicable to One .NET or single framework OSS builds.");
627626

628627
var libproj = new XamarinAndroidLibraryProject () {

0 commit comments

Comments
 (0)