@@ -114,26 +114,109 @@ echo "=== (%PYTHON%) Building wheel ==="
114114set PYARROW_BUILD_TYPE = %CMAKE_BUILD_TYPE%
115115set PYARROW_BUILD_VERBOSE = 1
116116set PYARROW_BUNDLE_ARROW_CPP = ON
117- set PYARROW_CMAKE_GENERATOR = %CMAKE_GENERATOR%
118- set PYARROW_CMAKE_OPTIONS = " -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=%CMAKE_INTERPROCEDURAL_OPTIMIZATION% "
119- set PYARROW_WITH_ACERO = %ARROW_ACERO%
120- set PYARROW_WITH_DATASET = %ARROW_DATASET%
121- set PYARROW_WITH_FLIGHT = %ARROW_FLIGHT%
122- set PYARROW_WITH_GANDIVA = %ARROW_GANDIVA%
123- set PYARROW_WITH_GCS = %ARROW_GCS%
124- set PYARROW_WITH_HDFS = %ARROW_HDFS%
125- set PYARROW_WITH_ORC = %ARROW_ORC%
126- set PYARROW_WITH_PARQUET = %ARROW_PARQUET%
127- set PYARROW_WITH_PARQUET_ENCRYPTION = %PARQUET_REQUIRE_ENCRYPTION%
128- set PYARROW_WITH_SUBSTRAIT = %ARROW_SUBSTRAIT%
129- set PYARROW_WITH_S3 = %ARROW_S3%
130- set ARROW_HOME = C:\arrow-dist
131- set CMAKE_PREFIX_PATH = C:\arrow-dist
117+
118+ if %ARROW_ACERO% == ON (
119+ set PYARROW_WITH_ACERO = enabled
120+ ) else if %ARROW_ACERO% == OFF (
121+ set PYARROW_WITH_ACERO = disabled
122+ ) else (
123+ set PYARROW_WITH_ACERO = auto
124+ )
125+ if %ARROW_DATASET% == ON (
126+ set PYARROW_WITH_DATASET = enabled
127+ ) else if %ARROW_DATASET% == OFF (
128+ set PYARROW_WITH_DATASET = disabled
129+ ) else (
130+ set PYARROW_WITH_DATASET = auto
131+ )
132+ if %ARROW_FLIGHT% == ON (
133+ set PYARROW_WITH_FLIGHT = enabled
134+ ) else if %ARROW_FLIGHT% == OFF (
135+ set PYARROW_WITH_FLIGHT = disabled
136+ ) else (
137+ set PYARROW_WITH_FLIGHT = auto
138+ )
139+ if %ARROW_GANDIVA% == ON (
140+ set PYARROW_WITH_GANDIVA = enabled
141+ ) else if %ARROW_GANDIVA% == OFF (
142+ set PYARROW_WITH_GANDIVA = disabled
143+ ) else (
144+ set PYARROW_WITH_GANDIVA = auto
145+ )
146+ if %ARROW_GCS% == ON (
147+ set PYARROW_WITH_GCS = enabled
148+ ) else if %ARROW_GCS% == OFF (
149+ set PYARROW_WITH_GCS = disabled
150+ ) else (
151+ set PYARROW_WITH_GCS = auto
152+ )
153+ if %ARROW_HDFS% == ON (
154+ set PYARROW_WITH_HDFS = enabled
155+ ) else if %ARROW_HDFS% == OFF (
156+ set PYARROW_WITH_HDFS = disabled
157+ ) else (
158+ set PYARROW_WITH_HDFS = auto
159+ )
160+ if %ARROW_ORC% == ON (
161+ set PYARROW_WITH_ORC = enabled
162+ ) else if %ARROW_ORC% == OFF (
163+ set PYARROW_WITH_ORC = disabled
164+ ) else (
165+ set PYARROW_WITH_ORC = auto
166+ )
167+ if %ARROW_PARQUET% == ON (
168+ set PYARROW_WITH_PARQUET = enabled
169+ ) else if %ARROW_PARQUET% == OFF (
170+ set PYARROW_WITH_PARQUET = disabled
171+ ) else (
172+ set PYARROW_WITH_PARQUET = auto
173+ )
174+ if %PARQUET_REQUIRE_ENCRYPTION% == ON (
175+ set PYARROW_WITH_PARQUET_ENCRYPTION = enabled
176+ ) else if %PARQUET_REQUIRE_ENCRYPTION% == OFF (
177+ set PYARROW_WITH_PARQUET_ENCRYPTION = disabled
178+ ) else (
179+ set PYARROW_WITH_PARQUET_ENCRYPTION = auto
180+ )
181+ if %ARROW_SUBSTRAIT% == ON (
182+ set PYARROW_WITH_SUBSTRAIT = enabled
183+ ) else if %ARROW_SUBSTRAIT% == OFF (
184+ set PYARROW_WITH_SUBSTRAIT = disabled
185+ ) else (
186+ set PYARROW_WITH_SUBSTRAIT = auto
187+ )
188+ if %ARROW_S3% == ON (
189+ set PYARROW_WITH_S3 = enabled
190+ ) else if %ARROW_S3% == OFF (
191+ set PYARROW_WITH_S3 = disabled
192+ ) else (
193+ set PYARROW_WITH_S3 = auto
194+ )
195+
196+ @ REM Meson sdist requires setuptools_scm to be able to get the version from git
197+ git config --global --add safe.directory C:\arrow
132198
133199pushd C:\arrow\python
134200
201+ @ REM TODO: Remove once docker rebuild works correctly
202+ @ REM See: https://github.com/apache/arrow/issues/48947
203+ %PYTHON_CMD% -m pip install -U build || exit /B 1
204+
135205@ REM Build wheel
136- %PYTHON_CMD% setup.py bdist_wheel || exit /B 1
206+ %PYTHON_CMD% -m build --sdist --wheel . ^
207+ -Csetup-args=" -Dbuildtype=%CMAKE_BUILD_TYPE% " ^
208+ -Csetup-args=" -Dacero=%PYARROW_WITH_ACERO% " ^
209+ -Csetup-args=" -Ddataset=%PYARROW_WITH_DATASET% " ^
210+ -Csetup-args=" -Dflight=%PYARROW_WITH_FLIGHT% " ^
211+ -Csetup-args=" -Dgandiva=%PYARROW_WITH_GANDIVA% " ^
212+ -Csetup-args=" -Dgcs=%PYARROW_WITH_GCS% " ^
213+ -Csetup-args=" -Dhdfs=%PYARROW_WITH_HDFS% " ^
214+ -Csetup-args=" -Dorc=%PYARROW_WITH_ORC% " ^
215+ -Csetup-args=" -Dparquet=%PYARROW_WITH_PARQUET% " ^
216+ -Csetup-args=" -Dparquet_require_encryption=%PYARROW_WITH_PARQUET_ENCRYPTION% " ^
217+ -Csetup-args=" -Dsubstrait=%PYARROW_WITH_SUBSTRAIT% " ^
218+ -Csetup-args=" -Ds3=%PYARROW_WITH_S3% " ^
219+ -Csetup-args=" --cmake-prefix-path=C:\arrow-dist" || exit /B 1
137220
138221@ REM Repair the wheel with delvewheel
139222@ REM
@@ -142,11 +225,16 @@ pushd C:\arrow\python
142225@ REM required by multiple Python libraries in the same process.
143226%PYTHON_CMD% -m pip install delvewheel || exit /B 1
144227
228+ @ REM Copy .lib files to bin directory for delvewheel to find them
229+ copy C:\arrow-dist\lib\*.lib C:\arrow-dist\bin\ || exit /B 1
230+
145231for /f %%i in ('dir dist\pyarrow-*.whl /B') do (set WHEEL_NAME=%cd% \dist\%%i ) || exit /B 1
146232echo " Wheel name: %WHEEL_NAME% "
147233
148234%PYTHON_CMD% -m delvewheel repair -vv ^
149- --ignore-existing --with-mangle ^
235+ --ignore-existing --with-mangle --include-imports ^
236+ --no-mangle " arrow.dll;arrow_python.dll;arrow_acero.dll;arrow_dataset.dll;arrow_flight.dll;arrow_substrait.dll;parquet.dll" ^
237+ --add-path " C:\arrow-dist\bin" ^
150238 -w repaired_wheels %WHEEL_NAME% || exit /B 1
151239
152240popd
0 commit comments