mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 10:45:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.6 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 for compiler/version combination used for cache keys'
 | 
						|
    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'
 | 
						|
 | 
						|
outputs:
 | 
						|
  cache-hit:
 | 
						|
    description: 'Whether there was a cache hit'
 | 
						|
    value: ${{ steps.cache-restore-conan.outputs.cache-hit }}
 | 
						|
 | 
						|
runs:
 | 
						|
  using: 'composite'
 | 
						|
  steps:
 | 
						|
    - name: Generate safe branch name
 | 
						|
      if: inputs.cache_enabled == 'true'
 | 
						|
      id: safe-branch
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        SAFE_BRANCH=$(echo "${{ github.ref_name }}" | tr -c 'a-zA-Z0-9_.-' '-')
 | 
						|
        echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
 | 
						|
 | 
						|
    - name: Restore Conan cache
 | 
						|
      if: inputs.cache_enabled == 'true'
 | 
						|
      id: cache-restore-conan
 | 
						|
      uses: actions/cache/restore@v4
 | 
						|
      with:
 | 
						|
        path: |
 | 
						|
          ~/.conan
 | 
						|
          ~/.conan2
 | 
						|
        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 }}-
 | 
						|
 | 
						|
    - name: Export custom recipes
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        conan export external/snappy snappy/1.1.10@xahaud/stable
 | 
						|
        conan export external/soci soci/4.0.3@xahaud/stable
 | 
						|
 | 
						|
    - name: Install dependencies
 | 
						|
      shell: bash
 | 
						|
      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: inputs.cache_enabled == 'true' && steps.cache-restore-conan.outputs.cache-hit != 'true'
 | 
						|
      uses: actions/cache/save@v4
 | 
						|
      with:
 | 
						|
        path: |
 | 
						|
          ~/.conan
 | 
						|
          ~/.conan2
 | 
						|
        key: ${{ steps.cache-restore-conan.outputs.cache-primary-key }}
 |