-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
python314-devel: add compatibility patch to fix build on macOS <10.12
- Loading branch information
1 parent
237e08d
commit e5edddf
Showing
2 changed files
with
99 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
lang/python314-devel/files/patch-pylifecycle-compatibility.diff
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
Backport of https://github.com/python/cpython/pull/128165 with minor modifications to not use legacysupport. | ||
--- Python/pylifecycle.c | ||
+++ Python/pylifecycle.c | ||
@@ -46,8 +46,25 @@ | ||
|
||
#if defined(__APPLE__) | ||
# include <AvailabilityMacros.h> | ||
+# define TARGET_OS_OSX 1 | ||
# 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 | ||
@@ -77,7 +94,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); | ||
@@ -1262,7 +1279,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)) { | ||
@@ -2946,7 +2963,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) | ||
@@ -2957,14 +2974,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; | ||
} | ||
|
||
@@ -2999,7 +3011,6 @@ init_apple_streams(PyThreadState *tstate) | ||
if (result == NULL) { | ||
goto error; | ||
} | ||
- | ||
goto done; | ||
|
||
error: | ||
@@ -3013,7 +3024,7 @@ init_apple_streams(PyThreadState *tstate) | ||
return status; | ||
} | ||
|
||
-#endif // __APPLE__ | ||
+#endif // __APPLE__ && HAS_APPLE_SYSTEM_LOG | ||
|
||
|
||
static void |