mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	fix: configure ccache after cache restore to prevent stale config
Same ordering bug as Conan profile (Session 8) - ccache config was being created in workflow BEFORE cache restore, causing cached ccache.conf to overwrite fresh configuration. Changes: - Build action: Add ccache config inputs (max_size, hash_dir, compiler_check) - Build action: Configure ccache AFTER cache restore (overwrites cached config) - Build action: Add "Show ccache config before build" step (debugging aid) - Build action: Remove debug steps (past debugging phase) - Build action: Remove ninja -v flag (past debugging phase) - Nix workflow: Remove "Configure ccache" step (now handled in build action) - macOS workflow: Remove "Configure ccache" step (now handled in build action) - macOS workflow: Add missing stdlib and AWS credentials to build step - Delete unused xahau-configure-ccache action (logic moved to build action) Flow now matches Conan pattern: 1. Restore cache (includes potentially stale config) 2. Configure ccache (overwrites with fresh config: 2G max, hash_dir=true, compiler_check=content) 3. Show config (verification) 4. Build This ensures fresh ccache configuration for each job, preventing issues from cached config files with different settings.
This commit is contained in:
		@@ -1,45 +0,0 @@
 | 
			
		||||
name: 'Configure ccache'
 | 
			
		||||
description: 'Sets up ccache with consistent configuration'
 | 
			
		||||
 | 
			
		||||
inputs:
 | 
			
		||||
  cache_dir:
 | 
			
		||||
    description: 'Path to ccache directory'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: '~/.ccache'
 | 
			
		||||
  max_size:
 | 
			
		||||
    description: 'Maximum cache size'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: '2G'
 | 
			
		||||
  hash_dir:
 | 
			
		||||
    description: 'Whether to include directory paths in hash'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'true'
 | 
			
		||||
  compiler_check:
 | 
			
		||||
    description: 'How to check compiler for changes'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'content'
 | 
			
		||||
 | 
			
		||||
runs:
 | 
			
		||||
  using: 'composite'
 | 
			
		||||
  steps:
 | 
			
		||||
    - name: Configure ccache
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        # Use ccache's default cache_dir (~/.ccache) - don't override it
 | 
			
		||||
        # This avoids tilde expansion issues when setting it explicitly
 | 
			
		||||
 | 
			
		||||
        # 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 }}
 | 
			
		||||
 | 
			
		||||
        # Note: Not setting CCACHE_DIR - let ccache use its default (~/.ccache)
 | 
			
		||||
 | 
			
		||||
        # Print config for verification
 | 
			
		||||
        ccache -p
 | 
			
		||||
 | 
			
		||||
        # Zero statistics before the build
 | 
			
		||||
        ccache -z
 | 
			
		||||
							
								
								
									
										68
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -47,6 +47,18 @@ inputs:
 | 
			
		||||
    description: 'GCC version to use for Clang toolchain (e.g. 11, 13)'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: ''
 | 
			
		||||
  ccache_max_size:
 | 
			
		||||
    description: 'Maximum ccache size'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: '2G'
 | 
			
		||||
  ccache_hash_dir:
 | 
			
		||||
    description: 'Whether to include directory paths in hash'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'true'
 | 
			
		||||
  ccache_compiler_check:
 | 
			
		||||
    description: 'How to check compiler for changes'
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'content'
 | 
			
		||||
  aws-access-key-id:
 | 
			
		||||
    description: 'AWS Access Key ID for S3 cache storage'
 | 
			
		||||
    required: true
 | 
			
		||||
@@ -79,6 +91,31 @@ runs:
 | 
			
		||||
        aws-access-key-id: ${{ inputs.aws-access-key-id }}
 | 
			
		||||
        aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
 | 
			
		||||
 | 
			
		||||
    - name: Configure ccache
 | 
			
		||||
      if: inputs.ccache_enabled == 'true'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        # Use ccache's default cache_dir (~/.ccache) - don't override it
 | 
			
		||||
        # This avoids tilde expansion issues when setting it explicitly
 | 
			
		||||
 | 
			
		||||
        # Create cache directory using ccache's default
 | 
			
		||||
        mkdir -p ~/.ccache
 | 
			
		||||
 | 
			
		||||
        # Configure ccache settings (but NOT cache_dir - use default)
 | 
			
		||||
        # This overwrites any cached config to ensure fresh configuration
 | 
			
		||||
        ccache --set-config=max_size=${{ inputs.ccache_max_size }}
 | 
			
		||||
        ccache --set-config=hash_dir=${{ inputs.ccache_hash_dir }}
 | 
			
		||||
        ccache --set-config=compiler_check=${{ inputs.ccache_compiler_check }}
 | 
			
		||||
 | 
			
		||||
        # Note: Not setting CCACHE_DIR - let ccache use its default (~/.ccache)
 | 
			
		||||
 | 
			
		||||
        # Print config for verification
 | 
			
		||||
        echo "=== ccache configuration ==="
 | 
			
		||||
        ccache -p
 | 
			
		||||
 | 
			
		||||
        # Zero statistics before the build
 | 
			
		||||
        ccache -z
 | 
			
		||||
 | 
			
		||||
    - name: Configure project
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
@@ -157,30 +194,21 @@ runs:
 | 
			
		||||
          -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} \
 | 
			
		||||
          -DCMAKE_BUILD_TYPE=${{ inputs.configuration }}
 | 
			
		||||
 | 
			
		||||
    - name: Show ccache config before build
 | 
			
		||||
      if: inputs.ccache_enabled == 'true'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "=========================================="
 | 
			
		||||
        echo "ccache configuration before build"
 | 
			
		||||
        echo "=========================================="
 | 
			
		||||
        ccache -p
 | 
			
		||||
        echo ""
 | 
			
		||||
 | 
			
		||||
    - name: Build project
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        cd ${{ inputs.build_dir }}
 | 
			
		||||
        # 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 ""
 | 
			
		||||
        cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc)
 | 
			
		||||
 | 
			
		||||
    - name: Show ccache statistics
 | 
			
		||||
      if: inputs.ccache_enabled == 'true'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								.github/workflows/xahau-ga-macos.yml.disabled
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/xahau-ga-macos.yml.disabled
									
									
									
									
										vendored
									
									
								
							@@ -78,14 +78,6 @@ jobs:
 | 
			
		||||
      - 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:"
 | 
			
		||||
@@ -130,6 +122,9 @@ jobs:
 | 
			
		||||
          compiler-id: clang
 | 
			
		||||
          cache_version: ${{ env.CACHE_VERSION }}
 | 
			
		||||
          main_branch: ${{ env.MAIN_BRANCH_NAME }}
 | 
			
		||||
          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: Test
 | 
			
		||||
        run: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
								
							@@ -231,13 +231,6 @@ jobs:
 | 
			
		||||
          # Install Conan 2
 | 
			
		||||
          pip install --upgrade "conan>=2.0,<3"
 | 
			
		||||
 | 
			
		||||
      - name: Configure ccache
 | 
			
		||||
        uses: ./.github/actions/xahau-configure-ccache
 | 
			
		||||
        with:
 | 
			
		||||
          max_size: 2G
 | 
			
		||||
          hash_dir: true
 | 
			
		||||
          compiler_check: content
 | 
			
		||||
 | 
			
		||||
      - name: Check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "PATH:"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user