mirror of https://github.com/microsoft/vcpkg.git
[tensorpipe] create a new port (#16472)
* [tensorpipe] create a new port * [tensorpipe] create patch for libuv * [libnop] create a new port * [libnop] update baseline and port SHA * [tensorpipe] fix header/target install * [tensorpipe] remove support of Windows/UWP * [tensorpipe] update baseline and port SHA * Update ports/tensorpipe/portfile.cmake Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> * Update ports/tensorpipe/portfile.cmake Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> * [tensorpipe] support 'test' feature for Linux * it will be helpful to check output binaries are valid * update code snapshot(2021/03/02) and port SHA * [tensorpipe] fix build failures in Linux * TC for 'ibv' failes * link with CMAKE_DL_LIBS for <dlfcn.h> * [tensorpipe] apply PR feedback * [tensorpipe] update version-date and patches * [tensorpipe] FATAL_ERROR if feature requires Linux * [tensorpipe] reduce features and code base * simplify features * fix `pybind11` build failures * updates source code base and CMake export file names * use GNUInstallDirs variable * [tensorpipe] update baseline * [tensorpipe] update support * use more correct "support" exporession * [tensorpipe] fix Linux/CUDA test options * [tensorpipe] fix corrupted patch * [tensorpipe] fix wrong support expression Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
This commit is contained in:
parent
e120407c0f
commit
c76ec6f7f7
|
|
@ -0,0 +1,71 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 640054e..18de9ea 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -23,6 +23,6 @@ include(MiscCheck)
|
||||
|
||||
add_subdirectory(tensorpipe)
|
||||
|
||||
-install(EXPORT TensorpipeTargets
|
||||
- DESTINATION share/cmake/Tensorpipe
|
||||
- FILE TensorpipeTargets.cmake)
|
||||
+install(EXPORT tensorpipeTargets
|
||||
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME} # share/tensorpipe
|
||||
+ FILE tensorpipeTargets.cmake)
|
||||
diff --git a/tensorpipe/CMakeLists.txt b/tensorpipe/CMakeLists.txt
|
||||
index d8624b4..dce5c6f 100644
|
||||
--- a/tensorpipe/CMakeLists.txt
|
||||
+++ b/tensorpipe/CMakeLists.txt
|
||||
@@ -168,8 +168,9 @@ set(TP_PUBLIC_HEADERS ${TP_PUBLIC_HEADERS}
|
||||
transport/uv/error.h
|
||||
transport/uv/factory.h
|
||||
transport/uv/utility.h)
|
||||
-find_package(uv REQUIRED)
|
||||
-target_link_libraries(tensorpipe PRIVATE uv::uv)
|
||||
+# `libuv` in vcpkg
|
||||
+find_package(unofficial-libuv CONFIG REQUIRED)
|
||||
+target_link_libraries(tensorpipe PUBLIC unofficial::libuv::libuv ${CMAKE_DL_LIBS})
|
||||
|
||||
### shm
|
||||
|
||||
@@ -233,11 +234,14 @@ configure_file(config.h.in config.h)
|
||||
|
||||
## Libnop
|
||||
|
||||
-# We should keep libnop headers private as they should not be exposed to downstream users,
|
||||
-# but they're currently transitively included by tensorpipe/transport/connection.h (which
|
||||
-# is still unclear whether it should be a public or private header).
|
||||
-target_include_directories(tensorpipe PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/third_party/libnop/include>)
|
||||
-
|
||||
+# `libnop` in vcpkg
|
||||
+find_path(LIBNOP_INCLUDE_DIRS "nop/serializer.h")
|
||||
+if(LIBNOP_INCLUDE_DIRS-NOTFOUND)
|
||||
+ message(FATAL_ERROR "Failed to find header of the 'libnop' package from vcpkg.")
|
||||
+else()
|
||||
+ message(STATUS "Using 'libnop': ${LIBNOP_INCLUDE_DIRS}")
|
||||
+endif()
|
||||
+target_include_directories(tensorpipe PUBLIC $<BUILD_INTERFACE:${LIBNOP_INCLUDE_DIRS}>)
|
||||
|
||||
## Python bindings
|
||||
|
||||
@@ -262,10 +266,17 @@ endif()
|
||||
|
||||
## Install
|
||||
|
||||
+install(DIRECTORY channel common core transport util
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tensorpipe
|
||||
+ FILES_MATCHING PATTERN "*.h")
|
||||
+install(FILES tensorpipe.h
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tensorpipe)
|
||||
+
|
||||
install(TARGETS tensorpipe
|
||||
- EXPORT TensorpipeTargets
|
||||
- LIBRARY DESTINATION ${TP_INSTALL_LIBDIR}
|
||||
- ARCHIVE DESTINATION ${TP_INSTALL_LIBDIR})
|
||||
+ EXPORT tensorpipeTargets
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
foreach(_header_file ${TP_PUBLIC_HEADERS})
|
||||
get_filename_component(_TP_HEADER_SUBDIR "${_header_file}" DIRECTORY)
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
vcpkg_fail_port_install(ON_TARGET "windows" "uwp")
|
||||
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO pytorch/tensorpipe
|
||||
REF c5a21994bc766659f7f85edb75478e13f429f46c
|
||||
SHA512 05a3989286610edea2f0fcfb9197c563e947f0386f2b52110dd060053d68b62477fcd4778a45a3030b9a53b6ceccead91e4dd96c9f0153023e97414459fbd8dd
|
||||
PATCHES
|
||||
fix-cmakelists.patch
|
||||
support-test.patch
|
||||
support-pybind11.patch
|
||||
)
|
||||
|
||||
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
||||
FEATURES
|
||||
cuda TP_USE_CUDA
|
||||
cuda TP_ENABLE_CUDA_IPC
|
||||
pybind11 TP_BUILD_PYTHON
|
||||
test TP_BUILD_TESTING
|
||||
)
|
||||
|
||||
if("pybind11" IN_LIST FEATURES)
|
||||
vcpkg_find_acquire_program(PYTHON3)
|
||||
list(APPEND FEATURE_OPTIONS -DPYTHON_EXECUTABLE=${PYTHON3})
|
||||
endif()
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
OPTIONS
|
||||
${FEATURE_OPTIONS}
|
||||
-DTP_ENABLE_SHM=${VCPKG_TARGET_IS_LINUX}
|
||||
-DTP_ENABLE_IBV=OFF
|
||||
-DTP_ENABLE_CMA=OFF
|
||||
-DTP_BUILD_LIBUV=OFF # will use libuv package
|
||||
-DTP_ENABLE_CUDA_GDR=OFF
|
||||
)
|
||||
vcpkg_cmake_install()
|
||||
vcpkg_copy_pdbs()
|
||||
vcpkg_cmake_config_fixup()
|
||||
|
||||
file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include
|
||||
${CURRENT_PACKAGES_DIR}/debug/share
|
||||
)
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
diff --git a/tensorpipe/python/CMakeLists.txt b/tensorpipe/python/CMakeLists.txt
|
||||
index 41958dd..02562b4 100644
|
||||
--- a/tensorpipe/python/CMakeLists.txt
|
||||
+++ b/tensorpipe/python/CMakeLists.txt
|
||||
@@ -4,13 +4,17 @@
|
||||
# This source code is licensed under the BSD-style license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
-if(NOT (COMMAND pybind11_add_module))
|
||||
- add_subdirectory(
|
||||
- ${PROJECT_SOURCE_DIR}/third_party/pybind11
|
||||
- ${PROJECT_BINARY_DIR}/third_party/pybind11
|
||||
- EXCLUDE_FROM_ALL)
|
||||
-endif()
|
||||
+find_package(pybind11 CONFIG REQUIRED)
|
||||
|
||||
-set(PYBIND11_CPP_STANDARD -std=c++14)
|
||||
pybind11_add_module(pytensorpipe tensorpipe.cc)
|
||||
-target_link_libraries(pytensorpipe PRIVATE tensorpipe)
|
||||
+set_target_properties(pytensorpipe
|
||||
+PROPERTIES
|
||||
+ CXX_STANDARD 14
|
||||
+)
|
||||
+target_link_libraries(pytensorpipe PRIVATE tensorpipe pybind11::module)
|
||||
+
|
||||
+install(TARGETS pytensorpipe
|
||||
+ EXPORT tensorpipeTargets
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
diff --git a/tensorpipe/test/CMakeLists.txt b/tensorpipe/test/CMakeLists.txt
|
||||
index c0320aa..1414bdd 100644
|
||||
--- a/tensorpipe/test/CMakeLists.txt
|
||||
+++ b/tensorpipe/test/CMakeLists.txt
|
||||
@@ -86,11 +86,8 @@ if(TP_USE_CUDA)
|
||||
endif()
|
||||
|
||||
|
||||
-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/googletest
|
||||
- ${PROJECT_BINARY_DIR}/third_party/googletest)
|
||||
+find_package(GTest CONFIG REQUIRED)
|
||||
|
||||
target_link_libraries(tensorpipe_test PRIVATE
|
||||
tensorpipe
|
||||
- uv::uv
|
||||
- gmock
|
||||
- gtest_main)
|
||||
+ unofficial::libuv::libuv GTest::gmock GTest::gtest_main)
|
||||
|
||||
diff --git a/tensorpipe/test/CMakeLists.txt b/tensorpipe/test/CMakeLists.txt
|
||||
index fecc731..031e40d 100644
|
||||
--- a/tensorpipe/test/CMakeLists.txt
|
||||
+++ b/tensorpipe/test/CMakeLists.txt
|
||||
@@ -80,10 +80,11 @@ if(TP_USE_CUDA)
|
||||
channel/cuda_ipc/cuda_ipc_test.cc
|
||||
)
|
||||
endif()
|
||||
-
|
||||
- target_sources(tensorpipe_test PRIVATE
|
||||
- channel/cuda_gdr/cuda_gdr_test.cc
|
||||
- )
|
||||
+ if(TP_ENABLE_CUDA_GDR)
|
||||
+ target_sources(tensorpipe_test PRIVATE
|
||||
+ channel/cuda_gdr/cuda_gdr_test.cc
|
||||
+ )
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"name": "tensorpipe",
|
||||
"version-date": "2021-04-26",
|
||||
"description": "A tensor-aware point-to-point communication primitive for machine learning",
|
||||
"homepage": "https://github.com/pytorch/tensorpipe",
|
||||
"supports": "linux | osx",
|
||||
"dependencies": [
|
||||
"libnop",
|
||||
"libuv",
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake-config",
|
||||
"host": true
|
||||
}
|
||||
],
|
||||
"features": {
|
||||
"cuda": {
|
||||
"description": "Enable support for CUDA tensors, CUDA IPC channel",
|
||||
"dependencies": [
|
||||
"cuda"
|
||||
]
|
||||
},
|
||||
"pybind11": {
|
||||
"description": "Build Python bindings",
|
||||
"dependencies": [
|
||||
"pybind11"
|
||||
]
|
||||
},
|
||||
"test": {
|
||||
"description": "Build with Google.Test",
|
||||
"dependencies": [
|
||||
"gtest"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5964,6 +5964,10 @@
|
|||
"baseline": "2.4.1",
|
||||
"port-version": 1
|
||||
},
|
||||
"tensorpipe": {
|
||||
"baseline": "2021-04-26",
|
||||
"port-version": 0
|
||||
},
|
||||
"termcolor": {
|
||||
"baseline": "2.0.0",
|
||||
"port-version": 0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "ab0e7e22e13c4ebe8c308008aaabb803dca57cdc",
|
||||
"version-date": "2021-04-26",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue