Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
31 changes: 30 additions & 1 deletion Configuration.props
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,37 @@
<XABuildToolsHashMacOS>04E7F3A72044DE4926FA038FA0E251A37BBA1E1C3FB8BEAB6F8401BFD9EB4BF3</XABuildToolsHashMacOS>
<XABuildToolsHashLinux>5D9AC77FB6FF43D9DA518A337B4FCF8F9097113DF531D99CCEFE80EF7CE8250B</XABuildToolsHashLinux>
<XABuildToolsHashWindows>AA1095CB14D83E483818A748A2C06FAAEB8E601561B06A356A119A1B2CA280D3</XABuildToolsHashWindows>
<XAPlatformToolsPackagePrefix Condition=" '$(HostOS)' == 'Darwin' "></XAPlatformToolsPackagePrefix>
<XAPlatformToolsVersion>36.0.0</XAPlatformToolsVersion>
<XAPlatformToolsHashMacOS>D3E9FA1DF3345CF728586908426615A60863D2632F73F1CE14F0F1349EF000FD</XAPlatformToolsHashMacOS>
<XAPlatformToolsHashLinux>0EAD642C943FFE79701FCCCA8F5F1C69C4CE4F43DF2EEFEE553F6CCB27CBFBE8</XAPlatformToolsHashLinux>
<XAPlatformToolsHashWindows>12C2841F354E92A0EB2FD7BF6F0F9BF8538ABCE7BD6B060AC8349D6F6A61107C</XAPlatformToolsHashWindows>
<XACmdlineToolsHashMacOS>5673201E6F3869F418EEED3B5CB6C4BE7401502BD0AAE1B12A29D164D647A54E</XACmdlineToolsHashMacOS>
<XACmdlineToolsHashLinux>7EC965280A073311C339E571CD5DE778B9975026CFCBE79F2B1CDCB1E15317EE</XACmdlineToolsHashLinux>
<XACmdlineToolsHashWindows>98B565CB657B012DAE6794CEFC0F66AE1EFB4690C699B78A614B4A6A3505B003</XACmdlineToolsHashWindows>
<XACmakeHashMacOS>57024D590691B9D66977D2F66786F10971549441B33B7830D3D2B659F80B93EA</XACmakeHashMacOS>
<XACmakeHashLinux>8CF0DC4F7CE0173D13ED71066FB6861A79C73545DF71D12CA3E933430F268D50</XACmakeHashLinux>
<XACmakeHashWindows>026982DBA2DBD2DE4A530CF1300FFAD05F6BC7D372D9DF83D46112FE017E0C6B</XACmakeHashWindows>
<!-- Android emulator: per-host zips (and per-arch on macOS). -->
<XAEmulatorHashMacOSx64>3029489D4B2F868DC5347AA27B1E52FB48D6D28ABD51278E3FBEC2EE73201EDF</XAEmulatorHashMacOSx64>
<XAEmulatorHashMacOSArm64>EDA85B9BFFD0926B7A01EA334A30AB41827F573CBDE8F7F97FCD8C5B38F039F6</XAEmulatorHashMacOSArm64>
<XAEmulatorHashLinux>58BFDF0572F06EC007A7287154CDC6B2EBFEA947D07A1E26A0F6B5E1A39E9191</XAEmulatorHashLinux>
<XAEmulatorHashWindows>9F2855BFE98E80728E61D45B0EA72BA22F64952C9330559FA4E2CD3698A32231</XAEmulatorHashWindows>
<!-- API 29 system image used by the emulator: per-host (x86_64) and macOS arm64 (arm64-v8a). -->
<XASystemImageHashMacOSx64>B5C3FDA1F4B4931C30518D342E4AD5F7464945E0CDCED3538D4FF2E12F7BF201</XASystemImageHashMacOSx64>
<XASystemImageHashMacOSArm64>7FD1610E16A69AC2E202278E82077DE134CE404FE099D872019F69F3A340ACDD</XASystemImageHashMacOSArm64>
<XASystemImageHashLinux>B5C3FDA1F4B4931C30518D342E4AD5F7464945E0CDCED3538D4FF2E12F7BF201</XASystemImageHashLinux>
<XASystemImageHashWindows>B5C3FDA1F4B4931C30518D342E4AD5F7464945E0CDCED3538D4FF2E12F7BF201</XASystemImageHashWindows>
<!-- SDK build dependencies (host-agnostic single zip each). -->
<XAAndroidM2RepositoryHash>A3F91808DCE50C1717737DE90C18479ED3A78B147E06985247D138E7AB5123D0</XAAndroidM2RepositoryHash>
<XAAndroidDocsHash>68DB2690CB92E4EE5373AC9B792642C90717D8F417D83ECCEA48781171B3182A</XAAndroidDocsHash>
<XAAndroidSourcesHash>BD97900346A70C784AC8B15C809539DDEF34ED3B5BE1DF8A9A89CF298BE93798</XAAndroidSourcesHash>
<!-- Android NDK: per-host zips. Use a private property name; the public
$(AndroidNdkVersion) is set to the pkg revision in Common.props.in. -->
<_XAAndroidNdkRelease>28c</_XAAndroidNdkRelease>
<_XAAndroidNdkPkgRevision>28.2.13676358</_XAAndroidNdkPkgRevision>
<XAAndroidNdkHashMacOS>0D4599E8BBF1A1668A0D51A541729B2246360F350018A2081D0B302DBB594F2A</XAAndroidNdkHashMacOS>
<XAAndroidNdkHashLinux>DFB20D396DF28CA02A8C708314B814A4D961DC9074F9A161932746F815AA552F</XAAndroidNdkHashLinux>
<XAAndroidNdkHashWindows>6BEC98AC2354D8A919760889A1A41D020132E5E8CFA1B1FE51610A72C36A466B</XAAndroidNdkHashWindows>
<XABundleToolVersion Condition="'$(XABundleToolVersion)' == ''">1.18.3</XABundleToolVersion>
<XABundleToolHash Condition="'$(XABundleToolHash)' == ''">A099CFA1543F55593BC2ED16A70A7C67FE54B1747BB7301F37FDFD6D91028E29</XABundleToolHash>
<XABinutilsVersion Condition="'$(XABinutilsVersion)' == ''">L_18.1.6-8.0.0-1</XABinutilsVersion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,15 @@ steps:

