Skip to content

Commit eb76539

Browse files
committed
Add Linux sdk items and fix toolchain downloader to really respect HostOS.
- fix Android SDK Tools location. - add SDK/NDK items for Linux. - xbuild condition did not work and downloaded all the items. It was because condition by metadata didn't work with the complicated expression. So, split filtering and transformation into different tasks. - xbuild aborts when the specified metadata %(HostOS) does not exist, so specify dummy HostOS metadata (which is ugly but not too annoying). (Linux build verification is still ongoing, not assuring that this fixes all the possible existing issues.)
1 parent b3dca00 commit eb76539

File tree

4 files changed

+41
-11
lines changed

4 files changed

+41
-11
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CONFIGURATION = Debug
2-
MSBUILD = xbuild /p:Configuration=$(CONFIGURATION)
2+
MSBUILD = xbuild /p:Configuration=$(CONFIGURATION) $(MSBUILD_ARGS)
33

44
all:
55
$(MSBUILD)

build-tools/android-toolchain/android-toolchain.projitems

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@
44
<AndroidUri Condition=" '$(AndroidUri)' == '' ">https://dl-ssl.google.com/android/repository</AndroidUri>
55
</PropertyGroup>
66
<ItemGroup>
7+
<AndroidNdkItem Include="android-ndk-r11c-linux-x86_64.zip">
8+
<HostOS>Linux</HostOS>
9+
</AndroidNdkItem>
10+
<AndroidSdkItem Include="build-tools_r23-linux.zip">
11+
<HostOS>Linux</HostOS>
12+
<DestDir>build-tools\23.0.0</DestDir>
13+
</AndroidSdkItem>
14+
<AndroidSdkItem Include="platform-tools_r23-linux.zip">
15+
<HostOS>Linux</HostOS>
16+
<DestDir>platform-tools</DestDir>
17+
</AndroidSdkItem>
18+
<AndroidSdkItem Include="tools_r24.4.1-linux.zip">
19+
<HostOS>Linux</HostOS>
20+
</AndroidSdkItem>
721
<AndroidNdkItem Include="android-ndk-r11c-darwin-x86_64.zip">
822
<HostOS>Darwin</HostOS>
923
</AndroidNdkItem>
@@ -15,13 +29,15 @@
1529
<HostOS>Darwin</HostOS>
1630
<DestDir>platform-tools</DestDir>
1731
</AndroidSdkItem>
18-
<AndroidSdkItem Include="android-sdk_r24.4.1-macosx.zip">
32+
<AndroidSdkItem Include="tools_r24.4.1-macosx.zip">
1933
<HostOS>Darwin</HostOS>
2034
</AndroidSdkItem>
2135
<AndroidSdkItem Include="platform-N_r01.zip">
36+
<HostOS></HostOS>
2237
<DestDir>platforms\android-N</DestDir>
2338
</AndroidSdkItem>
2439
<AndroidSdkItem Include="android-23_r01.zip">
40+
<HostOS></HostOS>
2541
<DestDir>platforms\android-23</DestDir>
2642
</AndroidSdkItem>
2743
</ItemGroup>

build-tools/android-toolchain/android-toolchain.targets

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,37 @@
1111
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.CreateTemporaryDirectory" />
1212
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.DownloadUri" />
1313
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.UnzipDirectoryChildren" />
14+
<Target Name="_DetermineItems">
15+
<CreateItem
16+
Include="@(AndroidSdkItem)"
17+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
18+
<Output TaskParameter="Include" ItemName="_PlatformAndroidSdkItem"/>
19+
</CreateItem>
20+
<CreateItem
21+
Include="@(AndroidNdkItem)"
22+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
23+
<Output TaskParameter="Include" ItemName="_PlatformAndroidNdkItem"/>
24+
</CreateItem>
25+
</Target>
1426
<Target Name="_DownloadItems"
15-
Outputs="@(AndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)');@(AndroidNdkItems->'$(AndroidToolchainCacheDirectory)\%(Identity)')">
27+
DependsOnTargets="_DetermineItems"
28+
Outputs="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)');@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')">
1629
<DownloadUri
17-
SourceUris="@(AndroidSdkItem->'$(AndroidUri)/%(Identity)');@(AndroidNdkItem->'$(AndroidUri)/%(Identity)')"
18-
DestinationFiles="@(AndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)');@(AndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
30+
SourceUris="@(_PlatformAndroidSdkItem->'$(AndroidUri)/%(Identity)');@(_PlatformAndroidNdkItem->'$(AndroidUri)/%(Identity)')"
31+
DestinationFiles="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)');@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
1932
/>
2033
</Target>
2134
<Target Name="_UnzipFiles"
22-
Inputs="@(AndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
35+
DependsOnTargets="_DetermineItems"
36+
Inputs="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)')"
2337
Outputs="$(AndroidToolchainDirectory)\.stamp-sdk">
2438
<CreateItem
25-
Include="@(AndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)"
26-
Condition=" '%(AndroidSdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidSdkItem.HostOS)' == '' ">
27-
<Output TaskParameter="Include" ItemName="_AndroidSdkItems"/>
39+
Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)">
40+
<Output TaskParameter="Include" ItemName="_AndroidSdkItems"/>
2841
</CreateItem>
2942
<CreateItem
30-
Include="@(AndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)"
31-
Condition=" '%(AndroidSdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidSdkItem.HostOS)' == '' ">
43+
Include="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity)"
44+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
3245
<Output TaskParameter="Include" ItemName="_AndroidNdkItems"/>
3346
</CreateItem>
3447

src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/DownloadUri.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ async TTask DownloadFile (HttpClient client, string uri, string destinationFile)
5757
Log.LogMessage (MessageImportance.Normal, $"Skipping uri '{uri}' as destination file already exists '{destinationFile}'.");
5858
return;
5959
}
60+
Log.LogMessage (MessageImportance.Low, $"Downloading '{uri}'.");
6061
using (var r = await client.GetAsync (uri))
6162
using (var o = File.OpenWrite (destinationFile)) {
6263
await r.Content.CopyToAsync (o);

0 commit comments

Comments
 (0)