mirror of
https://github.com/apache/arrow.git
synced 2026-10-28 16:47:19 +08:00
### Rationale for this change The Windows ARM job was failing on CMake configure. The real problem is that the Windows-11-arm64 GitHub runner updated VS Code from 2022 to 2026 here: https://github.com/actions/runner-images/issues/14592 The workflow was hardcoding `vcvarsall.bat` path and wasn't really setting those up. ### What changes are included in this PR? Use vswhere to find VSCode installation path instead of manually setting it up. I investigating using: https://github.com/ilammy/msvc-dev-cmd which is allowed by infra and used on nanoarrow and adbc but it feels unmaintained at the moment (No new releases in 3 years). This has been changed everywhere where we were manually setting this path. ### Are these changes tested? Yes via CI ### Are there any user-facing changes? No ### Was AI used for this PR? In accordance to the [AI generation guidelines](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code), please disclose below whether and how AI was used in this PR. **PR code and description written by:** - [x] Human - [x] AI AI used to analyze and first implementation. Re-implemented on a second bash step from me as it's much cleaner and clearer. **Reviewed before submission by:** - [x] Human - [ ] AI - [ ] Not reviewed * GitHub Issue: #51494 Lead-authored-by: Raúl Cumplido <raulcumplido@gmail.com> Co-authored-by: Sutou Kouhei <kou@cozmixng.org> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
154 lines
5.2 KiB
Batchfile
154 lines
5.2 KiB
Batchfile
@rem Licensed to the Apache Software Foundation (ASF) under one
|
|
@rem or more contributor license agreements. See the NOTICE file
|
|
@rem distributed with this work for additional information
|
|
@rem regarding copyright ownership. The ASF licenses this file
|
|
@rem to you under the Apache License, Version 2.0 (the
|
|
@rem "License"); you may not use this file except in compliance
|
|
@rem with the License. You may obtain a copy of the License at
|
|
@rem
|
|
@rem http://www.apache.org/licenses/LICENSE-2.0
|
|
@rem
|
|
@rem Unless required by applicable law or agreed to in writing,
|
|
@rem software distributed under the License is distributed on an
|
|
@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
@rem KIND, either express or implied. See the License for the
|
|
@rem specific language governing permissions and limitations
|
|
@rem under the License.
|
|
|
|
@echo on
|
|
|
|
set SOURCE_DIR=%1
|
|
set CMAKE_INSTALL_PREFIX=%2
|
|
set CPP_SOURCE_DIR=%SOURCE_DIR%\cpp
|
|
set CPP_BUILD_DIR=%SOURCE_DIR%\build
|
|
echo C++ source dir is %CPP_SOURCE_DIR%
|
|
|
|
echo Building for Windows ...
|
|
|
|
@REM List installed Pythons
|
|
py -0p
|
|
|
|
%PYTHON_CMD% -m sysconfig || exit /B 1
|
|
|
|
@REM Setup MSVC environment. Find the Visual Studio Path first.
|
|
for /f "usebackq delims=" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath`) do set "VS_INSTALL_PATH=%%i"
|
|
call "%VS_INSTALL_PATH%\VC\Auxiliary\Build\vcvarsall.bat" x64 || exit /B 1
|
|
@echo on
|
|
|
|
echo "=== CCACHE Stats before build ==="
|
|
ccache -sv
|
|
|
|
echo "=== Building Arrow C++ libraries ==="
|
|
set ARROW_ACERO=ON
|
|
set ARROW_AZURE=ON
|
|
set ARROW_DATASET=ON
|
|
set ARROW_FLIGHT=OFF
|
|
set ARROW_GANDIVA=OFF
|
|
set ARROW_GCS=OFF
|
|
set ARROW_HDFS=ON
|
|
set ARROW_MIMALLOC=ON
|
|
set ARROW_ORC=OFF
|
|
set ARROW_PARQUET=ON
|
|
set PARQUET_REQUIRE_ENCRYPTION=ON
|
|
set ARROW_SUBSTRAIT=ON
|
|
set ARROW_S3=ON
|
|
set ARROW_TENSORFLOW=ON
|
|
set ARROW_WITH_BROTLI=ON
|
|
set ARROW_WITH_BZ2=OFF
|
|
set ARROW_WITH_LZ4=ON
|
|
set ARROW_WITH_SNAPPY=ON
|
|
set ARROW_WITH_ZLIB=ON
|
|
set ARROW_WITH_ZSTD=ON
|
|
set CMAKE_BUILD_TYPE=RelWithDebInfo
|
|
@rem Set CMAKE_CXX_FLAGS_RELWITHDEBINFO and CMAKE_C_FLAGS_RELWITHDEBINFO to
|
|
@rem override default /DNDEBUG to be dropped so assertions are maintained.
|
|
@rem A debug build would require linking against python3xx_d.lib (debug).
|
|
@rem See details of discussion on PR GH-50406
|
|
set CMAKE_CXX_FLAGS_RELWITHDEBINFO=/O2 /Ob1
|
|
set CMAKE_C_FLAGS_RELWITHDEBINFO=/O2 /Ob1
|
|
set CMAKE_GENERATOR=Ninja
|
|
set CMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded
|
|
set CMAKE_UNITY_BUILD=ON
|
|
|
|
mkdir %CPP_BUILD_DIR%
|
|
pushd %CPP_BUILD_DIR%
|
|
|
|
cmake ^
|
|
-DARROW_ACERO=%ARROW_ACERO% ^
|
|
-DARROW_AZURE=%ARROW_AZURE% ^
|
|
-DARROW_BUILD_SHARED=ON ^
|
|
-DARROW_BUILD_STATIC=OFF ^
|
|
-DARROW_BUILD_TESTS=OFF ^
|
|
-DARROW_COMPUTE=ON ^
|
|
-DARROW_CSV=ON ^
|
|
-DARROW_CXXFLAGS="/MP" ^
|
|
-DARROW_DATASET=%ARROW_DATASET% ^
|
|
-DARROW_DEPENDENCY_USE_SHARED=OFF ^
|
|
-DARROW_FILESYSTEM=ON ^
|
|
-DARROW_FLIGHT=%ARROW_FLIGHT% ^
|
|
-DARROW_GANDIVA=%ARROW_GANDIVA% ^
|
|
-DARROW_GCS=%ARROW_GCS% ^
|
|
-DARROW_HDFS=%ARROW_HDFS% ^
|
|
-DARROW_JSON=ON ^
|
|
-DARROW_MIMALLOC=%ARROW_MIMALLOC% ^
|
|
-DARROW_ORC=%ARROW_ORC% ^
|
|
-DARROW_PARQUET=%ARROW_PARQUET% ^
|
|
-DARROW_S3=%ARROW_S3% ^
|
|
-DARROW_SUBSTRAIT=%ARROW_SUBSTRAIT% ^
|
|
-DARROW_TENSORFLOW=%ARROW_TENSORFLOW% ^
|
|
-DARROW_USE_CCACHE=ON ^
|
|
-DARROW_WITH_BROTLI=%ARROW_WITH_BROTLI% ^
|
|
-DARROW_WITH_BZ2=%ARROW_WITH_BZ2% ^
|
|
-DARROW_WITH_LZ4=%ARROW_WITH_LZ4% ^
|
|
-DARROW_WITH_SNAPPY=%ARROW_WITH_SNAPPY% ^
|
|
-DARROW_WITH_ZLIB=%ARROW_WITH_ZLIB% ^
|
|
-DARROW_WITH_ZSTD=%ARROW_WITH_ZSTD% ^
|
|
-DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
|
|
-DCMAKE_C_FLAGS_RELWITHDEBINFO="%CMAKE_C_FLAGS_RELWITHDEBINFO%" ^
|
|
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%CMAKE_CXX_FLAGS_RELWITHDEBINFO%" ^
|
|
-DCMAKE_INSTALL_PREFIX=%CMAKE_INSTALL_PREFIX% ^
|
|
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=%CMAKE_MSVC_DEBUG_INFORMATION_FORMAT% ^
|
|
-DCMAKE_UNITY_BUILD=%CMAKE_UNITY_BUILD% ^
|
|
-DMSVC_LINK_VERBOSE=ON ^
|
|
-DPARQUET_REQUIRE_ENCRYPTION=%PARQUET_REQUIRE_ENCRYPTION% ^
|
|
-Dxsimd_SOURCE=BUNDLED ^
|
|
-G "%CMAKE_GENERATOR%" ^
|
|
%CPP_SOURCE_DIR% || exit /B 1
|
|
cmake --build . --config %CMAKE_BUILD_TYPE% --target install || exit /B 1
|
|
popd
|
|
|
|
echo "=== CCACHE Stats after build ==="
|
|
ccache -sv
|
|
|
|
echo "=== Building Python ==="
|
|
set PYARROW_BUNDLE_ARROW_CPP=ON
|
|
set PYARROW_WITH_ACERO=%ARROW_ACERO%
|
|
set PYARROW_WITH_AZURE=%ARROW_AZURE%
|
|
set PYARROW_WITH_DATASET=%ARROW_DATASET%
|
|
set PYARROW_WITH_FLIGHT=%ARROW_FLIGHT%
|
|
set PYARROW_WITH_GANDIVA=%ARROW_GANDIVA%
|
|
set PYARROW_WITH_GCS=%ARROW_GCS%
|
|
set PYARROW_WITH_HDFS=%ARROW_HDFS%
|
|
set PYARROW_WITH_ORC=%ARROW_ORC%
|
|
set PYARROW_WITH_PARQUET=%ARROW_PARQUET%
|
|
set PYARROW_WITH_PARQUET_ENCRYPTION=%PARQUET_REQUIRE_ENCRYPTION%
|
|
set PYARROW_WITH_SUBSTRAIT=%ARROW_SUBSTRAIT%
|
|
set PYARROW_WITH_S3=%ARROW_S3%
|
|
set ARROW_HOME=%CMAKE_INSTALL_PREFIX%
|
|
set CMAKE_PREFIX_PATH=%CMAKE_INSTALL_PREFIX%
|
|
|
|
pushd %SOURCE_DIR%\python
|
|
|
|
@REM Install Python build dependencies
|
|
%PYTHON_CMD% -m pip install --upgrade pip || exit /B 1
|
|
%PYTHON_CMD% -m pip install -r requirements-build.txt || exit /B 1
|
|
|
|
@REM Build PyArrow
|
|
%PYTHON_CMD% -m pip install --no-deps --no-build-isolation -vv ^
|
|
-C build.verbose=true ^
|
|
-C cmake.build-type=%CMAKE_BUILD_TYPE% ^
|
|
-C cmake.define.CMAKE_C_FLAGS_RELWITHDEBINFO="%CMAKE_C_FLAGS_RELWITHDEBINFO%" ^
|
|
-C cmake.define.CMAKE_CXX_FLAGS_RELWITHDEBINFO="%CMAKE_CXX_FLAGS_RELWITHDEBINFO%" . || exit /B 1
|
|
|
|
popd
|