mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 02:35:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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 <<EOF
 | 
						|
          [settings]
 | 
						|
          arch=armv8
 | 
						|
          build_type=Release
 | 
						|
          compiler=apple-clang
 | 
						|
          compiler.cppstd=20
 | 
						|
          compiler.libcxx=libc++
 | 
						|
          compiler.version=${COMPILER_VERSION}
 | 
						|
          os=Macos
 | 
						|
 | 
						|
          [conf]
 | 
						|
          # Workaround for gRPC with newer Apple Clang
 | 
						|
          tools.build:cxxflags=["-Wno-missing-template-arg-list-after-template-kw"]
 | 
						|
          EOF
 | 
						|
 | 
						|
          # Display profile for verification
 | 
						|
          conan profile show
 | 
						|
 | 
						|
      - name: Install dependencies
 | 
						|
        uses: ./.github/actions/xahau-ga-dependencies
 | 
						|
        with:
 | 
						|
          configuration: ${{ matrix.configuration }}
 | 
						|
          build_dir: ${{ env.build_dir }}
 | 
						|
          compiler-id: clang
 | 
						|
          cache_version: ${{ env.CACHE_VERSION }}
 | 
						|
          main_branch: ${{ env.MAIN_BRANCH_NAME }}
 | 
						|
 | 
						|
      - name: Build
 | 
						|
        uses: ./.github/actions/xahau-ga-build
 | 
						|
        with:
 | 
						|
          generator: ${{ matrix.generator }}
 | 
						|
          configuration: ${{ matrix.configuration }}
 | 
						|
          build_dir: ${{ env.build_dir }}
 | 
						|
          compiler-id: clang
 | 
						|
          cache_version: ${{ env.CACHE_VERSION }}
 | 
						|
          main_branch: ${{ env.MAIN_BRANCH_NAME }}
 | 
						|
 | 
						|
      - name: Test
 | 
						|
        run: |
 | 
						|
          ${{ env.build_dir }}/rippled --unittest --unittest-jobs $(nproc)
 |