Skip to content

Commit 41723a5

Browse files
[r8] fixes to building with gradle
Context: dotnet#2019 Since 4bb4b2e, our builds have been failing on VSTS on macOS and Windows. Jenkins is green, however. ~~ macOS ~~ Currently getting a failure building `r8` such as: 2018-10-30T20:19:05.2225960Z * What went wrong: 2018-10-30T20:19:05.2227400Z Could not determine java version from '11.0.1'. So I believe the problem here is that Java 11 is in `$PATH`, and this is only a scenario on the VSTS macOS build agents. It turns out I was able to clean up quite a bit in `r8.targets`: - We don't need to call `SetEnvironmentVariable`, I was able to set `EnvironmentVariables="...;PATH=$(ChromeToolsDirectory)"` and things still worked fine. - We should pass `--stacktrace` to gradle so that we get detailed error messages on a failure. ~~ Windows ~~ Currently getting a failure in `Xamarin.Android.LibraryProjectZip-LibBinding.csproj` such as: 2018-10-31T14:02:28.8336608Z .\gradlew assembleDebug --stacktrace --no-daemon 2018-10-31T14:02:40.7122197Z NDK is missing a "platforms" directory. 2018-10-31T14:02:40.7122937Z If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\dlab14\android-toolchain\sdk\ndk-bundle. 2018-10-31T14:02:40.7124870Z If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning. It doesn't really make sense to me why this started happening with d8/r8 support... The `~\android-toolchain\sdk\ndk-bundle` path seems completely wrong. However, it looks like we should be setting `ANDROID_NDK_HOME=$(AndroidNdkDirectory)`. This is the only other place we are calling `gradle`, so it is somehow *related* to the d8/r8 changes.
1 parent 02c07ed commit 41723a5

File tree

2 files changed

+4
-28
lines changed

2 files changed

+4
-28
lines changed

src/r8/r8.targets

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
22
<UsingTask AssemblyFile="..\..\bin\Build$(Configuration)\xa-prep-tasks.dll" TaskName="Xamarin.Android.BuildTools.PrepTasks.DownloadUri" />
3-
<UsingTask AssemblyFile="..\..\bin\Build$(Configuration)\xa-prep-tasks.dll" TaskName="Xamarin.Android.BuildTools.PrepTasks.SetEnvironmentVariable" />
43
<UsingTask AssemblyFile="..\..\bin\Build$(Configuration)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.UnzipDirectoryChildren" />
54

65
<PropertyGroup>
76
<!--NOTE: we don't want a gradle daemon locking directories on Windows-->
8-
<_GradleArgs>--no-daemon</_GradleArgs>
7+
<_GradleArgs>--stacktrace --no-daemon</_GradleArgs>
98
<BuildDependsOn>
109
ResolveReferences;
1110
_BuildR8;
@@ -20,26 +19,14 @@
2019

2120
<!--
2221
NOTE: depot_tools has an odd requirement of being in PATH
23-
I am also getting some odd failures on Windows, if not specifying namespace for <SetEnvironmentVariable />
2422
-->
2523

2624
<Target Name="_BuildR8">
27-
<PropertyGroup>
28-
<_OriginalPath>$(PATH)</_OriginalPath>
29-
</PropertyGroup>
30-
<Xamarin.Android.BuildTools.PrepTasks.SetEnvironmentVariable
31-
Name="PATH"
32-
Value="$([System.IO.Path]::GetFullPath('$(ChromeToolsDirectory)'))$(PathSeparator)$(_OriginalPath)"
33-
/>
3425
<Exec
3526
Command="python tools\gradle.py d8 r8 $(_GradleArgs)"
36-
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory)"
27+
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory);PATH=$(ChromeToolsDirectory)"
3728
WorkingDirectory="..\..\external\r8"
3829
/>
39-
<Xamarin.Android.BuildTools.PrepTasks.SetEnvironmentVariable
40-
Name="PATH"
41-
Value="$(_OriginalPath)"
42-
/>
4330
</Target>
4431

4532
<Target Name="_CopyR8">
@@ -51,25 +38,14 @@
5138
</Target>
5239

5340
<Target Name="_CleanR8">
54-
<PropertyGroup>
55-
<_OriginalPath>$(PATH)</_OriginalPath>
56-
</PropertyGroup>
5741
<Delete
5842
Files="$(XAInstallPrefix)xbuild\Xamarin\Android\d8.jar;$(XAInstallPrefix)xbuild\Xamarin\Android\r8.jar;"
5943
/>
60-
<Xamarin.Android.BuildTools.PrepTasks.SetEnvironmentVariable
61-
Name="PATH"
62-
Value="$([System.IO.Path]::GetFullPath('$(ChromeToolsDirectory)'))$(PathSeparator)$(_OriginalPath)"
63-
/>
6444
<Exec
6545
Command="python tools\gradle.py clean $(_GradleArgs)"
66-
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory)"
46+
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory);PATH=$(ChromeToolsDirectory)"
6747
WorkingDirectory="..\..\external\r8"
6848
/>
69-
<Xamarin.Android.BuildTools.PrepTasks.SetEnvironmentVariable
70-
Name="PATH"
71-
Value="$(_OriginalPath)"
72-
/>
7349
</Target>
7450

7551
</Project>

tests/CodeGen-Binding/Xamarin.Android.LibraryProjectZip-LibBinding/Xamarin.Android.LibraryProjectZip-LibBinding.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<_Jdk9Modules Condition="$(_JdkVersion.StartsWith ('9'))">JAVA_OPTS="--add-modules java.xml.bind"</_Jdk9Modules>
4747
</PropertyGroup>
4848
<Exec
49-
EnvironmentVariables="ANDROID_HOME=$(AndroidSdkDirectory);JAVA_HOME=$(JavaSdkDirectory)"
49+
EnvironmentVariables="ANDROID_HOME=$(AndroidSdkDirectory);ANDROID_NDK_HOME=$(AndroidNdkDirectory);JAVA_HOME=$(JavaSdkDirectory)"
5050
Command="$(_Jdk9Modules) .\gradlew assembleDebug --stacktrace --no-daemon"
5151
WorkingDirectory="$(MSBuildThisFileDirectory)java\JavaLib"
5252
/>

0 commit comments

Comments
 (0)