mirror of
https://github.com/python/cpython.git
synced 2025-11-03 07:01:21 +00:00
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 68922ace4d)
This commit is contained in:
parent
589382bd04
commit
050813c026
3 changed files with 26 additions and 2 deletions
|
|
@ -2767,3 +2767,22 @@ def __iter__(self):
|
||||||
if self.iter_raises:
|
if self.iter_raises:
|
||||||
1/0
|
1/0
|
||||||
return self
|
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)
|
||||||
|
|
|
||||||
|
|
@ -2712,8 +2712,9 @@ def test_fma_infinities(self):
|
||||||
# gh-73468: On some platforms, libc fma() doesn't implement IEE 754-2008
|
# 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.
|
# properly: it doesn't use the right sign when the result is zero.
|
||||||
@unittest.skipIf(
|
@unittest.skipIf(
|
||||||
sys.platform.startswith(("freebsd", "wasi", "netbsd"))
|
sys.platform.startswith(("freebsd", "wasi", "netbsd", "emscripten"))
|
||||||
or (sys.platform == "android" and platform.machine() == "x86_64"),
|
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")
|
f"this platform doesn't implement IEE 754-2008 properly")
|
||||||
def test_fma_zero_result(self):
|
def test_fma_zero_result(self):
|
||||||
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
|
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
|
||||||
|
|
|
||||||
|
|
@ -733,6 +733,10 @@ def test_copy_python_src_ignore(self):
|
||||||
self.assertEqual(support.copy_python_src_ignore(path, os.listdir(path)),
|
self.assertEqual(support.copy_python_src_ignore(path, os.listdir(path)),
|
||||||
ignored)
|
ignored)
|
||||||
|
|
||||||
|
def test_linked_to_musl(self):
|
||||||
|
linked = support.linked_to_musl()
|
||||||
|
self.assertIsInstance(linked, bool)
|
||||||
|
|
||||||
# XXX -follows a list of untested API
|
# XXX -follows a list of untested API
|
||||||
# make_legacy_pyc
|
# make_legacy_pyc
|
||||||
# is_resource_enabled
|
# is_resource_enabled
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue