mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	[3.13] gh-128146: Exclude os/log.h import on older macOS versions. (GH-128165) (#128575)
gh-128146: Exclude os/log.h import on older macOS versions. (GH-128165)
Reworks the handling of Apple system log handling to account for older macOS
versions that don't provide os-log.
(cherry picked from commit e837a1f71e)
Co-authored-by: Russell Keith-Magee <russell@keith-magee.com>
			
			
This commit is contained in:
		
							parent
							
								
									d81b99b53b
								
							
						
					
					
						commit
						bbe0b33d2a
					
				
					 2 changed files with 24 additions and 11 deletions
				
			
		|  | @ -0,0 +1,2 @@ | |||
| Usage of the unified Apple System Log APIs was disabled when the minimum | ||||
| macOS version is earlier than 10.12. | ||||
|  | @ -44,8 +44,25 @@ | |||
| 
 | ||||
| #if defined(__APPLE__) | ||||
| #  include <AvailabilityMacros.h> | ||||
| #  include <TargetConditionals.h> | ||||
| #  include <mach-o/loader.h> | ||||
| #  include <os/log.h> | ||||
| // The os_log unified logging APIs were introduced in macOS 10.12, iOS 10.0,
 | ||||
| // tvOS 10.0, and watchOS 3.0;
 | ||||
| #  if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE | ||||
| #    define HAS_APPLE_SYSTEM_LOG 1 | ||||
| #  elif defined(TARGET_OS_OSX) && TARGET_OS_OSX | ||||
| #    if defined(MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12 | ||||
| #      define HAS_APPLE_SYSTEM_LOG 1 | ||||
| #    else | ||||
| #      define HAS_APPLE_SYSTEM_LOG 0 | ||||
| #    endif | ||||
| #  else | ||||
| #    define HAS_APPLE_SYSTEM_LOG 0 | ||||
| #  endif | ||||
| 
 | ||||
| #  if HAS_APPLE_SYSTEM_LOG | ||||
| #    include <os/log.h> | ||||
| #  endif | ||||
| #endif | ||||
| 
 | ||||
| #ifdef HAVE_SIGNAL_H | ||||
|  | @ -75,7 +92,7 @@ static PyStatus init_sys_streams(PyThreadState *tstate); | |||
| #ifdef __ANDROID__ | ||||
| static PyStatus init_android_streams(PyThreadState *tstate); | ||||
| #endif | ||||
| #if defined(__APPLE__) | ||||
| #if defined(__APPLE__) && HAS_APPLE_SYSTEM_LOG | ||||
| static PyStatus init_apple_streams(PyThreadState *tstate); | ||||
| #endif | ||||
| static void wait_for_thread_shutdown(PyThreadState *tstate); | ||||
|  | @ -1258,7 +1275,7 @@ init_interp_main(PyThreadState *tstate) | |||
|         return status; | ||||
|     } | ||||
| #endif | ||||
| #if defined(__APPLE__) | ||||
| #if defined(__APPLE__) && HAS_APPLE_SYSTEM_LOG | ||||
|     if (config->use_system_logger) { | ||||
|         status = init_apple_streams(tstate); | ||||
|         if (_PyStatus_EXCEPTION(status)) { | ||||
|  | @ -2933,7 +2950,7 @@ init_android_streams(PyThreadState *tstate) | |||
| 
 | ||||
| #endif  // __ANDROID__
 | ||||
| 
 | ||||
| #if defined(__APPLE__) | ||||
| #if defined(__APPLE__) && HAS_APPLE_SYSTEM_LOG | ||||
| 
 | ||||
| static PyObject * | ||||
| apple_log_write_impl(PyObject *self, PyObject *args) | ||||
|  | @ -2944,14 +2961,9 @@ apple_log_write_impl(PyObject *self, PyObject *args) | |||
|         return NULL; | ||||
|     } | ||||
| 
 | ||||
|     // Call the underlying Apple logging API. The os_log unified logging APIs
 | ||||
|     // were introduced in macOS 10.12, iOS 10.0, tvOS 10.0, and watchOS 3.0;
 | ||||
|     // this call is a no-op on older versions.
 | ||||
|     #if TARGET_OS_IPHONE || (TARGET_OS_OSX && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12) | ||||
|     // Pass the user-provided text through explicit %s formatting
 | ||||
|     // to avoid % literals being interpreted as a formatting directive.
 | ||||
|     os_log_with_type(OS_LOG_DEFAULT, logtype, "%s", text); | ||||
|     #endif | ||||
|     Py_RETURN_NONE; | ||||
| } | ||||
| 
 | ||||
|  | @ -2986,7 +2998,6 @@ init_apple_streams(PyThreadState *tstate) | |||
|     if (result == NULL) { | ||||
|         goto error; | ||||
|     } | ||||
| 
 | ||||
|     goto done; | ||||
| 
 | ||||
| error: | ||||
|  | @ -3000,7 +3011,7 @@ init_apple_streams(PyThreadState *tstate) | |||
|     return status; | ||||
| } | ||||
| 
 | ||||
| #endif  // __APPLE__
 | ||||
| #endif  // __APPLE__ && HAS_APPLE_SYSTEM_LOG
 | ||||
| 
 | ||||
| 
 | ||||
| static void | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)