mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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.
This commit is contained in:
		
							parent
							
								
									2ed671b5e3
								
							
						
					
					
						commit
						68922ace4d
					
				
					 3 changed files with 25 additions and 1 deletions
				
			
		|  | @ -3015,3 +3015,22 @@ def is_libssl_fips_mode(): | |||
|     except ImportError: | ||||
|         return False  # more of a maybe, unless we add this to the _ssl module. | ||||
|     return get_fips_mode() != 0 | ||||
| 
 | ||||
| 
 | ||||
| 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) | ||||
|  |  | |||
|  | @ -2769,7 +2769,8 @@ def test_fma_infinities(self): | |||
|     # properly: it doesn't use the right sign when the result is zero. | ||||
|     @unittest.skipIf( | ||||
|         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") | ||||
|     def test_fma_zero_result(self): | ||||
|         nonnegative_finites = [0.0, 1e-300, 2.3, 1e300] | ||||
|  |  | |||
|  | @ -744,6 +744,10 @@ def test_get_signal_name(self): | |||
|             self.assertEqual(support.get_signal_name(exitcode), expected, | ||||
|                              exitcode) | ||||
| 
 | ||||
|     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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Victor Stinner
						Victor Stinner