nixpkgs/pkgs/development/python-modules/pytorch/pthreadpool-disable-gcd.diff
Daniël de Kok 6ffc0fd601 python3Packages.pytorch: fix Darwin build by disabling GCD
PyTorch 1.6.0 has updated the vendored pthreadpool library, which has recently
added support for Grand Central Dispatch. Unfortunately, it uses functionality
(DISPATCH_APPLY_AUTO) that is only available since macOS 10.13, whereas we are
still using 10.12 libraries.

We can't directly pass through option to vendored libraries, since the setup.py
scripts creates/filters the options that are passed to CMake. So, instead, this
adds a small patch that disables the GCD functionality in pthreadpool.
2020-08-08 10:36:48 +02:00

46 lines
2.2 KiB
Diff

diff --git a/third_party/pthreadpool/CMakeLists.txt b/third_party/pthreadpool/CMakeLists.txt
index 0db3264..1ba91c4 100644
--- a/third_party/pthreadpool/CMakeLists.txt
+++ b/third_party/pthreadpool/CMakeLists.txt
@@ -74,9 +74,7 @@ IF(EMSCRIPTEN)
LIST(APPEND PTHREADPOOL_SRCS src/shim.c)
ELSE()
LIST(APPEND PTHREADPOOL_SRCS src/portable-api.c src/memory.c)
- IF(APPLE AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "gcd"))
- LIST(APPEND PTHREADPOOL_SRCS src/gcd.c)
- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$" AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "event"))
+ IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$" AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "event"))
LIST(APPEND PTHREADPOOL_SRCS src/windows.c)
ELSE()
LIST(APPEND PTHREADPOOL_SRCS src/pthreads.c)
@@ -111,10 +109,6 @@ ELSEIF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "futex")
TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=1)
TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=0)
TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_EVENT=0)
-ELSEIF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "gcd")
- TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=0)
- TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=1)
- TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_EVENT=0)
ELSEIF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "event")
TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=0)
TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=0)
diff --git a/third_party/pthreadpool/src/threadpool-common.h b/third_party/pthreadpool/src/threadpool-common.h
index ca84744..244d0ca 100644
--- a/third_party/pthreadpool/src/threadpool-common.h
+++ b/third_party/pthreadpool/src/threadpool-common.h
@@ -14,14 +14,6 @@
#endif
#endif
-#ifndef PTHREADPOOL_USE_GCD
- #if defined(__APPLE__)
- #define PTHREADPOOL_USE_GCD 1
- #else
- #define PTHREADPOOL_USE_GCD 0
- #endif
-#endif
-
#ifndef PTHREADPOOL_USE_EVENT
#if defined(_WIN32) || defined(__CYGWIN__)
#define PTHREADPOOL_USE_EVENT 1