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' 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 type: choice options: - libstdcxx - libcxx 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-ga-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.py') }}-${{ inputs.configuration }} restore-keys: | ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.py') }}- ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}- cache-type: Conan - 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 <> ~/.conan2/profiles/default <> ~/.conan2/profiles/default <