From 1b01725dd1233d637a8f7c987d33e87acdcea6a7 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Sat, 9 Aug 2025 16:48:26 -0700 Subject: [PATCH] fix: improve macOS build reliability with proper OpenMP path detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add proper CMAKE_PREFIX_PATH and OpenMP_ROOT detection for both Intel and Apple Silicon Macs - Set LDFLAGS and CPPFLAGS for all Homebrew packages to ensure CMake can find them - Apply CMAKE_ARGS to both HNSW and DiskANN backends for consistent builds - Fix hardcoded paths that caused build failures on Intel Macs (macos-13) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/build-reusable.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-reusable.yml b/.github/workflows/build-reusable.yml index ac084b6..c23743d 100644 --- a/.github/workflows/build-reusable.yml +++ b/.github/workflows/build-reusable.yml @@ -126,9 +126,15 @@ jobs: if [ -d "/opt/homebrew/opt/libomp" ]; then echo "HOMEBREW_PREFIX=/opt/homebrew" >> $GITHUB_ENV echo "OpenMP_ROOT=/opt/homebrew/opt/libomp" >> $GITHUB_ENV + echo "CMAKE_PREFIX_PATH=/opt/homebrew/opt/libomp:/opt/homebrew/opt/boost:/opt/homebrew/opt/protobuf:/opt/homebrew/opt/zeromq" >> $GITHUB_ENV + echo "LDFLAGS=-L/opt/homebrew/opt/libomp/lib" >> $GITHUB_ENV + echo "CPPFLAGS=-I/opt/homebrew/opt/libomp/include" >> $GITHUB_ENV elif [ -d "/usr/local/opt/libomp" ]; then - echo "HOMEBREW_PREFIX=/usr/local" >> $GITHUB_ENV + echo "HOMEBREW_PREFIX=/usr/local" >> $GITHUB_ENV echo "OpenMP_ROOT=/usr/local/opt/libomp" >> $GITHUB_ENV + echo "CMAKE_PREFIX_PATH=/usr/local/opt/libomp:/usr/local/opt/boost:/usr/local/opt/protobuf:/usr/local/opt/zeromq" >> $GITHUB_ENV + echo "LDFLAGS=-L/usr/local/opt/libomp/lib" >> $GITHUB_ENV + echo "CPPFLAGS=-I/usr/local/opt/libomp/include" >> $GITHUB_ENV fi - name: Build packages @@ -142,11 +148,13 @@ jobs: # Build HNSW backend cd packages/leann-backend-hnsw - if [ "${{ matrix.os }}" == "macos-latest" ]; then + if [[ "${{ matrix.os }}" == macos-* ]]; then # Use system clang instead of homebrew LLVM for better compatibility export CC=clang export CXX=clang++ export MACOSX_DEPLOYMENT_TARGET=11.0 + # Ensure CMake can find all Homebrew packages + export CMAKE_ARGS="-DOpenMP_ROOT=${OpenMP_ROOT} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" uv build --wheel --python python else uv build --wheel --python python @@ -155,12 +163,14 @@ jobs: # Build DiskANN backend cd packages/leann-backend-diskann - if [ "${{ matrix.os }}" == "macos-latest" ]; then + if [[ "${{ matrix.os }}" == macos-* ]]; then # Use system clang instead of homebrew LLVM for better compatibility export CC=clang export CXX=clang++ # DiskANN requires macOS 13.3+ for sgesdd_ LAPACK function export MACOSX_DEPLOYMENT_TARGET=13.3 + # Ensure CMake can find all Homebrew packages + export CMAKE_ARGS="-DOpenMP_ROOT=${OpenMP_ROOT} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" uv build --wheel --python python else uv build --wheel --python python