mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			f8d1a6f2b4
			...
			a4f96a435a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a4f96a435a | ||
| 
						 | 
					d0f63cc2d1 | ||
| 
						 | 
					2433bfe277 | ||
| 
						 | 
					ef40a7f351 | ||
| 
						 | 
					a4a4126bdc | ||
| 
						 | 
					0559b6c418 | 
@@ -25,17 +25,18 @@ runs:
 | 
			
		||||
    - name: Configure ccache
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        # Create cache directory
 | 
			
		||||
        mkdir -p ${{ inputs.cache_dir }}
 | 
			
		||||
        # Use ccache's default cache_dir (~/.ccache) - don't override it
 | 
			
		||||
        # This avoids tilde expansion issues when setting it explicitly
 | 
			
		||||
 | 
			
		||||
        # Configure ccache settings
 | 
			
		||||
        ccache --set-config=cache_dir="${{ inputs.cache_dir }}"
 | 
			
		||||
        # Create cache directory using ccache's default
 | 
			
		||||
        mkdir -p ~/.ccache
 | 
			
		||||
 | 
			
		||||
        # Configure ccache settings (but NOT cache_dir - use default)
 | 
			
		||||
        ccache --set-config=max_size=${{ inputs.max_size }}
 | 
			
		||||
        ccache --set-config=hash_dir=${{ inputs.hash_dir }}
 | 
			
		||||
        ccache --set-config=compiler_check=${{ inputs.compiler_check }}
 | 
			
		||||
 | 
			
		||||
        # Export for use by build tools
 | 
			
		||||
        echo "CCACHE_DIR=${{ inputs.cache_dir }}" >> $GITHUB_ENV
 | 
			
		||||
        # Note: Not setting CCACHE_DIR - let ccache use its default (~/.ccache)
 | 
			
		||||
 | 
			
		||||
        # Print config for verification
 | 
			
		||||
        ccache -p
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										49
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -93,14 +93,27 @@ runs:
 | 
			
		||||
        if [ -n "${{ inputs.cxx }}" ]; then
 | 
			
		||||
          export CXX="${{ inputs.cxx }}"
 | 
			
		||||
        fi
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        # Configure ccache launcher args
 | 
			
		||||
        CCACHE_ARGS=""
 | 
			
		||||
 | 
			
		||||
        # Create wrapper toolchain that overlays ccache on top of Conan's toolchain
 | 
			
		||||
        # This enables ccache for the main app build without affecting Conan dependency builds
 | 
			
		||||
        if [ "${{ inputs.ccache_enabled }}" = "true" ]; then
 | 
			
		||||
          CCACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
 | 
			
		||||
          cat > wrapper_toolchain.cmake <<'EOF'
 | 
			
		||||
        # Include Conan's generated toolchain first (sets compiler, flags, etc.)
 | 
			
		||||
        # Note: CMAKE_CURRENT_LIST_DIR is the directory containing this wrapper (.build/)
 | 
			
		||||
        include(${CMAKE_CURRENT_LIST_DIR}/build/generators/conan_toolchain.cmake)
 | 
			
		||||
 | 
			
		||||
        # Overlay ccache configuration for main application build
 | 
			
		||||
        # This does NOT affect Conan dependency builds (already completed)
 | 
			
		||||
        set(CMAKE_C_COMPILER_LAUNCHER ccache CACHE STRING "C compiler launcher" FORCE)
 | 
			
		||||
        set(CMAKE_CXX_COMPILER_LAUNCHER ccache CACHE STRING "C++ compiler launcher" FORCE)
 | 
			
		||||
        EOF
 | 
			
		||||
          TOOLCHAIN_FILE="wrapper_toolchain.cmake"
 | 
			
		||||
          echo "✅ Created wrapper toolchain with ccache enabled"
 | 
			
		||||
        else
 | 
			
		||||
          TOOLCHAIN_FILE="build/generators/conan_toolchain.cmake"
 | 
			
		||||
          echo "ℹ️  Using Conan toolchain directly (ccache disabled)"
 | 
			
		||||
        fi
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Configure C++ standard library if specified
 | 
			
		||||
        # libstdcxx used for clang-14/16 to work around missing lexicographical_compare_three_way in libc++
 | 
			
		||||
        # libcxx can be used with clang-17+ which has full C++20 support
 | 
			
		||||
