name: MacOS - GA Runner on: push: branches: ["dev", "candidate", "release"] pull_request: branches: ["dev", "candidate", "release"] schedule: - cron: '0 0 * * *' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: strategy: matrix: generator: - Ninja configuration: - Debug runs-on: macos-15 env: build_dir: .build # Bump this number to invalidate all caches globally. CACHE_VERSION: 1 MAIN_BRANCH_NAME: dev steps: - name: Checkout uses: actions/checkout@v4 - name: Install Conan run: | brew install conan # Verify Conan 2 is installed conan --version - name: Install Coreutils run: | brew install coreutils echo "Num proc: $(nproc)" - name: Install Ninja if: matrix.generator == 'Ninja' run: brew install ninja - name: Install Python run: | if which python3 > /dev/null 2>&1; then echo "Python 3 executable exists" python3 --version else brew install python@3.12 fi # Create 'python' symlink if it doesn't exist (for tools expecting 'python') if ! which python > /dev/null 2>&1; then sudo ln -sf $(which python3) /usr/local/bin/python fi - name: Install CMake run: | # Install CMake 3.x to match local dev environments # With Conan 2 and the policy args passed to CMake, newer versions # can have issues with dependencies that require cmake_minimum_required < 3.5 brew uninstall cmake --ignore-dependencies 2>/dev/null || true # Download and install CMake 3.31.7 directly curl -L https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-macos-universal.tar.gz -o cmake.tar.gz tar -xzf cmake.tar.gz # Move the entire CMake.app to /Applications sudo mv cmake-3.31.7-macos-universal/CMake.app /Applications/ echo "/Applications/CMake.app/Contents/bin" >> $GITHUB_PATH /Applications/CMake.app/Contents/bin/cmake --version - name: Install ccache run: brew install ccache - name: Configure ccache uses: ./.github/actions/xahau-configure-ccache with: max_size: 2G hash_dir: true compiler_check: content is_main_branch: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} - name: Check environment run: | echo "PATH:" echo "${PATH}" | tr ':' '\n' which python && python --version || echo "Python not found" which conan && conan --version || echo "Conan not found" which cmake && cmake --version || echo "CMake not found" clang --version ccache --version echo "---- Full Environment ----" env - name: Configure Conan run: | # Create the default profile directory if it doesn't exist mkdir -p ~/.conan2/profiles # Detect compiler version COMPILER_VERSION=$(clang --version | grep -oE 'version [0-9]+' | grep -oE '[0-9]+') # Create profile with our specific settings cat > ~/.conan2/profiles/default <