mirror of
https://github.com/vllm-project/vllm.git
synced 2025-12-06 15:04:47 +08:00
[CI/Build]: make it possible to build with a free-threaded interpreter (#29241)
Signed-off-by: Ralf Gommers <ralf.gommers@gmail.com> Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>
This commit is contained in:
@@ -495,7 +495,13 @@ function (define_extension_target MOD_NAME)
|
|||||||
set(SOABI_KEYWORD "")
|
set(SOABI_KEYWORD "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ARG_USE_SABI)
|
run_python(IS_FREETHREADED_PYTHON
|
||||||
|
"import sysconfig; print(1 if sysconfig.get_config_var(\"Py_GIL_DISABLED\") else 0)"
|
||||||
|
"Failed to determine whether interpreter is free-threaded")
|
||||||
|
|
||||||
|
# Free-threaded Python doesn't yet support the stable ABI (see PEP 803/809),
|
||||||
|
# so avoid using the stable ABI under free-threading only.
|
||||||
|
if (ARG_USE_SABI AND NOT IS_FREETHREADED_PYTHON)
|
||||||
Python_add_library(${MOD_NAME} MODULE USE_SABI ${ARG_USE_SABI} ${SOABI_KEYWORD} "${ARG_SOURCES}")
|
Python_add_library(${MOD_NAME} MODULE USE_SABI ${ARG_USE_SABI} ${SOABI_KEYWORD} "${ARG_SOURCES}")
|
||||||
else()
|
else()
|
||||||
Python_add_library(${MOD_NAME} MODULE ${SOABI_KEYWORD} "${ARG_SOURCES}")
|
Python_add_library(${MOD_NAME} MODULE ${SOABI_KEYWORD} "${ARG_SOURCES}")
|
||||||
|
|||||||
7
setup.py
7
setup.py
@@ -10,6 +10,7 @@ import re
|
|||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import sysconfig
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import which
|
from shutil import which
|
||||||
|
|
||||||
@@ -74,9 +75,13 @@ def is_ninja_available() -> bool:
|
|||||||
return which("ninja") is not None
|
return which("ninja") is not None
|
||||||
|
|
||||||
|
|
||||||
|
def is_freethreaded():
|
||||||
|
return bool(sysconfig.get_config_var("Py_GIL_DISABLED"))
|
||||||
|
|
||||||
|
|
||||||
class CMakeExtension(Extension):
|
class CMakeExtension(Extension):
|
||||||
def __init__(self, name: str, cmake_lists_dir: str = ".", **kwa) -> None:
|
def __init__(self, name: str, cmake_lists_dir: str = ".", **kwa) -> None:
|
||||||
super().__init__(name, sources=[], py_limited_api=True, **kwa)
|
super().__init__(name, sources=[], py_limited_api=not is_freethreaded(), **kwa)
|
||||||
self.cmake_lists_dir = os.path.abspath(cmake_lists_dir)
|
self.cmake_lists_dir = os.path.abspath(cmake_lists_dir)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user