@@ -51,9 +51,48 @@ dependencies = [
5151dynamic = [" version" ]
5252
5353[project .optional-dependencies ]
54- dev = {file = " requirements_dev.txt" }
55- spatial-io = {file = " requirements_spatial.txt" }
56- all = {file = [" requirements_dev.txt" , " requirements_spatial.txt" ]}
54+ # Development dependencies
55+ dev = [
56+ " black" ,
57+ " dask" ,
58+ " pytest" ,
59+ " pytest-cov" ,
60+ " ruff" ,
61+ " sparse" ,
62+ " typeguard==4.4.2" ,
63+ " types-setuptools" ,
64+ " more-itertools" ,
65+ " hypothesis" ,
66+ " deepdiff" ,
67+ ]
68+ # Spatial I/O dependencies
69+ spatial-io = [
70+ " geopandas" ,
71+ " tifffile" ,
72+ " pillow" ,
73+ " spatialdata>=0.2.5" ,
74+ " xarray" ,
75+ " dask" ,
76+ ]
77+ # All optional dependencies (dev + spatial-io)
78+ all = [
79+ " black" ,
80+ " dask" ,
81+ " pytest" ,
82+ " pytest-cov" ,
83+ " ruff" ,
84+ " sparse" ,
85+ " typeguard==4.4.2" ,
86+ " types-setuptools" ,
87+ " more-itertools" ,
88+ " hypothesis" ,
89+ " deepdiff" ,
90+ " geopandas" ,
91+ " tifffile" ,
92+ " pillow" ,
93+ " spatialdata>=0.2.5" ,
94+ " xarray" ,
95+ ]
5796
5897[tool .scikit-build ]
5998# CMake configuration
@@ -64,6 +103,8 @@ build-dir = "build"
64103[tool .scikit-build .cmake ]
65104# CMake version requirement (use version instead of minimum-version for scikit-build-core >= 0.8)
66105version = " >=3.21,<4" # CMake 4 builds are broken on ARM Linux: https://github.com/single-cell-data/TileDB-SOMA/issues/3890
106+ # scikit-build-core automatically picks up CMAKE_TOOLCHAIN_FILE from environment
107+ # We set it in before-build hooks via setup_build_env.sh
67108
68109[tool .scikit-build .cmake .define ]
69110# CMake build type - Release for production builds
@@ -99,11 +140,19 @@ manylinux-x86_64-image = "manylinux_2_28"
99140manylinux-aarch64-image = " manylinux_2_28"
100141
101142# Install system dependencies and bootstrap vcpkg
143+ # Note: vcpkg is checked out inside the container since cibuildwheel only copies apis/python/
144+ # {project} is the temporary directory where cibuildwheel copies the package
102145before-all = [
103146 " yum install -y git ninja-build perl-IPC-Cmd zip autoconf automake libtool pkg-config" ,
104- " bash {project}/apis/python/scripts/setup_build_env.sh" ,
147+ " git clone --depth 1 https://github.com/microsoft/vcpkg.git {project}/../vcpkg" ,
148+ " {project}/../vcpkg/bootstrap-vcpkg.sh" ,
105149]
106150
151+ # Set up vcpkg environment before each build
152+ # This runs for each Python version and sets environment variables that persist to the build
153+ # We use eval to execute export commands from the script so they persist to the build step
154+ before-build = " export VCPKG_ROOT={project}/../vcpkg && {project}/apis/python/scripts/setup_build_env.sh"
155+
107156# Environment variables for vcpkg build
108157environment = {VCPKG_FORCE_SYSTEM_BINARIES = " 1" }
109158
@@ -112,10 +161,13 @@ environment = {VCPKG_FORCE_SYSTEM_BINARIES = "1"}
112161environment = {MACOSX_DEPLOYMENT_TARGET = " 13.3" }
113162
114163# Install system dependencies and bootstrap vcpkg
164+ # Note: vcpkg is checked out inside the container since cibuildwheel only copies apis/python/
165+ # {project} is the temporary directory where cibuildwheel copies the package
115166before-all = [
116167 " brew update || true" ,
117168 " brew install automake llvm ninja git || true" ,
118- " bash {project}/apis/python/scripts/setup_build_env.sh" ,
169+ " git clone --depth 1 https://github.com/microsoft/vcpkg.git {project}/../vcpkg" ,
170+ " {project}/../vcpkg/bootstrap-vcpkg.sh" ,
119171]
120172
121173[tool .cibuildwheel .windows ]
@@ -136,7 +188,8 @@ before-all = [
136188# This allows setuptools_scm to find git tags from the repository root
137189root = " ../.."
138190# Write version to a file for CMake to read and for runtime access
139- # When root is set, write_to is relative to the root (repository root)
191+ # When root is set, write_to is resolved relative to the root directory
192+ # So we need to specify the full path from the root
140193write_to = " apis/python/src/tiledbsoma/_version.py"
141194# Use git to find version (default behavior)
142195# This will work with tags like "1.0.0", "v1.0.0", etc.
0 commit comments