Skip to content

Commit 5feed58

Browse files
authored
[Python] Complete Python packaging with scikit-build-core (#18251)
Following #18239, this PR fixes a few issues we ran into during testing the packaging flow through scikit-build-core.
1 parent e3efec2 commit 5feed58

File tree

3 files changed

+33
-52
lines changed

3 files changed

+33
-52
lines changed

CMakeLists.txt

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ tvm_option(USE_MRVL "Build with MRVL TVM support" OFF)
122122
tvm_option(USE_NVSHMEM "Build with NVSHMEM support" OFF)
123123

124124
# Python package options
125-
tvm_option(TVM_BUILD_PYTHON_MODULE "Build Python module with scikit-build-core" ON)
125+
tvm_option(TVM_BUILD_PYTHON_MODULE "Build Python module with scikit-build-core" OFF)
126126

127127
# include directories
128128
include_directories(${CMAKE_INCLUDE_PATH})
@@ -826,50 +826,50 @@ endif()
826826
if(TVM_BUILD_PYTHON_MODULE)
827827
message(STATUS "Configuring Python package installation")
828828

829-
# Install Python source files
830-
install(
831-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/python/tvm"
832-
DESTINATION "."
833-
FILES_MATCHING
834-
PATTERN "*.py"
835-
PATTERN "*.pyi"
836-
PATTERN "__pycache__" EXCLUDE
837-
PATTERN "*.pyc" EXCLUDE
838-
)
829+
# Set RPATH for tvm and tvm_runtime to find other libraries relatively
830+
if(APPLE)
831+
# macOS uses @loader_path
832+
set_target_properties(tvm PROPERTIES INSTALL_RPATH "@loader_path")
833+
set_target_properties(tvm_runtime PROPERTIES INSTALL_RPATH "@loader_path")
834+
elseif(LINUX)
835+
# Linux uses $ORIGIN
836+
set_target_properties(tvm PROPERTIES INSTALL_RPATH "\$ORIGIN")
837+
set_target_properties(tvm_runtime PROPERTIES INSTALL_RPATH "\$ORIGIN")
838+
endif()
839839

840840
# Install compiled shared libraries
841-
install(TARGETS tvm DESTINATION "tvm")
842-
install(TARGETS tvm_runtime DESTINATION "tvm")
841+
install(TARGETS tvm DESTINATION ".")
842+
install(TARGETS tvm_runtime DESTINATION ".")
843843

844844
# Install third-party compiled dependencies
845845
if(TARGET fpA_intB_gemm)
846-
install(TARGETS fpA_intB_gemm DESTINATION "tvm")
846+
install(TARGETS fpA_intB_gemm DESTINATION ".")
847847
endif()
848848
if(TARGET flash_attn)
849-
install(TARGETS flash_attn DESTINATION "tvm")
849+
install(TARGETS flash_attn DESTINATION ".")
850850
endif()
851851

852852
# Install minimal header files needed by Python extensions
853853
install(
854-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/tvm/runtime"
855-
DESTINATION "tvm/include/tvm/runtime"
854+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/tvm/runtime/"
855+
DESTINATION "include/tvm/runtime/"
856856
FILES_MATCHING
857857
PATTERN "*.h"
858858
)
859859

860860
# Install minimal CMake configuration
861861
install(
862-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils"
863-
DESTINATION "tvm/cmake/utils"
862+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils/"
863+
DESTINATION "cmake/utils/"
864864
FILES_MATCHING
865865
PATTERN "*.cmake"
866866
)
867867

868868
# Install CUTLASS headers only if available
869869
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include")
870870
install(
871-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include"
872-
DESTINATION "tvm/3rdparty/cutlass"
871+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include/"
872+
DESTINATION "3rdparty/cutlass/include/"
873873
FILES_MATCHING
874874
PATTERN "*.h"
875875
PATTERN "*.hpp"
@@ -878,31 +878,31 @@ if(TVM_BUILD_PYTHON_MODULE)
878878

879879
# Install minimal source files
880880
install(
881-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/runtime"
882-
DESTINATION "tvm/src/runtime"
881+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/runtime/"
882+
DESTINATION "src/runtime/"
883883
FILES_MATCHING
884884
PATTERN "*.cc"
885885
PATTERN "*.h"
886886
)
887887

888888
# Install essential configuration files
889889
install(
890-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/configs"
891-
DESTINATION "tvm/configs"
890+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/configs/"
891+
DESTINATION "configs/"
892892
)
893893

894894
# Install licenses (required for distribution)
895895
install(
896-
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/licenses"
897-
DESTINATION "tvm/licenses"
896+
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/licenses/"
897+
DESTINATION "licenses/"
898898
)
899899

900900
# Install essential metadata files
901901
install(FILES
902902
"${CMAKE_CURRENT_SOURCE_DIR}/README.md"
903903
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
904904
"${CMAKE_CURRENT_SOURCE_DIR}/NOTICE"
905-
DESTINATION "tvm"
905+
DESTINATION "."
906906
)
907907

908908
message(STATUS "Python package installation configured")

ffi/CMakeLists.txt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,16 +221,10 @@ if (TVM_FFI_BUILD_PYTHON_MODULE)
221221
# Set RPATH for tvm_ffi_cython to find tvm_ffi_shared.so relatively
222222
if(APPLE)
223223
# macOS uses @loader_path
224-
set_target_properties(tvm_ffi_cython PROPERTIES
225-
INSTALL_RPATH "@loader_path/lib"
226-
BUILD_WITH_INSTALL_RPATH ON
227-
)
224+
set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH "@loader_path/lib")
228225
elseif(LINUX)
229226
# Linux uses $ORIGIN
230-
set_target_properties(tvm_ffi_cython PROPERTIES
231-
INSTALL_RPATH "\$ORIGIN/lib"
232-
BUILD_WITH_INSTALL_RPATH ON
233-
)
227+
set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
234228
endif()
235229
install(TARGETS tvm_ffi_cython DESTINATION .)
236230

pyproject.toml

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ classifiers = [
4747
]
4848
# Core dependencies - these are the minimum required for basic TVM functionality
4949
dependencies = [
50+
"apache-tvm-ffi",
5051
"cloudpickle",
5152
"ml_dtypes",
5253
"numpy",
@@ -129,25 +130,11 @@ wheel.py-api = "py3"
129130
build-dir = "build"
130131

131132
# CMake configuration - ensure proper installation paths
132-
cmake.args = [
133-
"-DTVM_BUILD_PYTHON_MODULE=ON",
134-
"-DTVM_FFI_BUILD_PYTHON_MODULE=OFF",
135-
"-DTVM_USE_CUTLASS=OFF",
136-
"-DTVM_USE_FLASH_ATTN=OFF",
137-
"-DTVM_USE_LLVM=OFF",
138-
"-DTVM_USE_CUDA=OFF",
139-
"-DTVM_USE_OPENCL=OFF",
140-
"-DTVM_USE_VULKAN=OFF",
141-
"-DTVM_USE_METAL=OFF",
142-
"-DTVM_USE_OPENGL=OFF",
143-
"-DTVM_USE_RPC=OFF",
144-
"-DTVM_USE_GRAPH_EXECUTOR=OFF",
145-
"-DTVM_USE_PROFILER=OFF",
146-
"-DTVM_USE_UTILS=OFF",
147-
]
133+
cmake.args = ["-DTVM_BUILD_PYTHON_MODULE=ON"]
148134

149135
# Wheel configuration
150136
wheel.packages = ["python/tvm"]
137+
wheel.install-dir = "tvm"
151138

152139
# Source distribution configuration
153140
sdist.include = [

0 commit comments

Comments
 (0)