https://github.com/python/cpython/commit/f4b1d3e891d0d2055e53df3ccb84030bcaa148b5
commit: f4b1d3e891d0d2055e53df3ccb84030bcaa148b5
branch: main
author: Malcolm Smith <[email protected]>
committer: freakboy3742 <[email protected]>
date: 2026-07-30T10:31:40+08:00
summary:
Minor fixes for Android (#154895)
A collection of small cleanups for Android support:
* Clarifies the documentation around version number handling for iOS and
Android in os.uname and platform.release
* Ensures that automated NDK installs surface messages written to stderr
* Makes the Android NDK check more robust for incomplete downloads
* Corrects some linting errors in Android build scripts
files:
M Doc/library/os.rst
M Doc/library/platform.rst
M Platforms/Android/__main__.py
M Platforms/Android/android-env.sh
M Platforms/Android/testbed/app/src/main/java/org/python/testbed/MainActivity.kt
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index be7ea26356bebe3..7bdf415db655f32 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -802,9 +802,9 @@ process and user.
Returns information identifying the current operating system.
The return value is a :class:`uname_result`.
- On macOS, iOS and Android, this returns the *kernel* name and version (i.e.,
+ On macOS, iOS and Android, this returns the *kernel* name and release (i.e.,
``'Darwin'`` on macOS and iOS; ``'Linux'`` on Android).
:func:`platform.uname`
- can be used to get the user-facing operating system name and version on iOS
and
+ can be used to get the user-facing operating system name and release on iOS
and
Android.
.. seealso::
diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst
index 1d30966794fd1bf..f728a7b32e789f4 100644
--- a/Doc/library/platform.rst
+++ b/Doc/library/platform.rst
@@ -141,6 +141,8 @@ Cross platform
Returns the system's release, e.g. ``'2.2.0'`` or ``'NT'``. An empty string
is
returned if the value cannot be determined.
+ On iOS and Android, this is the user-facing OS release. To obtain the
+ Darwin or Linux kernel release, use :func:`os.uname`.
.. function:: system()
@@ -163,9 +165,6 @@ Cross platform
Returns the system's release version, e.g. ``'#3 on degas'``. An empty
string is
returned if the value cannot be determined.
- On iOS and Android, this is the user-facing OS version. To obtain the
- Darwin or Linux kernel version, use :func:`os.uname`.
-
.. function:: uname()
Fairly portable uname interface. Returns a :func:`~collections.namedtuple`
diff --git a/Platforms/Android/__main__.py b/Platforms/Android/__main__.py
index 78f94b317ab0478..705ca6f26221fda 100755
--- a/Platforms/Android/__main__.py
+++ b/Platforms/Android/__main__.py
@@ -158,7 +158,7 @@ def android_env(host):
f"PREFIX={prefix}; "
f". {ENV_SCRIPT}; "
f"export",
- check=True, shell=True, capture_output=True, encoding='utf-8',
+ check=True, shell=True, stdout=subprocess.PIPE, encoding='utf-8',
).stdout
env = {}
@@ -625,7 +625,8 @@ async def read_int(size):
except ValueError:
priority = LogPriority.UNKNOWN
- payload_fields = (await read_bytes(payload_len - 1)).split(b"\0")
+ payload = await read_bytes(payload_len - 1)
+ payload_fields = payload.split(b"\0")
if len(payload_fields) < 2:
raise ValueError(
f"payload {payload!r} does not contain at least 2 "
diff --git a/Platforms/Android/android-env.sh b/Platforms/Android/android-env.sh
index 5859c0eac4a88fb..59ce2eeb7d62244 100644
--- a/Platforms/Android/android-env.sh
+++ b/Platforms/Android/android-env.sh
@@ -7,7 +7,7 @@
: "${PREFIX:-}" # Path in which to find required libraries
-# Print all messages on stderr so they're visible when running within
build-wheel.
+# Print all messages on stderr so they're visible when stdout is captured.
log() {
echo "$1" >&2
}
@@ -27,7 +27,7 @@ fail() {
ndk_version=27.3.13750724
ndk=$ANDROID_HOME/ndk/$ndk_version
-if ! [ -e "$ndk" ]; then
+if ! [ -e "$ndk/package.xml" ]; then
log "Installing NDK - this may take several minutes"
yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
"ndk;$ndk_version"
fi
diff --git
a/Platforms/Android/testbed/app/src/main/java/org/python/testbed/MainActivity.kt
b/Platforms/Android/testbed/app/src/main/java/org/python/testbed/MainActivity.kt
index dc49cdb9a9f7395..c8fe3acd849ac7a 100644
---
a/Platforms/Android/testbed/app/src/main/java/org/python/testbed/MainActivity.kt
+++
b/Platforms/Android/testbed/app/src/main/java/org/python/testbed/MainActivity.kt
@@ -28,12 +28,11 @@ class PythonTestRunner(val context: Context) {
* @param args Python command-line, encoded as JSON.
* @return The Python exit status: zero on success, nonzero on failure. */
fun run(args: String) : Int {
- // We leave argument 0 as an empty string, which is a placeholder for
the
- // executable name in embedded mode.
+ // Argument 0 is a placeholder for the executable name in embedded
mode.
val argsJsonArray = JSONArray(args)
- val argsStringArray = Array<String>(argsJsonArray.length() + 1) { it
-> ""}
- for (i in 0..<argsJsonArray.length()) {
- argsStringArray[i + 1] = argsJsonArray.getString(i)
+ val argsStringArray = Array<String>(argsJsonArray.length() + 1) { i ->
+ if (i == 0) ""
+ else argsJsonArray.getString(i - 1)
}
// Python needs this variable to help it find the temporary directory,
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]