diff --git a/CMakeLists.txt b/CMakeLists.txt index f2e50312a9..6fc10c5e3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,6 +129,12 @@ elseif(WINDOWS AND NOT UMF_DISABLE_HWLOC) set(HWLOC_ENABLE_TESTING OFF) set(HWLOC_SKIP_LSTOPO ON) set(HWLOC_SKIP_TOOLS ON) + set(HWLOC_PATCH + git + apply + ${PROJECT_SOURCE_DIR}/cmake/fix_coverity_issues.patch + || + true) message(STATUS "Will fetch hwloc from ${UMF_HWLOC_REPO}") @@ -136,7 +142,8 @@ elseif(WINDOWS AND NOT UMF_DISABLE_HWLOC) hwloc_targ GIT_REPOSITORY ${UMF_HWLOC_REPO} GIT_TAG ${UMF_HWLOC_TAG} - SOURCE_SUBDIR contrib/windows-cmake/ FIND_PACKAGE_ARGS) + PATCH_COMMAND ${HWLOC_PATCH} SOURCE_SUBDIR contrib/windows-cmake/ + FIND_PACKAGE_ARGS) FetchContent_GetProperties(hwloc_targ) if(NOT hwloc_targ_POPULATED) @@ -153,12 +160,20 @@ elseif(WINDOWS AND NOT UMF_DISABLE_HWLOC) message(STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS}") elseif(NOT UMF_DISABLE_HWLOC) include(FetchContent) + set(HWLOC_PATCH + git + apply + ${PROJECT_SOURCE_DIR}/cmake/fix_coverity_issues.patch + || + true) + message(STATUS "Will fetch hwloc from ${UMF_HWLOC_REPO}") FetchContent_Declare( hwloc_targ GIT_REPOSITORY ${UMF_HWLOC_REPO} - GIT_TAG ${UMF_HWLOC_TAG}) + GIT_TAG ${UMF_HWLOC_TAG} + PATCH_COMMAND ${HWLOC_PATCH}) FetchContent_GetProperties(hwloc_targ) if(NOT hwloc_targ_POPULATED) diff --git a/cmake/fix_coverity_issues.patch b/cmake/fix_coverity_issues.patch new file mode 100644 index 0000000000..1edcbd3365 --- /dev/null +++ b/cmake/fix_coverity_issues.patch @@ -0,0 +1,14 @@ +diff --git a/hwloc/topology-x86.c b/hwloc/topology-x86.c +index 7aabd168f..b01e44557 100644 +--- a/hwloc/topology-x86.c ++++ b/hwloc/topology-x86.c +@@ -1375,6 +1375,9 @@ look_procs(struct hwloc_backend *backend, struct procinfo *infos, unsigned long + hwloc_bitmap_t set = NULL; + unsigned i; + ++ if(!get_cpubind||!set_cpubind) ++ return -1; ++ + if (!data->src_cpuiddump_path) { + orig_cpuset = hwloc_bitmap_alloc(); + if (get_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {