mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	The check-conanfile-changes logic prevented cache saves on feature branches unless conanfile changed, but this was broken because: 1. Cache keys don't include branch name (shared across branches) 2. S3 immutability makes this unnecessary (first-write-wins) 3. It prevented bootstrap saves on feature branches Also removed unused safe-branch step (dead code from copy-paste)
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: dependencies
 | 
						|
description: 'Installs build dependencies with caching'
 | 
						|
 | 
						|
inputs:
 | 
						|
  configuration:
 | 
						|
    description: 'Build configuration (Debug, Release, etc.)'
 | 
						|
    required: true
 | 
						|
  build_dir:
 | 
						|
    description: 'Directory to build dependencies in'
 | 
						|
    required: false
 | 
						|
    default: '.build'
 | 
						|
  compiler-id:
 | 
						|
    description: 'Unique identifier: compiler-version-stdlib[-gccversion] (e.g. clang-14-libstdcxx-gcc11, gcc-13-libstdcxx)'
 | 
						|
    required: false
 | 
						|
    default: ''
 | 
						|
  cache_version:
 | 
						|
    description: 'Cache version for invalidation'
 | 
						|
    required: false
 | 
						|
    default: '1'
 | 
						|
  cache_enabled:
 | 
						|
    description: 'Whether to use caching'
 | 
						|
    required: false
 | 
						|
    default: 'true'
 | 
						|
  main_branch:
 | 
						|
    description: 'Main branch name for restore keys'
 | 
						|
    required: false
 | 
						|
    default: 'dev'
 | 
						|
  stdlib:
 | 
						|
    description: 'C++ standard library for Conan configuration (note: also in compiler-id)'
 | 
						|
    required: true
 | 
						|
    type: choice
 | 
						|
    options:
 | 
						|
      - libstdcxx
 | 
						|
      - libcxx
 | 
						|
  aws-access-key-id:
 | 
						|
    description: 'AWS Access Key ID for S3 cache storage'
 | 
						|
    required: true
 | 
						|
  aws-secret-access-key:
 | 
						|
    description: 'AWS Secret Access Key for S3 cache storage'
 | 
						|
    required: true
 | 
						|
 | 
						|
outputs:
 | 
						|
  cache-hit:
 | 
						|
    description: 'Whether there was a cache hit'
 | 
						|
    value: ${{ steps.cache-restore-conan.outputs.cache-hit }}
 | 
						|
 | 
						|
runs:
 | 
						|
  using: 'composite'
 | 
						|
  steps:
 | 
						|
 | 
						|
    - name: Restore Conan cache
 | 
						|
      if: inputs.cache_enabled == 'true'
 | 
						|
      id: cache-restore-conan
 | 
						|
      uses: ./.github/actions/xahau-actions-cache-restore
 | 
						|
      with:
 | 
						|
        path: ~/.conan2
 | 
						|
        # Note: compiler-id format is compiler-version-stdlib[-gccversion]
 | 
						|
        key: ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-${{ inputs.configuration }}
 | 
						|
        restore-keys: |
 | 
						|
          ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-
 | 
						|
          ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
 | 
						|
        use-deltas: 'false'
 | 
						|
        aws-access-key-id: ${{ inputs.aws-access-key-id }}
 | 
						|
        aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
 | 
						|
 | 
						|
    - name: Export custom recipes
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        conan export external/snappy --version 1.1.10 --user xahaud --channel stable
 | 
						|
        conan export external/soci --version 4.0.3 --user xahaud --channel stable
 | 
						|
        conan export external/wasmedge --version 0.11.2 --user xahaud --channel stable
 | 
						|
 | 
						|
    - name: Install dependencies
 | 
						|
      shell: bash
 | 
						|
      env:
 | 
						|
        CONAN_REQUEST_TIMEOUT: 180  # Increase timeout to 3 minutes for slow mirrors
 | 
						|
      run: |
 | 
						|
        # Create build directory
 | 
						|
        mkdir -p ${{ inputs.build_dir }}
 | 
						|
        cd ${{ inputs.build_dir }}
 | 
						|
        
 | 
						|
        # Install dependencies using conan
 | 
						|
        conan install \
 | 
						|
          --output-folder . \
 | 
						|
          --build missing \
 | 
						|
          --settings build_type=${{ inputs.configuration }} \
 | 
						|
          ..
 | 
						|
 | 
						|
    - name: Save Conan cache
 | 
						|
      if: always() && inputs.cache_enabled == 'true' && steps.cache-restore-conan.outputs.cache-hit != 'true'
 | 
						|
      uses: ./.github/actions/xahau-actions-cache-save
 | 
						|
      with:
 | 
						|
        path: ~/.conan2
 | 
						|
        key: ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-${{ inputs.configuration }}
 | 
						|
        use-deltas: 'false'
 | 
						|
        aws-access-key-id: ${{ inputs.aws-access-key-id }}
 | 
						|
        aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
 |