This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/main by this push:
     new 5feed58f52 [Python] Complete Python packaging with scikit-build-core 
(#18251)
5feed58f52 is described below

commit 5feed58f52157061fbfccaaf9df6c47da136e1d3
Author: Ruihang Lai <[email protected]>
AuthorDate: Fri Aug 29 14:51:54 2025 -0400

    [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.
---
 CMakeLists.txt     | 56 +++++++++++++++++++++++++++---------------------------
 ffi/CMakeLists.txt | 10 ++--------
 pyproject.toml     | 19 +++---------------
 3 files changed, 33 insertions(+), 52 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c27c1bd73..b05e5e1657 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -122,7 +122,7 @@ tvm_option(USE_MRVL "Build with MRVL TVM support" OFF)
 tvm_option(USE_NVSHMEM "Build with NVSHMEM support" OFF)
 
 # Python package options
-tvm_option(TVM_BUILD_PYTHON_MODULE "Build Python module with 
scikit-build-core" ON)
+tvm_option(TVM_BUILD_PYTHON_MODULE "Build Python module with 
scikit-build-core" OFF)
 
 # include directories
 include_directories(${CMAKE_INCLUDE_PATH})
@@ -826,41 +826,41 @@ endif()
 if(TVM_BUILD_PYTHON_MODULE)
   message(STATUS "Configuring Python package installation")
 
-  # Install Python source files
-  install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/python/tvm"
-    DESTINATION "."
-    FILES_MATCHING
-    PATTERN "*.py"
-    PATTERN "*.pyi"
-    PATTERN "__pycache__" EXCLUDE
-    PATTERN "*.pyc" EXCLUDE
-  )
+  # Set RPATH for tvm and tvm_runtime to find other libraries relatively
+  if(APPLE)
+    # macOS uses @loader_path
+    set_target_properties(tvm PROPERTIES INSTALL_RPATH "@loader_path")
+    set_target_properties(tvm_runtime PROPERTIES INSTALL_RPATH "@loader_path")
+  elseif(LINUX)
+    # Linux uses $ORIGIN
+    set_target_properties(tvm PROPERTIES INSTALL_RPATH "\$ORIGIN")
+    set_target_properties(tvm_runtime PROPERTIES INSTALL_RPATH "\$ORIGIN")
+  endif()
 
   # Install compiled shared libraries
-  install(TARGETS tvm DESTINATION "tvm")
-  install(TARGETS tvm_runtime DESTINATION "tvm")
+  install(TARGETS tvm DESTINATION ".")
+  install(TARGETS tvm_runtime DESTINATION ".")
 
   # Install third-party compiled dependencies
   if(TARGET fpA_intB_gemm)
-    install(TARGETS fpA_intB_gemm DESTINATION "tvm")
+    install(TARGETS fpA_intB_gemm DESTINATION ".")
   endif()
   if(TARGET flash_attn)
-    install(TARGETS flash_attn DESTINATION "tvm")
+    install(TARGETS flash_attn DESTINATION ".")
   endif()
 
   # Install minimal header files needed by Python extensions
   install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/tvm/runtime"
-    DESTINATION "tvm/include/tvm/runtime"
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/tvm/runtime/"
+    DESTINATION "include/tvm/runtime/"
     FILES_MATCHING
     PATTERN "*.h"
   )
 
   # Install minimal CMake configuration
   install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils"
-    DESTINATION "tvm/cmake/utils"
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils/"
+    DESTINATION "cmake/utils/"
     FILES_MATCHING
     PATTERN "*.cmake"
   )
@@ -868,8 +868,8 @@ if(TVM_BUILD_PYTHON_MODULE)
   # Install CUTLASS headers only if available
   if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include")
     install(
-      DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include"
-      DESTINATION "tvm/3rdparty/cutlass"
+      DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cutlass/include/"
+      DESTINATION "3rdparty/cutlass/include/"
       FILES_MATCHING
       PATTERN "*.h"
       PATTERN "*.hpp"
@@ -878,8 +878,8 @@ if(TVM_BUILD_PYTHON_MODULE)
 
   # Install minimal source files
   install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/runtime"
-    DESTINATION "tvm/src/runtime"
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/runtime/"
+    DESTINATION "src/runtime/"
     FILES_MATCHING
     PATTERN "*.cc"
     PATTERN "*.h"
@@ -887,14 +887,14 @@ if(TVM_BUILD_PYTHON_MODULE)
 
   # Install essential configuration files
   install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/configs"
-    DESTINATION "tvm/configs"
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/configs/"
+    DESTINATION "configs/"
   )
 
   # Install licenses (required for distribution)
   install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/licenses"
-    DESTINATION "tvm/licenses"
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/licenses/"
+    DESTINATION "licenses/"
   )
 
   # Install essential metadata files
