-
Notifications
You must be signed in to change notification settings - Fork 12.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Android in CI #120593
Update Android in CI #120593
Conversation
r? @Kobzol (rustbot has picked a reviewer for you, use r? to override) |
Pietro, I've added you explicitly since you're the only one to ever touch this lockfile, which means you're likely to be the one who can run |
cc @chriswailes |
The new files should be uploaded to the mirror. However, I'd like to get a +1 from another android target maintainer on this PR before moving ahead. cc @chriswailes @mgeisler (per platform support docs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm!
Happy to see this land, as it looks like it will also allow simplifying away rust-lang/backtrace-rs#570 from backtrace-rs, too. |
ping @Mark-Simulacrum - it looks like it still says "waiting on author", but Chris has LGTM'd. |
@rustbot ready |
@bors r+ rollup=iffy |
Update Android in CI We are currently using a 10+ year old Android image, and it has caused trouble when working on rust-lang#120326. Our current NDK (25) only supports API 19+, so we were already out of spec. This PR: 1. Bumps the API used by the emulator in CI to 21, as per [NDK-26's release notes](https://github.com/android/ndk/wiki/Changelog-r26) deprecating 19 and 20 as targets. 2. Activates aarch64 testing on the emulator, since the base image is now a 64-bit image. 3. Bumps the NDK to 26b
💔 Test failed - checks-actions |
|
We were running testing on API 18, which was already out of support for NDK 25, and some of the ancient behavior in that image was causing trouble when developing `rustc` features (rust-lang#120326). Update to the current LTS NDK 26, and to its minimum supported API 21. Fixes: rust-lang#120567
@bors try |
Update Android in CI We are currently using a 10+ year old Android image, and it has caused trouble when working on rust-lang#120326. Our current NDK (25) only supports API 19+, so we were already out of spec. This PR: 1. Bumps the API used by the emulator in CI to 21, as per [NDK-26's release notes](https://github.com/android/ndk/wiki/Changelog-r26) deprecating 19 and 20 as targets. 2. Bumps the NDK to 26b try-job: arm-android
☀️ Try build successful - checks-actions |
Great, time for the real thing. Only change from the previous approval was to drop the patches that add aarch64. @bors r=Mark-Simulacrum,workingjubilee |
The job Click to see the possible cause of the failure (guessed by this bot)
|
Note that try builds cannot be cancelled using the current bors bot. |
☀️ Test successful - checks-actions |
Finished benchmarking commit (6ef11b8): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)This benchmark run did not return any relevant results for this metric. CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 772.066s -> 770.248s (-0.24%) |
Congratulations on getting this merged, it seems to have been incredibly difficult. Thanks for the persistence. |
Since rust-lang/rust#120593 the minimum android API level is 21. Related: https://github.com/android/ndk/wiki/Changelog-r26 rust-lang/rust#129305 1. stop setting `dl_iterate_phdr` based on whether the android API level is greater than or equal to 21, but retain it for back compat. 2. remove `cc` build dependency. 3. upgrade ndk r25b to r26d in CI.
This implies that API level 21 is the new minimum supported (at least minimum tested) API level, which should be documented...somewhere, especially somewhere in (or linked from) the platform support documentation.
Ditto. This seems to imply the minimum NDK version is 26b now, which should be similarly documented. |
I think the actually germane element here is the API level. If you compile Rust with the oldest NDK that supports our minimum API level, it should work, in theory? Not that we're testing it, so we should be clear that that's the NDK we support, but I draw the distinction because the API level is the hard limit. |
In a blog post for 1.68, we noted that we were moving to a policy of targeting the most recent LTS NDK. This is further documented in the NDK/API Update Policy under Platform Support. I'd agree with you that it would be worth an extra notification if we were bumping the API beyond that, but we're bumping the min API exactly the way we messaged we would - we currently support all API levels supported by the supported NDK, which is the LTS NDK, and results in a minimum of 21. |
Do we still intend to support API level 19 even though we're not testing it? Or are we now allowing the use of API level 20/21 features in future commits? This is the kind of clarification that I would like to see. In my experience with MSRV, soon after I stop testing with the MSRV toolchain, the build with that toolchain breaks. More generally, "supported but not tested" minimum supported toolchain versions tend not to be "supported" very well. |
@briansmith No? And I'm not sure how you apprehended that conclusion. I was only commenting about the API/NDK distinction because older NDKs can theoretically compile for that API level. The API level still represents the hard minimum. The API level is what defines the actual implementation of the standard library. |
We are currently using a 10+ year old Android image, and it has caused trouble when working on #120326.
Our current NDK (25) only supports API 19+, so we were already out of spec. This PR:
try-job: arm-android