mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	* optimize github action cache * fix * refactor: improve github actions cache optimization (#3) - move ccache configuration logic to dedicated action - rename conanfile-changed to should-save-conan-cache for clarity --------- Co-authored-by: Niq Dudfield <ndudfield@gmail.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: 'Configure ccache'
 | 
						|
description: 'Sets up ccache with consistent configuration'
 | 
						|
 | 
						|
inputs:
 | 
						|
  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'
 | 
						|
  is_main_branch:
 | 
						|
    description: 'Whether the current branch is the main branch'
 | 
						|
    required: false
 | 
						|
    default: 'false'
 | 
						|
  main_cache_dir:
 | 
						|
    description: 'Path to the main branch cache directory'
 | 
						|
    required: false
 | 
						|
    default: '~/.ccache-main'
 | 
						|
  current_cache_dir:
 | 
						|
    description: 'Path to the current branch cache directory'
 | 
						|
    required: false
 | 
						|
    default: '~/.ccache-current'
 | 
						|
 | 
						|
runs:
 | 
						|
  using: 'composite'
 | 
						|
  steps:
 | 
						|
    - name: Configure ccache
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        # Create cache directories
 | 
						|
        mkdir -p ${{ inputs.main_cache_dir }} ${{ inputs.current_cache_dir }}
 | 
						|
        
 | 
						|
        # Set compiler check globally
 | 
						|
        ccache -o compiler_check=${{ inputs.compiler_check }}
 | 
						|
        
 | 
						|
        # Use a single config file location
 | 
						|
        mkdir -p ~/.ccache
 | 
						|
        export CONF_PATH="$HOME/.ccache/ccache.conf"
 | 
						|
        
 | 
						|
        # Apply common settings
 | 
						|
        echo "max_size = ${{ inputs.max_size }}" > "$CONF_PATH"
 | 
						|
        echo "hash_dir = ${{ inputs.hash_dir }}" >> "$CONF_PATH"
 | 
						|
        echo "compiler_check = ${{ inputs.compiler_check }}" >> "$CONF_PATH"
 | 
						|
        
 | 
						|
        if [ "${{ inputs.is_main_branch }}" == "true" ]; then
 | 
						|
          # Main branch: use main branch cache
 | 
						|
          ccache --set-config=cache_dir="${{ inputs.main_cache_dir }}"
 | 
						|
          echo "CCACHE_DIR=${{ inputs.main_cache_dir }}" >> $GITHUB_ENV
 | 
						|
        else
 | 
						|
          # Feature branch: use current branch cache with main as secondary
 | 
						|
          ccache --set-config=cache_dir="${{ inputs.current_cache_dir }}"
 | 
						|
          ccache --set-config=secondary_storage="file:${{ inputs.main_cache_dir }}"
 | 
						|
          echo "CCACHE_DIR=${{ inputs.current_cache_dir }}" >> $GITHUB_ENV
 | 
						|
        fi
 | 
						|
        
 | 
						|
        ccache -p # Print config for verification
 | 
						|
        ccache -z # Zero statistics before the build |