tree e31437182473cd0ca753d8ec324869b4e9cc2a70
parent d39d51c90992b0f9b5e4e00f3bf29d035a3df80c
author David Bebawy <dbebawy@users.noreply.github.com> 1790721029 +0000
committer GitHub <noreply@github.com> 1790721029 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqvDwVCRC1aQ7uu5UhlAAAeYkQAB7wzGW/n09AGTd0KJ6kpMM4
 zQWNQqN2p4TEP5qx9Dbj1cBLGvUc3dRMMVd53ET85AhXhbS+m0gFHL9JZm9KySGc
 wrFBbTmKfLoYeeKy1r5krJXNWnyNtCJNvh2ICkKvlOTme3zBOH4Y/6jGZvAet8Ld
 YJt5AbhBcZ6/c+Jd/d4gJOGrR2qoXBtXhJ5mzPZBARMBVqH1u3S6bjIiKrFg+DXb
 pM2R1wwHAcc1+74epJYCRratQse+nMasNh2iTi2NQni5HWQ/1UYSZ4whipjzTNiM
 MlIbJ+8KQkwiNQ3G/Dcae0FrI82A+Ej38lVHK6zB1hxZ5NKFfpRB51hLVqbjNQo5
 DmsE+8crNzGFQi0Xqo8hfVu7tcnM97Bx7BSNHc2virRaZiH847h6XQEvPQNoP8oY
 R9K35kdxtV/j8ST+QuCpesxsglpWouBP/NGqBTMEo/DgAp07HvzHBPBTbkEtRUmY
 Z1UNOT7Eb12yy9IaTc6YoNDIRt9FvXmb/Hy/QduAJinlCn515D8fdOJLpFVgWpw9
 VVWS9d/exxbySkbC+AywX+ZJdCE9+NcfnUHjqshvd2m3/l6aD3LskTh8LLfG4I6x
 DcRHPnP2VwgW+eMk1uqLMJ/58OSxZML1LvPsyXDFC6ZssWXowlXvo97eKRjO8KaA
 0mUAx8V9Vo0ZRr3pmwiW
 =M/ji
 -----END PGP SIGNATURE-----
 

Remove vestigial `download_jdk` gclient var (#188571)

## Summary

Removes the vestigial `download_jdk` gclient var. Closes #187627.

`download_jdk` was declared in
[DEPS:97](https://github.com/flutter/flutter/blob/master/DEPS#L97) with
default `True` but **no DEPS entry ever referenced it as a condition**.
The only OpenJDK CIPD entry
(`engine/src/flutter/third_party/java/openjdk`) gates only on
`host_os`/`host_cpu`:

```python
'condition': 'not (host_os == "linux" and host_cpu == "arm64")',
```

So setting `"download_jdk": false` in builder configs was a no-op —
OpenJDK was downloaded anyway on every host except linux-arm64 (which is
correctly excluded by the host_cpu condition, not by `download_jdk`).

## Changes

- Remove the unused `download_jdk` declaration from `DEPS` (lines 91-92,
including the now-misleading comment "Checkout Java dependencies only on
platforms that do not have java installed on path.")
- Remove `"download_jdk": false` from 22 builder JSONs in
`engine/src/flutter/ci/builders/`. **108 occurrences total.** None of
them did anything; their removal has no behavioral effect.

The OpenJDK download condition itself is unchanged. Builds that don't
actually need the JDK (e.g. `linux_arm64_android_aot_engine`,
`mac_clang_tidy`) still get it on linux-x64/mac hosts — if that becomes
worth optimizing, the OpenJDK condition itself is the right place to add
a gate, not a separate variable that doesn't propagate.

## Context

Found while running validation builds for #187591. Filed #187627 noting
`download_jdk: false` was being ignored. @reidbaker on the issue:

> "I don't actually recall working on this. If it is not used feel free
to delete it."

Doing that here.

## Pre-launch Checklist

- [x] I read the [Contributor
Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview).
- [x] I read the [Tree
Hygiene](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md)
wiki page.
- [x] I read and followed the [Flutter Style
Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md).
- [x] I signed the [CLA](https://cla.developers.google.com/).
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] All existing and new tests are passing.

## Test plan

- No behavior change. The OpenJDK package is gated only on
`host_os/host_cpu` (unchanged); removing the unreferenced `download_jdk`
var and the no-op `"download_jdk": false` lines from builder configs
cannot change what gets synced.
- `python3 -c "import json; ..."` confirms all 22 modified JSONs still
parse.
- `grep -rn download_jdk DEPS engine/src/flutter/ci/` after the diff
returns empty.

Co-authored-by: Reid Baker <1063596+reidbaker@users.noreply.github.com>