@@ -902,7 +902,7 @@ if(TVM_BUILD_PYTHON_MODULE)
     "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
     "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
     "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE"
-    DESTINATION "tvm"
+    DESTINATION "."
   )
 
   message(STATUS "Python package installation configured")
diff --git a/ffi/CMakeLists.txt b/ffi/CMakeLists.txt
index 0690c926e0..f40313636a 100644
--- a/ffi/CMakeLists.txt
+++ b/ffi/CMakeLists.txt
@@ -221,16 +221,10 @@ if (TVM_FFI_BUILD_PYTHON_MODULE)
   # Set RPATH for tvm_ffi_cython to find tvm_ffi_shared.so relatively
   if(APPLE)
     # macOS uses @loader_path
-    set_target_properties(tvm_ffi_cython PROPERTIES
-      INSTALL_RPATH "@loader_path/lib"
-      BUILD_WITH_INSTALL_RPATH ON
-    )
+    set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH 
"@loader_path/lib")
   elseif(LINUX)
       # Linux uses $ORIGIN
-    set_target_properties(tvm_ffi_cython PROPERTIES
-      INSTALL_RPATH "\$ORIGIN/lib"
-      BUILD_WITH_INSTALL_RPATH ON
-    )
+    set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH 
"\$ORIGIN/lib")
   endif()
   install(TARGETS tvm_ffi_cython DESTINATION .)
 
diff --git a/pyproject.toml b/pyproject.toml
index 1634910e14..43be53b8cb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -47,6 +47,7 @@ classifiers = [
 ]
 # Core dependencies - these are the minimum required for basic TVM 
functionality
 dependencies = [
+    "apache-tvm-ffi",
     "cloudpickle",
     "ml_dtypes",
     "numpy",
@@ -129,25 +130,11 @@ wheel.py-api = "py3"
 build-dir = "build"
 
 # CMake configuration - ensure proper installation paths
-cmake.args = [
-    "-DTVM_BUILD_PYTHON_MODULE=ON",
-    "-DTVM_FFI_BUILD_PYTHON_MODULE=OFF",
-    "-DTVM_USE_CUTLASS=OFF",
-    "-DTVM_USE_FLASH_ATTN=OFF",
-    "-DTVM_USE_LLVM=OFF",
-    "-DTVM_USE_CUDA=OFF",
-    "-DTVM_USE_OPENCL=OFF",
-    "-DTVM_USE_VULKAN=OFF",
-    "-DTVM_USE_METAL=OFF",
-    "-DTVM_USE_OPENGL=OFF",
-    "-DTVM_USE_RPC=OFF",
-    "-DTVM_USE_GRAPH_EXECUTOR=OFF",
-    "-DTVM_USE_PROFILER=OFF",
-    "-DTVM_USE_UTILS=OFF",
-]
+cmake.args = ["-DTVM_BUILD_PYTHON_MODULE=ON"]
 
 # Wheel configuration
 wheel.packages = ["python/tvm"]
+wheel.install-dir = "tvm"
 
 # Source distribution configuration
 sdist.include = [

Reply via email to