@@ -140,16 +153,34 @@ runs:
 | 
			
		||||
        # So we get: .build/build/generators/ with our non-standard folder name
 | 
			
		||||
        cmake .. \
 | 
			
		||||
          -G "${{ inputs.generator }}" \
 | 
			
		||||
          $CCACHE_ARGS \
 | 
			
		||||
          ${CMAKE_CXX_FLAGS:+-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS"} \
 | 
			
		||||
          -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
 | 
			
		||||
          -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} \
 | 
			
		||||
          -DCMAKE_BUILD_TYPE=${{ inputs.configuration }}
 | 
			
		||||
 | 
			
		||||
    - name: Build project
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        cd ${{ inputs.build_dir }}
 | 
			
		||||
        cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc)
 | 
			
		||||
        # TEMPORARY: Add -v to see compile commands for ccache debugging
 | 
			
		||||
        cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc) -- -v
 | 
			
		||||
 | 
			
		||||
    - name: Debug ccache directory
 | 
			
		||||
      if: inputs.ccache_enabled == 'true'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "=== ccache directory contents ==="
 | 
			
		||||
        ls -laR ~/.ccache || echo "Directory doesn't exist"
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "=== Disk space ==="
 | 
			
		||||
        df -h ~
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "=== ccache config ==="
 | 
			
		||||
        ccache --show-config | head -30
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "=== Directory sizes ==="
 | 
			
		||||
        du -sh ~/.ccache 2>/dev/null || echo "No directory"
 | 
			
		||||
        find ~/.ccache -type f -name "*.conf" -o -type f ! -name "*.conf" 2>/dev/null | head -20 || true
 | 
			
		||||
        echo ""
 | 
			
		||||
 | 
			
		||||
    - name: Show ccache statistics
 | 
			
		||||
      if: inputs.ccache_enabled == 'true'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										74
									
								
								.github/actions/xahau-ga-dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								.github/actions/xahau-ga-dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -25,6 +25,28 @@ inputs:
 | 
			
		||||
    description: 'Main branch name for restore keys'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'dev'
 | 
			
		||||
  os:
 | 
			
		||||
    description: 'Operating system (Linux, Macos)'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'Linux'
 | 
			
		||||
  arch:
 | 
			
		||||
    description: 'Architecture (x86_64, armv8)'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'x86_64'
 | 
			
		||||
  compiler:
 | 
			
		||||
    description: 'Compiler type (gcc, clang, apple-clang)'
 | 
			
		||||
    required: true
 | 
			
		||||
  compiler_version:
 | 
			
		||||
    description: 'Compiler version (11, 13, 14, etc.)'
 | 
			
		||||
    required: true
 | 
			
		||||
  cc:
 | 
			
		||||
    description: 'C compiler executable (gcc-13, clang-14, etc.), empty for macOS'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: ''
 | 
			
		||||
  cxx:
 | 
			
		||||
    description: 'C++ compiler executable (g++-14, clang++-14, etc.), empty for macOS'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: ''
 | 
			
		||||
  stdlib:
 | 
			
		||||
    description: 'C++ standard library for Conan configuration (note: also in compiler-id)'
 | 
			
		||||
    required: true
 | 
			
		||||
@@ -63,6 +85,58 @@ runs:
 | 
			
		||||
        aws-access-key-id: ${{ inputs.aws-access-key-id }}
 | 
			
		||||
        aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
 | 
			
		||||
 | 
			
		||||
    - name: Configure Conan
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        # Create the default profile directory if it doesn't exist
 | 
			
		||||
        mkdir -p ~/.conan2/profiles
 | 
			
		||||
 | 
			
		||||
        # Determine the correct libcxx based on stdlib parameter
 | 
			
		||||
        if [ "${{ inputs.stdlib }}" = "libcxx" ]; then
 | 
			
		||||
          LIBCXX="libc++"
 | 
			
		||||
        else
 | 
			
		||||
          LIBCXX="libstdc++11"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Create profile with our specific settings
 | 
			
		||||
        # This overwrites any cached profile to ensure fresh configuration
 | 
			
		||||
        cat > ~/.conan2/profiles/default <<EOF
 | 
			
		||||
        [settings]
 | 
			
		||||
        arch=${{ inputs.arch }}
 | 
			
		||||
        build_type=${{ inputs.configuration }}
 | 
			
		||||
        compiler=${{ inputs.compiler }}
 | 
			
		||||
        compiler.cppstd=20
 | 
			
		||||
        compiler.libcxx=${LIBCXX}
 | 
			
		||||
        compiler.version=${{ inputs.compiler_version }}
 | 
			
		||||
        os=${{ inputs.os }}
 | 
			
		||||
        EOF
 | 
			
		||||
 | 
			
		||||
        # Add buildenv and conf sections for Linux (not needed for macOS)
 | 
			
		||||
        if [ "${{ inputs.os }}" = "Linux" ] && [ -n "${{ inputs.cc }}" ]; then
 | 
			
		||||
          cat >> ~/.conan2/profiles/default <<EOF
 | 
			
		||||
 | 
			
		||||
        [buildenv]
 | 
			
		||||
        CC=/usr/bin/${{ inputs.cc }}
 | 
			
		||||
        CXX=/usr/bin/${{ inputs.cxx }}
 | 
			
		||||
 | 
			
		||||
        [conf]
 | 
			
		||||
        tools.build:compiler_executables={"c": "/usr/bin/${{ inputs.cc }}", "cpp": "/usr/bin/${{ inputs.cxx }}"}
 | 
			
		||||
        EOF
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Add macOS-specific conf if needed
 | 
			
		||||
        if [ "${{ inputs.os }}" = "Macos" ]; then
 | 
			
		||||
          cat >> ~/.conan2/profiles/default <<EOF
 | 
			
		||||
 | 
			
		||||
        [conf]
 | 
			
		||||
        # Workaround for gRPC with newer Apple Clang
 | 
			
		||||
        tools.build:cxxflags=["-Wno-missing-template-arg-list-after-template-kw"]
 | 
			
		||||
        EOF
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Display profile for verification
 | 
			
		||||
        conan profile show
 | 
			
		||||
 | 
			
		||||
    - name: Export custom recipes
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								.github/workflows/xahau-ga-macos.yml.disabled
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/xahau-ga-macos.yml.disabled
									
									
									
									
										vendored
									
									
								
							@@ -98,32 +98,12 @@ jobs:
 | 
			
		||||
          echo "---- Full Environment ----"
 | 
			
		||||
          env
 | 
			
		||||
 | 
			
		||||
      - name: Configure Conan
 | 
			
		||||
      - name: Detect compiler version
 | 
			
		||||
        id: detect-compiler
 | 
			
		||||
        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
 | 
			
		||||
          echo "compiler_version=${COMPILER_VERSION}" >> $GITHUB_OUTPUT
 | 
			
		||||
          echo "Detected Apple Clang version: ${COMPILER_VERSION}"
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        uses: ./.github/actions/xahau-ga-dependencies
 | 
			
		||||
@@ -133,6 +113,13 @@ jobs:
 | 
			
		||||
          compiler-id: clang
 | 
			
		||||
          cache_version: ${{ env.CACHE_VERSION }}
 | 
			
		||||
          main_branch: ${{ env.MAIN_BRANCH_NAME }}
 | 
			
		||||
          os: Macos
 | 
			
		||||
          arch: armv8
 | 
			
		||||
          compiler: apple-clang
 | 
			
		||||
          compiler_version: ${{ steps.detect-compiler.outputs.compiler_version }}
 | 
			
		||||
          stdlib: libcxx
 | 
			
		||||
          aws-access-key-id: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_KEY_ID }}
 | 
			
		||||
          aws-secret-access-key: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_ACCESS_KEY }}
 | 
			
		||||
 | 
			
		||||
      - name: Build
 | 
			
		||||
        uses: ./.github/actions/xahau-ga-build
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
								
							@@ -238,40 +238,6 @@ jobs:
 | 
			
		||||
          hash_dir: true
 | 
			
		||||
          compiler_check: content
 | 
			
		||||
 | 
			
		||||
      - name: Configure Conan
 | 
			
		||||
        run: |
 | 
			
		||||
          # Create the default profile directory if it doesn't exist
 | 
			
		||||
          mkdir -p ~/.conan2/profiles
 | 
			
		||||
 | 
			
		||||
          # Determine the correct libcxx based on stdlib parameter
 | 
			
		||||
          if [ "${{ matrix.stdlib }}" = "libcxx" ]; then
 | 
			
		||||
            LIBCXX="libc++"
 | 
			
		||||
          else
 | 
			
		||||
            LIBCXX="libstdc++11"
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          # Create profile with our specific settings
 | 
			
		||||
          cat > ~/.conan2/profiles/default <<EOF
 | 
			
		||||
          [settings]
 | 
			
		||||
          arch=x86_64
 | 
			
		||||
          build_type=${{ matrix.configuration }}
 | 
			
		||||
          compiler=${{ matrix.compiler }}
 | 
			
		||||
          compiler.cppstd=20
 | 
			
		||||
          compiler.libcxx=${LIBCXX}
 | 
			
		||||
          compiler.version=${{ matrix.compiler_version }}
 | 
			
		||||
          os=Linux
 | 
			
		||||
 | 
			
		||||
          [buildenv]
 | 
			
		||||
          CC=/usr/bin/${{ matrix.cc }}
 | 
			
		||||
          CXX=/usr/bin/${{ matrix.cxx }}
 | 
			
		||||
 | 
			
		||||
          [conf]
 | 
			
		||||
          tools.build:compiler_executables={"c": "/usr/bin/${{ matrix.cc }}", "cpp": "/usr/bin/${{ matrix.cxx }}"}
 | 
			
		||||
          EOF
 | 
			
		||||
 | 
			
		||||
          # Display profile for verification
 | 
			
		||||
          conan profile show
 | 
			
		||||
 | 
			
		||||
      - name: Check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "PATH:"
 | 
			
		||||
@@ -292,6 +258,10 @@ jobs:
 | 
			
		||||
          compiler-id: ${{ matrix.compiler_id }}
 | 
			
		||||
          cache_version: ${{ env.CACHE_VERSION }}
 | 
			
		||||
          main_branch: ${{ env.MAIN_BRANCH_NAME }}
 | 
			
		||||
          compiler: ${{ matrix.compiler }}
 | 
			
		||||
          compiler_version: ${{ matrix.compiler_version }}
 | 
			
		||||
          cc: ${{ matrix.cc }}
 | 
			
		||||
          cxx: ${{ matrix.cxx }}
 | 
			
		||||
          stdlib: ${{ matrix.stdlib }}
 | 
			
		||||
          aws-access-key-id: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_KEY_ID }}
 | 
			
		||||
          aws-secret-access-key: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_ACCESS_KEY }}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user