Files
macports-ports/lang/python38/files/patch-no-copyfile-on-Tiger.diff
kencu 7da358db76 python38: fix build on < 10.6
work around no copyfile on < 10.5
work around no pthread_threadid_np on < 10.6

closes: https://trac.macports.org/ticket/60342
closes: https://trac.macports.org/ticket/59772
closes: https://trac.macports.org/ticket/59827

Thanks to @dgelessus as well for valuable input
There is a comprehensive patch upstream being considered
for a future python release.
2020-04-15 07:01:11 -07:00

73 lines
2.0 KiB
Diff

posix.copyfile does not exist on Tiger.
Python 3.8's posix._fcopyfile implementation unconditionally uses <copyfile.h>,
which only exists on Leopard ane newer. This patch removes posix._fcopyfile
on Tiger - this is okay because the rest of the stdlib uses posix._fcopyfile
only conditionally after checking that the function exists
(non-Apple systems don't have posix._fcopyfile either).
thanks to @dgelessus
https://github.com/macports/macports-ports/pull/5987
--- Lib/test/test_shutil.py.orig
+++ Lib/test/test_shutil.py
@@ -2393,7 +2393,7 @@
shutil._USE_CP_SENDFILE = True
-@unittest.skipIf(not MACOS, 'macOS only')
+@unittest.skipIf(not MACOS or not hasattr(posix, "_fcopyfile"), 'macOS with posix._fcopyfile only')
class TestZeroCopyMACOS(_ZeroCopyFileTest, unittest.TestCase):
PATCHPOINT = "posix._fcopyfile"
--- Modules/clinic/posixmodule.c.h.orig
+++ Modules/clinic/posixmodule.c.h
@@ -4975,7 +4975,7 @@ exit:
return return_value;
}
-#if defined(__APPLE__)
+#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
PyDoc_STRVAR(os__fcopyfile__doc__,
"_fcopyfile($module, infd, outfd, flags, /)\n"
--- ./Modules/posixmodule.c.orig
+++ ./Modules/posixmodule.c
@@ -11,6 +11,7 @@
#ifdef __APPLE__
+#include <AvailabilityMacros.h>
/*
* Step 1 of support for weak-linking a number of symbols existing on
* OSX 10.4 and later, see the comment in the #ifdef __APPLE__ block
@@ -109,7 +110,7 @@
#include <sys/sendfile.h>
#endif
-#if defined(__APPLE__)
+#if defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
#include <copyfile.h>
#endif
@@ -9266,7 +9267,7 @@
#endif /* HAVE_SENDFILE */
-#if defined(__APPLE__)
+#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
/*[clinic input]
os._fcopyfile
@@ -14368,7 +14369,7 @@
#endif
#endif
-#if defined(__APPLE__)
+#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
if (PyModule_AddIntConstant(m, "_COPYFILE_DATA", COPYFILE_DATA)) return -1;
#endif