https://github.com/python/cpython/commit/050813c026c742f2cbdcfefc3a062d0105e2195c
commit: 050813c026c742f2cbdcfefc3a062d0105e2195c
branch: 3.13
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-13T09:59:57Z
summary:
[3.13] gh-131032: Add support.linked_to_musl() function (#131071) (#131179)
gh-131032: Add support.linked_to_musl() function (#131071)
Skip test_math.test_fma_zero_result() if Python is linked to the musl
C library.
(cherry picked from commit 68922ace4dabb6635e6d5b51bbe6485ef2e9dad2)
files:
M Lib/test/support/__init__.py
M Lib/test/test_math.py
M Lib/test/test_support.py
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index ff450c7f9142af..f5036dd18b64ea 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -2767,3 +2767,22 @@ def __iter__(self):
if self.iter_raises:
1/0
return self
+
+
+def linked_to_musl():
+ """
+ Test if the Python executable is linked to the musl C library.
+ """
+ if sys.platform != 'linux':
+ return False
+
+ import subprocess
+ exe = getattr(sys, '_base_executable', sys.executable)
+ cmd = ['ldd', exe]
+ try:
+ stdout = subprocess.check_output(cmd,
+ text=True,
+ stderr=subprocess.STDOUT)
+ except (OSError, subprocess.CalledProcessError):
+ return False
+ return ('musl' in stdout)
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index 36b96b4c31d635..d309e8c1c41f18 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -2712,8 +2712,9 @@ def test_fma_infinities(self):
# gh-73468: On some platforms, libc fma() doesn't implement IEE 754-2008
# properly: it doesn't use the right sign when the result is zero.
@unittest.skipIf(
- sys.platform.startswith(("freebsd", "wasi", "netbsd"))
- or (sys.platform == "android" and platform.machine() == "x86_64"),
+ sys.platform.startswith(("freebsd", "wasi", "netbsd", "emscripten"))
+ or (sys.platform == "android" and platform.machine() == "x86_64")
+ or support.linked_to_musl(), # gh-131032
f"this platform doesn't implement IEE 754-2008 properly")
def test_fma_zero_result(self):
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 4310f06924a89d..11670b06fb7664 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -733,6 +733,10 @@ def test_copy_python_src_ignore(self):
self.assertEqual(support.copy_python_src_ignore(path,
os.listdir(path)),
ignored)
+ def test_linked_to_musl(self):
+ linked = support.linked_to_musl()
+ self.assertIsInstance(linked, bool)
+
# XXX -follows a list of untested API
# make_legacy_pyc
# is_resource_enabled
_______________________________________________
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]