Skip to content

Commit 22d2e2d

Browse files
kundaMwizapytorchmergebot
authored andcommitted
Set RUNPATH so installed tests can find the required shared libraries (pytorch#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: pytorch#136627 Approved by: https://github.com/malfet
1 parent 86d4b7d commit 22d2e2d

File tree

11 files changed

+41
-28
lines changed

11 files changed

+41
-28
lines changed

c10/benchmark/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ if(BUILD_TEST)
88
add_executable(${bench_name} "${bench_src}")
99
target_link_libraries(${bench_name} ${C10_LIB} benchmark)
1010
if(INSTALL_TEST)
11+
set_target_properties(${bench_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
1112
install(TARGETS ${bench_name} DESTINATION test)
1213
endif()
1314
endforeach()

c10/test/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ if(BUILD_TEST)
1212
target_link_libraries(${test_name} ${C10_LIB} gmock gtest gtest_main)
1313
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
1414
if(INSTALL_TEST)
15+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
1516
install(TARGETS ${test_name} DESTINATION test)
1617
endif()
1718
endforeach()

caffe2/CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -1748,6 +1748,7 @@ if(BUILD_TEST)
17481748
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
17491749
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
17501750
if(INSTALL_TEST)
1751+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
17511752
install(TARGETS ${test_name} DESTINATION test)
17521753
# Install PDB files for MSVC builds
17531754
if(MSVC AND BUILD_SHARED_LIBS)
@@ -1768,6 +1769,7 @@ if(BUILD_TEST)
17681769
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
17691770
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
17701771
if(INSTALL_TEST)
1772+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
17711773
install(TARGETS ${test_name} DESTINATION test)
17721774
# Install PDB files for MSVC builds
17731775
if(MSVC AND BUILD_SHARED_LIBS)
@@ -1789,6 +1791,7 @@ if(BUILD_TEST)
17891791
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
17901792
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
17911793
if(INSTALL_TEST)
1794+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
17921795
install(TARGETS ${test_name} DESTINATION test)
17931796
# Install PDB files for MSVC builds
17941797
if(MSVC AND BUILD_SHARED_LIBS)
@@ -1810,6 +1813,7 @@ if(BUILD_TEST)
18101813
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
18111814
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
18121815
if(INSTALL_TEST)
1816+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
18131817
install(TARGETS ${test_name} DESTINATION test)
18141818
endif()
18151819
endforeach()
@@ -1824,6 +1828,7 @@ if(BUILD_TEST)
18241828
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
18251829
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
18261830
if(INSTALL_TEST)
1831+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
18271832
install(TARGETS ${test_name} DESTINATION test)
18281833
# Install PDB files for MSVC builds
18291834
if(MSVC AND BUILD_SHARED_LIBS)
@@ -1843,6 +1848,7 @@ if(BUILD_TEST)
18431848
target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
18441849
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
18451850
if(INSTALL_TEST)
1851+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
18461852
install(TARGETS ${test_name} DESTINATION test)
18471853
endif()
18481854
endforeach()

test/cpp/api/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ if(NOT MSVC)
7373
endif()
7474

7575
if(INSTALL_TEST)
76+
set_target_properties(test_api PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
7677
install(TARGETS test_api DESTINATION bin)
7778
# Install PDB files for MSVC builds
7879
if(MSVC AND BUILD_SHARED_LIBS)

test/cpp/c10d/CMakeLists.txt

+25-28
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,40 @@ if(USE_CUDA)
66
endif()
77

88
function(c10d_add_test test_src)
9+
set(prefix ARG)
10+
set(noValues)
11+
set(singleValues INSTALL_TEST)
12+
set(multiValues LINK_LIBRARIES)
13+
14+
include(CMakeParseArguments)
15+
cmake_parse_arguments(${prefix} "${noValues}" "${singleValues}" "${multiValues}" ${ARGN})
16+
917
get_filename_component(test_name ${test_src} NAME_WE)
1018
add_executable(${test_name} "${test_src}")
1119
target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${TORCH_SRC_DIR}/csrc/distributed>)
12-
target_link_libraries(${test_name} ${ARGN})
20+
target_link_libraries(${test_name} ${ARG_LINK_LIBRARIES})
1321
if(NOT WIN32)
1422
target_link_libraries(${test_name} pthread)
1523
endif()
1624
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
25+
26+
if(ARG_INSTALL_TEST)
27+
set_target_properties(${test_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
28+
install(TARGETS ${test_name} DESTINATION bin)
29+
endif()
1730
endfunction()
1831

19-
c10d_add_test(BackoffTest.cpp torch_cpu gtest_main)
20-
c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
21-
c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
22-
if(INSTALL_TEST)
23-
install(TARGETS FileStoreTest DESTINATION bin)
24-
install(TARGETS TCPStoreTest DESTINATION bin)
25-
endif()
32+
c10d_add_test(BackoffTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST OFF)
33+
c10d_add_test(FileStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
34+
c10d_add_test(TCPStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
2635
if(NOT WIN32)
27-
c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
28-
if(INSTALL_TEST)
29-
install(TARGETS HashStoreTest DESTINATION bin)
30-
endif()
36+
c10d_add_test(HashStoreTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST ${INSTALL_TEST})
3137
endif()
3238

3339
if(USE_CUDA)
3440
if(USE_GLOO AND USE_C10D_GLOO)
35-
c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
36-
if(INSTALL_TEST)
37-
install(TARGETS ProcessGroupGlooTest DESTINATION bin)
38-
endif()
39-
c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
41+
c10d_add_test(ProcessGroupGlooTest.cpp LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main INSTALL_TEST ${INSTALL_TEST})
42+
c10d_add_test(ProcessGroupGlooAsyncTest.cpp LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main INSTALL_TEST ${INSTALL_TEST})
4043
endif()
4144
if(USE_NCCL AND USE_C10D_NCCL)
4245
# NCCL is a private dependency of libtorch, but the tests include some
@@ -45,13 +48,11 @@ if(USE_CUDA)
4548
# a private dependency of the tests as well.
4649
c10d_add_test(
4750
ProcessGroupNCCLTest.cpp
48-
torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
51+
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_nccl INSTALL_TEST ${INSTALL_TEST})
4952
c10d_add_test(
5053
ProcessGroupNCCLErrorsTest.cpp
51-
torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
54+
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_nccl INSTALL_TEST ${INSTALL_TEST})
5255
if(INSTALL_TEST)
53-
install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
54-
install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
5556
install(TARGETS c10d_cuda_test DESTINATION lib)
5657
endif()
5758
endif()
@@ -62,15 +63,14 @@ if(USE_CUDA)
6263
# a private dependency of the tests as well.
6364
c10d_add_test(
6465
ProcessGroupUCCTest.cpp
65-
torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
66+
LINK_LIBRARIES torch_cpu c10d_cuda_test gtest_main __caffe2_ucc INSTALL_TEST ${INSTALL_TEST})
6667
if(INSTALL_TEST)
67-
install(TARGETS ProcessGroupUCCTest DESTINATION bin)
6868
install(TARGETS c10d_cuda_test DESTINATION lib)
6969
endif()
7070
endif()
7171
else()
7272
if(USE_GLOO AND USE_C10D_GLOO)
73-
c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
73+
c10d_add_test(ProcessGroupGlooTest.cpp LINK_LIBRARIES torch_cpu gtest_main INSTALL_TEST OFF)
7474
endif()
7575
endif()
7676

@@ -80,10 +80,7 @@ if(USE_MPI AND USE_C10D_MPI)
8080
# private headers of libtorch, which in turn include MPI. As a hacky
8181
# alternative to making MPI a public dependency of libtorch, we make it
8282
# a private dependency of the tests as well.
83-
c10d_add_test(ProcessGroupMPITest.cpp torch_cpu MPI::MPI_CXX)
84-
if(INSTALL_TEST)
85-
install(TARGETS ProcessGroupMPITest DESTINATION bin)
86-
endif()
83+
c10d_add_test(ProcessGroupMPITest.cpp LINK_LIBRARIES torch_cpu MPI::MPI_CXX INSTALL_TEST ${INSTALL_TEST})
8784
endif()
8885

8986
if(LINUX AND USE_GLOO AND USE_C10D_GLOO)

test/cpp/dist_autograd/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ if(USE_DISTRIBUTED AND NOT WIN32)
1414
endif()
1515

1616
if(INSTALL_TEST)
17+
set_target_properties(test_dist_autograd PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
1718
install(TARGETS test_dist_autograd DESTINATION bin)
1819
# Install PDB files for MSVC builds
1920
if(MSVC AND BUILD_SHARED_LIBS)

test/cpp/jit/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ elseif(USE_ROCM)
151151
endif()
152152

153153
if(INSTALL_TEST)
154+
set_target_properties(test_jit PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
154155
install(TARGETS test_jit DESTINATION bin)
155156
# Install PDB files for MSVC builds
156157
if(MSVC AND BUILD_SHARED_LIBS)

test/cpp/lazy/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ elseif(USE_ROCM)
4444
endif()
4545

4646
if(INSTALL_TEST)
47+
set_target_properties(test_lazy PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
4748
install(TARGETS test_lazy DESTINATION bin)
4849
# Install PDB files for MSVC builds
4950
if(MSVC AND BUILD_SHARED_LIBS)

test/cpp/rpc/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ if(USE_CUDA)
3737
endif()
3838

3939
if(INSTALL_TEST)
40+
set_target_properties(test_cpp_rpc PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
4041
install(TARGETS test_cpp_rpc DESTINATION bin)
4142
# Install PDB files for MSVC builds
4243
if(MSVC AND BUILD_SHARED_LIBS)

test/cpp/tensorexpr/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ elseif(USE_ROCM)
7171
endif()
7272

7373
if(INSTALL_TEST)
74+
set_target_properties(test_tensorexpr PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
7475
install(TARGETS test_tensorexpr DESTINATION bin)
76+
set_target_properties(tutorial_tensorexpr PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
7577
install(TARGETS tutorial_tensorexpr DESTINATION bin)
7678
# Install PDB files for MSVC builds
7779
if(MSVC AND BUILD_SHARED_LIBS)

test/edge/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
7373
)
7474
endif()
7575
if(INSTALL_TEST)
76+
set_target_properties(test_edge_op_registration PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${_rpath_portable_origin}/../lib")
7677
install(TARGETS test_edge_op_registration DESTINATION bin)
7778
endif()

0 commit comments

Comments
 (0)