3737ROOT_DIR = os .path .abspath (os .path .dirname (__file__ ))
3838PLATFORM = os .getenv ("PLATFORM" )
3939
40+ ENABLE_SPARSE = os .getenv ("ENABLE_SPARSE" )
41+
42+
43+ def _enable_sparse () -> bool :
44+ return ENABLE_SPARSE is not None and ENABLE_SPARSE .lower () == "true"
45+
4046
4147def _is_cuda () -> bool :
4248 return PLATFORM == "cuda"
@@ -97,6 +103,9 @@ def build_cmake(self, ext: CMakeExtension):
97103 "Please ensure either CUDA/MUSA or NPU is available."
98104 )
99105
106+ if _enable_sparse ():
107+ cmake_args .append ("-DBUILD_UCM_SPARSE=ON" )
108+
100109 cmake_args .append (ext .sourcedir )
101110
102111 print (f"[INFO] Building { ext .name } module with CMake" )
@@ -111,9 +120,18 @@ def build_cmake(self, ext: CMakeExtension):
111120 )
112121
113122
114- def _get_package_data_with_so ():
115- """Automatically discover all packages and include .so files ."""
123+ def _get_packages ():
124+ """Discover Python packages, optionally filtering out sparse-related ones ."""
116125 packages = find_packages ()
126+ if not _enable_sparse ():
127+ packages = [pkg for pkg in packages if not pkg .startswith ("ucm.sparse" )]
128+ return packages
129+
130+
131+ def _get_package_data_with_so (packages = None ):
132+ """Automatically discover all packages and include .so files."""
133+ if packages is None :
134+ packages = _get_packages ()
117135 package_data = {}
118136
119137 for package in packages :
@@ -133,15 +151,17 @@ def _get_package_data_with_so():
133151ext_modules = []
134152ext_modules .append (CMakeExtension (name = "ucm" , sourcedir = ROOT_DIR ))
135153
154+ packages = _get_packages ()
155+
136156setup (
137157 name = "uc-manager" ,
138158 version = "0.1.0" ,
139159 description = "Unified Cache Management" ,
140160 author = "Unified Cache Team" ,
141- packages = find_packages () ,
161+ packages = packages ,
142162 python_requires = ">=3.10" ,
143163 ext_modules = ext_modules ,
144164 cmdclass = {"build_ext" : CMakeBuild },
145- package_data = _get_package_data_with_so (),
165+ package_data = _get_package_data_with_so (packages ),
146166 zip_safe = False ,
147167)
0 commit comments