mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Set RUNPATH so installed tests can find the required shared libraries (#136627)
This change fixes the RUNPATH of installed c++ tests so that the linker can find the shared libraries they depend on. For example, currently: ```bash venv/lib/python3.10/site-packages/torch $ ./bin/test_lazy ./bin/test_lazy: error while loading shared libraries: libtorch.so: cannot open shared object file: No such file or directory ``` Pull Request resolved: https://github.com/pytorch/pytorch/pull/136627 Approved by: https://github.com/malfet
This commit is contained in:
committed by
PyTorch MergeBot
parent
86d4b7d60b
commit
22d2e2d9a0
@ -8,6 +8,7 @@ if(BUILD_TEST)
|
|||||||
add_executable(${bench_name} "${bench_src}")
|
add_executable(${bench_name} "${bench_src}")
|
||||||
target_link_libraries(${bench_name} ${C10_LIB} benchmark)
|
target_link_libraries(${bench_name} ${C10_LIB} benchmark)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${bench_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${bench_name} DESTINATION test)
|
install(TARGETS ${bench_name} DESTINATION test)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -12,6 +12,7 @@ if(BUILD_TEST)
|
|||||||
target_link_libraries(${test_name} ${C10_LIB} gmock gtest gtest_main)
|
target_link_libraries(${test_name} ${C10_LIB} gmock gtest gtest_main)
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -1748,6 +1748,7 @@ if(BUILD_TEST)
|
|||||||
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
@ -1768,6 +1769,7 @@ if(BUILD_TEST)
|
|||||||
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
@ -1789,6 +1791,7 @@ if(BUILD_TEST)
|
|||||||
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
@ -1810,6 +1813,7 @@ if(BUILD_TEST)
|
|||||||
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
@ -1824,6 +1828,7 @@ if(BUILD_TEST)
|
|||||||
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
@ -1843,6 +1848,7 @@ if(BUILD_TEST)
|
|||||||
target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
|
target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS ${test_name} DESTINATION test)
|
install(TARGETS ${test_name} DESTINATION test)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -73,6 +73,7 @@ if(NOT MSVC)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_api PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_api DESTINATION bin)
|
install(TARGETS test_api DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -6,37 +6,40 @@ if(USE_CUDA)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(c10d_add_test test_src)
|
function(c10d_add_test test_src)
|
||||||
|
set(prefix ARG)
|
||||||
|
set(noValues)
|
||||||
|
set(singleValues INSTALL_TEST)
|
||||||
|
set(multiValues LINK_LIBRARIES)
|
||||||
|
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
cmake_parse_arguments(${prefix} "${noValues}" "${singleValues}" "${multiValues}" ${ARGN})
|
||||||
|
|
||||||
get_filename_component(test_name ${test_src} NAME_WE)
|
get_filename_component(test_name ${test_src} NAME_WE)
|
||||||
add_executable(${test_name} "${test_src}")
|
add_executable(${test_name} "${test_src}")
|
||||||
target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${TORCH_SRC_DIR}/csrc/distributed>)
|
target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${TORCH_SRC_DIR}/csrc/distributed>)
|
||||||
target_link_libraries(${test_name} ${ARGN})
|
target_link_libraries(${test_name} ${ARG_LINK_LIBRARIES})
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
target_link_libraries(${test_name} pthread)
|
target_link_libraries(${test_name} pthread)
|
||||||
endif()
|
endif()
|
||||||
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
|
||||||
|
|
||||||
|
if(ARG_INSTALL_TEST)
|
||||||
|
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
|
install(TARGETS ${test_name} DESTINATION bin)
|
||||||
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
c10d_add_test(BackoffTest.cpp torch_cpu gtest_main)
|
c10d_add_test(BackoffTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST OFF)
|
||||||
c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
|
c10d_add_test(FileStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
|
||||||
c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
|
c10d_add_test(TCPStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
|
||||||
install(TARGETS FileStoreTest DESTINATION bin)
|
|
||||||
install(TARGETS TCPStoreTest DESTINATION bin)
|
|
||||||
endif()
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
|
c10d_add_test(HashStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
|
||||||
install(TARGETS HashStoreTest DESTINATION bin)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(USE_CUDA)
|
if(USE_CUDA)
|
||||||
if(USE_GLOO AND USE_C10D_GLOO)
|
if(USE_GLOO AND USE_C10D_GLOO)
|
||||||
c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
|
c10d_add_test(ProcessGroupGlooTest.cpp LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
c10d_add_test(ProcessGroupGlooAsyncTest.cpp LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main INSTALL_TEST ${INSTALL_TEST})
|
||||||
install(TARGETS ProcessGroupGlooTest DESTINATION bin)
|
|
||||||
endif()
|
|
||||||
c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
|
|
||||||
endif()
|
endif()
|
||||||
if(USE_NCCL AND USE_C10D_NCCL)
|
if(USE_NCCL AND USE_C10D_NCCL)
|
||||||
# NCCL is a private dependency of libtorch, but the tests include some
|
# NCCL is a private dependency of libtorch, but the tests include some
|
||||||
@ -45,13 +48,11 @@ if(USE_CUDA)
|
|||||||
# a private dependency of the tests as well.
|
# a private dependency of the tests as well.
|
||||||
c10d_add_test(
|
c10d_add_test(
|
||||||
ProcessGroupNCCLTest.cpp
|
ProcessGroupNCCLTest.cpp
|
||||||
torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
|
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_nccl INSTALL_TEST ${INSTALL_TEST})
|
||||||
c10d_add_test(
|
c10d_add_test(
|
||||||
ProcessGroupNCCLErrorsTest.cpp
|
ProcessGroupNCCLErrorsTest.cpp
|
||||||
torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
|
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_nccl INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
|
|
||||||
install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
|
|
||||||
install(TARGETS c10d_cuda_test DESTINATION lib)
|
install(TARGETS c10d_cuda_test DESTINATION lib)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -62,15 +63,14 @@ if(USE_CUDA)
|
|||||||
# a private dependency of the tests as well.
|
# a private dependency of the tests as well.
|
||||||
c10d_add_test(
|
c10d_add_test(
|
||||||
ProcessGroupUCCTest.cpp
|
ProcessGroupUCCTest.cpp
|
||||||
torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
|
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_ucc INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
install(TARGETS ProcessGroupUCCTest DESTINATION bin)
|
|
||||||
install(TARGETS c10d_cuda_test DESTINATION lib)
|
install(TARGETS c10d_cuda_test DESTINATION lib)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if(USE_GLOO AND USE_C10D_GLOO)
|
if(USE_GLOO AND USE_C10D_GLOO)
|
||||||
c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
|
c10d_add_test(ProcessGroupGlooTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST OFF)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -80,10 +80,7 @@ if(USE_MPI AND USE_C10D_MPI)
|
|||||||
# private headers of libtorch, which in turn include MPI. As a hacky
|
# private headers of libtorch, which in turn include MPI. As a hacky
|
||||||
# alternative to making MPI a public dependency of libtorch, we make it
|
# alternative to making MPI a public dependency of libtorch, we make it
|
||||||
# a private dependency of the tests as well.
|
# a private dependency of the tests as well.
|
||||||
c10d_add_test(ProcessGroupMPITest.cpp torch_cpu MPI::MPI_CXX)
|
c10d_add_test(ProcessGroupMPITest.cpp LINK_LIBRARIES torch_cpu MPI::MPI_CXX INSTALL_TEST ${INSTALL_TEST})
|
||||||
if(INSTALL_TEST)
|
|
||||||
install(TARGETS ProcessGroupMPITest DESTINATION bin)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LINUX AND USE_GLOO AND USE_C10D_GLOO)
|
if(LINUX AND USE_GLOO AND USE_C10D_GLOO)
|
||||||
|
@ -14,6 +14,7 @@ if(USE_DISTRIBUTED AND NOT WIN32)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_dist_autograd PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_dist_autograd DESTINATION bin)
|
install(TARGETS test_dist_autograd DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -151,6 +151,7 @@ elseif(USE_ROCM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_jit PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_jit DESTINATION bin)
|
install(TARGETS test_jit DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -44,6 +44,7 @@ elseif(USE_ROCM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_lazy PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_lazy DESTINATION bin)
|
install(TARGETS test_lazy DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -37,6 +37,7 @@ if(USE_CUDA)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_cpp_rpc PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_cpp_rpc DESTINATION bin)
|
install(TARGETS test_cpp_rpc DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -71,7 +71,9 @@ elseif(USE_ROCM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_tensorexpr PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_tensorexpr DESTINATION bin)
|
install(TARGETS test_tensorexpr DESTINATION bin)
|
||||||
|
set_target_properties(tutorial_tensorexpr PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS tutorial_tensorexpr DESTINATION bin)
|
install(TARGETS tutorial_tensorexpr DESTINATION bin)
|
||||||
# Install PDB files for MSVC builds
|
# Install PDB files for MSVC builds
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
@ -73,5 +73,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(INSTALL_TEST)
|
if(INSTALL_TEST)
|
||||||
|
set_target_properties(test_edge_op_registration PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
|
||||||
install(TARGETS test_edge_op_registration DESTINATION bin)
|
install(TARGETS test_edge_op_registration DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user