- template: /build-tools/automation/yaml-templates/run-xaprepare.yaml
parameters:
arguments: --s=${{ parameters.xaprepareScenario }} --android-sdk-platforms="${{ parameters.androidSdkPlatforms }}"
arguments: --s=${{ parameters.xaprepareScenario }}
xaSourcePath: ${{ parameters.xaSourcePath }}

- template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml
parameters:
displayName: install OpenJDK and accept Android SDK licenses
xaSourcePath: ${{ parameters.xaSourcePath }}
project: ${{ parameters.xaSourcePath }}/src/androidsdk/androidsdk.csproj
arguments: -c ${{ parameters.configuration }} -bl:${{ parameters.xaSourcePath }}/bin/Test${{ parameters.configuration }}/androidsdk.binlog
arguments: -c ${{ parameters.configuration }} -p:AndroidSdkPlatforms="${{ parameters.androidSdkPlatforms }}" -bl:${{ parameters.xaSourcePath }}/bin/Test${{ parameters.configuration }}/androidsdk.binlog
continueOnError: false

- task: DotNetCoreCLI@2
Expand Down
7 changes: 4 additions & 3 deletions build-tools/manifest-attribute-codegen/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ This generally only needs to be done each time we bind a new Android API level.

# How to use

Ensure all Android platform SDK levels are installed. This can be done with `xaprepare`;
run the following command from the checkout toplevel:
Ensure all Android platform SDK levels are installed. This is done via the
`androidsdk.csproj` project; run the following command from the checkout
toplevel:

```dotnetcli
dotnet run --project "build-tools/xaprepare/xaprepare/xaprepare.csproj" -- -s AndroidTestDependencies --android-sdk-platforms=all
dotnet build src/androidsdk/androidsdk.csproj -p:AndroidSdkPlatforms=all
```

Next, from this directory, run:
Expand Down

This file was deleted.

91 changes: 18 additions & 73 deletions build-tools/xaprepare/xaprepare/Application/BuildInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,26 @@ namespace Xamarin.Android.Prepare
{
partial class BuildInfo : AppObject
{
static readonly char[] NDKPropertySeparator = new [] { '=' };

public string CommitOfLastVersionChange { get; private set; } = String.Empty;

// Not available from the start, only after NDK is installed
public string NDKRevision { get; private set; } = String.Empty;
public string NDKVersionMajor { get; private set; } = String.Empty;
public string NDKVersionMinor { get; private set; } = String.Empty;
public string NDKVersionMicro { get; private set; } = String.Empty;
public string NDKVersionTag { get; private set; } = String.Empty;
public string NDKMinimumApiAvailable { get; private set; } = String.Empty;
// NDK version info is now derived directly from BuildAndroidPlatforms.AndroidNdkPkgRevision
// (single source of truth shared with src/androidsdk/androidsdk.targets via Configuration.props).
public string NDKRevision => BuildAndroidPlatforms.AndroidNdkPkgRevision;
public string NDKVersionMajor => NDKVersion.Major.ToString ();
public string NDKVersionMinor => NDKVersion.Minor.ToString ();
public string NDKVersionMicro => NDKVersion.Build.ToString ();

Version? cachedNdkVersion;
Version NDKVersion {
get {
if (cachedNdkVersion != null)
return cachedNdkVersion;
if (!Utilities.ParseAndroidPkgRevision (BuildAndroidPlatforms.AndroidNdkPkgRevision, out Version? ver, out _) || ver == null)
throw new InvalidOperationException ($"Unable to parse NDK revision '{BuildAndroidPlatforms.AndroidNdkPkgRevision}' as a valid version string");
cachedNdkVersion = ver;
return ver;
}
}

public string VersionHash { get; private set; } = String.Empty;
public string XACommitHash { get; private set; } = String.Empty;
Expand All @@ -44,70 +53,6 @@ void DetermineXACommitInfo (Context context)
XABranch = git.GetBranchName ();
}

public bool GatherNDKInfo (Context context)
{
string ndkDir = Configurables.Paths.AndroidNdkDirectory;
string props = Path.Combine (ndkDir, "source.properties");
if (!File.Exists (props)) {
Log.ErrorLine ("NDK properties file does not exist: ", props, tailColor: Log.DestinationColor);
return false;
}

string[] lines = File.ReadAllLines (props);
foreach (string l in lines) {
string line = l.Trim ();
string[] parts = line.Split (NDKPropertySeparator, 2);
if (parts.Length != 2)
continue;

if (String.Compare ("Pkg.Revision", parts [0].Trim (), StringComparison.Ordinal) != 0)
continue;

string rev = parts [1].Trim ();
NDKRevision = rev;

if (!Utilities.ParseAndroidPkgRevision (rev, out Version? ver, out string? tag) || ver == null) {
Log.ErrorLine ($"Unable to parse NDK revision '{rev}' as a valid version string");
return false;
}

NDKVersionMajor = ver.Major.ToString ();
NDKVersionMinor = ver.Minor.ToString ();
NDKVersionMicro = ver.Build.ToString ();
NDKVersionTag = tag ?? String.Empty;
break;
}

Log.DebugLine ($"Looking for minimum API available in {ndkDir}");
int minimumApi = Int32.MaxValue;
foreach (var kvp in Configurables.Defaults.AndroidToolchainPrefixes) {
string dirName = kvp.Value;
string platforms = Path.Combine (Configurables.Paths.AndroidToolchainSysrootLibDirectory, dirName);
Log.DebugLine ($" searching in {platforms}");
foreach (string p in Directory.EnumerateDirectories (platforms, "*", SearchOption.TopDirectoryOnly)) {
string plibc = Path.Combine (p, "libc.so");
if (!Utilities.FileExists (plibc)) {
continue;
}

Log.DebugLine ($" found {p}");
string pdir = Path.GetFileName (p);
int api;
if (!Int32.TryParse (pdir, out api))
continue;

if (api >= minimumApi)
continue;

minimumApi = api;
}
}

Log.DebugLine ($"Detected minimum NDK API level: {minimumApi}");
NDKMinimumApiAvailable = minimumApi.ToString ();
return true;
}

async Task DetermineLastVersionChangeCommit (Context context)
{
Log.StatusLine ($" {context.Characters.Bullet} Commit of last version change", ConsoleColor.Gray);
Expand Down
10 changes: 0 additions & 10 deletions build-tools/xaprepare/xaprepare/Application/Context.cs
Original file line number Diff line number Diff line change
Expand Up @@ -277,16 +277,6 @@ public string DebugFileExtension {
}
}

/// <summary>
/// Collection of programs or dependencies which should be reinstalled.
/// </summary>
public RefreshableComponent ComponentsToRefresh { get; set; }

/// <summary>
/// Collection of Android SDK platform levels to be installed.
/// </summary>
public IEnumerable<string> AndroidSdkPlatforms { get; set; } = Enumerable.Empty<string> ();

/// <summary>
/// Path to a local .NET SDK archive to use instead of downloading.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ namespace Xamarin.Android.Prepare
{
static class KnownProperties
{
public const string AndroidCmakeUrlPrefix = "AndroidCmakeUrlPrefix";
public const string AndroidCmakeVersion = "AndroidCmakeVersion";
public const string AndroidCmakeVersionPath = "AndroidCmakeVersionPath";
public const string AndroidMinimumDotNetApiLevel = "AndroidMinimumDotNetApiLevel";
public const string AndroidDefaultTargetDotnetApiLevel = "AndroidDefaultTargetDotnetApiLevel";
public const string AndroidLatestStableApiLevel = "AndroidLatestStableApiLevel";
Expand Down Expand Up @@ -56,6 +53,5 @@ static class KnownProperties
public const string XAInstallPrefix = "XAInstallPrefix";
public const string XAPackagesDir = "XAPackagesDir";
public const string XAPlatformToolsVersion = "XAPlatformToolsVersion";
public const string XAPlatformToolsPackagePrefix = "XAPlatformToolsPackagePrefix";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ namespace Xamarin.Android.Prepare
{
void InitDefaults ()
{
properties.Add (KnownProperties.AndroidCmakeUrlPrefix, StripQuotes ("@AndroidCmakeUrlPrefix@"));
properties.Add (KnownProperties.AndroidCmakeVersion, StripQuotes ("@AndroidCmakeVersion@"));
properties.Add (KnownProperties.AndroidCmakeVersionPath, StripQuotes (@"@AndroidCmakeVersionPath@"));
properties.Add (KnownProperties.AndroidMinimumDotNetApiLevel, StripQuotes ("@AndroidMinimumDotNetApiLevel@"));
properties.Add (KnownProperties.AndroidDefaultTargetDotnetApiLevel, StripQuotes ("@AndroidDefaultTargetDotnetApiLevel@"));
properties.Add (KnownProperties.AndroidLatestStableApiLevel, StripQuotes ("@AndroidLatestStableApiLevel@"));
Expand Down Expand Up @@ -60,7 +57,6 @@ namespace Xamarin.Android.Prepare
properties.Add (KnownProperties.XAInstallPrefix, StripQuotes (@"@XAInstallPrefix@"));
properties.Add (KnownProperties.XAPackagesDir, StripQuotes (@"@XAPackagesDir@"));
properties.Add (KnownProperties.XAPlatformToolsVersion, StripQuotes ("@XAPlatformToolsVersion@"));
properties.Add (KnownProperties.XAPlatformToolsPackagePrefix, StripQuotes ("@XAPlatformToolsPackagePrefix@"));
}

string StripQuotes (string input)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ partial class Defaults

partial class Paths
{
public const string NdkToolchainOSTag = "linux-x86_64";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ partial class Defaults
partial class Paths
{
public const string MonoCrossRuntimeInstallPath = "Darwin";
public const string NdkToolchainOSTag = "darwin-x86_64";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ partial class Defaults

partial class Paths
{
public const string NdkToolchainOSTag = "windows-x86_64";
}

partial class Urls
Expand Down
Loading