-
-
Notifications
You must be signed in to change notification settings - Fork 34k
Android testbed fixes #142912
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
base: main
Are you sure you want to change the base?
Android testbed fixes #142912
Conversation
|
!buildbot android |
This comment was marked as outdated.
This comment was marked as outdated.
|
!buildbot aarch64 android |
This comment was marked as outdated.
This comment was marked as outdated.
|
!buildbot android |
|
🤖 New build scheduled with the buildbot fleet by @mhsmith for commit 29ec458 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F142912%2Fmerge The command will test the builders whose names match following regular expression: The builders matched are:
|
|
@freakboy3742: I didn't manage to complete the emulator RAM size fix today, so let's merge this PR without it. So far RAM size has only been a blocker for Pandas, and that's unlikely to be ready to release within the next two months anyway, given how many other things have to be released first. GitHub Actions is broken at the moment; please rerun CI once that's resolved. |
freakboy3742
left a comment
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.
The buildbot and CI runs suggest this change works; but I want to make sure I follow how these changes avoid the "pytest progress" issue.
I can see this moves to a "raw binary" mode of reading the ADB log, which means we get the raw messages being posted rather than the logged output.
That then means that we're reading "raw" log output at the level of individual messages, rather than log output that is buffered by newline/flush elements; so when we're streaming log output, we have visibility on the newlines that have been printed to stdout/err, rather than that content being part of the buffering process.
The "leading space" trick is needed to preserve newlines that would otherwise been trimmed from the log by an internal logcat mechanism. AFAICT, this does mean that successive writes of hello and \nworld would result in a space at the end of the "hello" as printed to the screen - but that's visually inert unless you're really unlucky and trigger size of screen line wrapping, so it's worth living with.
It also means that anyone monitoring the "text mode" ADB stream will still get "one dot per line" output for pytest suites etc (e.g., Briefcase's Android runner logs); but the same "binary mode" logger could be used there as well.
Have I understood what is going on here?
Assuming I have - on a meta level, I think this is a big enough change that it needs a ticket and NEWS entry - if only to provide tracking for the backports.
Fixes for several issues found while building NumPy and related packages:
Gradle automatically decompresses assets whose filenames end with ".gz", which broke some packages' tests.
The stdout/stderr logging couldn't distinguish between log messages which were triggered by a newline, and those triggered by a manual call to
flush. This particularly affected pytest's "one dot per test" progress indicator, which was printing every dot on a separate line.logcattool in--format tagmode. Fixed by switching to--binarymode.logcattool on API level 33 buffers its output incorrectly in--binarymode, causing lines to be delayed or lost. Fixed by reducing the tesbed to API level 32.