All sendfile differences between Linux and Solaris were hopefully taken care
|
of, and hence we can reenable it within the shutil module.
|
|
This was requested upstream as well:
|
https://bugs.python.org/issue41843
|
|
--- Python-3.9.1/Lib/shutil.py
|
+++ Python-3.9.1/Lib/shutil.py
|
@@ -50,7 +50,7 @@ elif _WINDOWS:
|
import nt
|
|
COPY_BUFSIZE = 1024 * 1024 if _WINDOWS else 64 * 1024
|
-_USE_CP_SENDFILE = hasattr(os, "sendfile") and sys.platform.startswith("linux")
|
+_USE_CP_SENDFILE = hasattr(os, "sendfile")
|
_HAS_FCOPYFILE = posix and hasattr(posix, "_fcopyfile") # macOS
|
|
# CMD defaults in Windows 10
|
--- Python-3.9.1/Doc/library/shutil.rst
|
+++ Python-3.9.1/Doc/library/shutil.rst
|
@@ -452,7 +452,8 @@ the use of userspace buffers in Python a
|
|
On macOS `fcopyfile`_ is used to copy the file content (not metadata).
|
|
-On Linux :func:`os.sendfile` is used.
|
+On Linux, Solaris and other POSIX platforms where :func:`os.sendfile` supports
|
+copies between 2 regular file descriptors :func:`os.sendfile` is used.
|
|
On Windows :func:`shutil.copyfile` uses a bigger default buffer size (1 MiB
|
instead of 64 KiB) and a :func:`memoryview`-based variant of
|