ci: include stdlib in compiler_id for cache keys

- compiler_id now includes stdlib (e.g. clang-14-libstdcxx)
- Cache keys are self-documenting without redundant stdlib param
- Actions still receive stdlib for Conan/CMake configuration
- Added documentation explaining matrix key purposes
This commit is contained in:
Nicholas Dudfield
2025-08-18 18:37:20 +07:00
parent 0651332bb3
commit df652b457b
3 changed files with 20 additions and 14 deletions

View File

@@ -21,7 +21,7 @@ inputs:
required: false
default: ''
compiler-id:
description: 'Unique identifier for compiler/version combination used for cache keys'
description: 'Unique identifier including compiler/version/stdlib (e.g. clang-14-libstdcxx)'
required: false
default: ''
cache_version:

View File

@@ -10,7 +10,7 @@ inputs:
required: false
default: '.build'
compiler-id:
description: 'Unique identifier for compiler/version combination used for cache keys'
description: 'Unique identifier including compiler/version/stdlib (e.g. clang-14-libstdcxx)'
required: false
default: ''
cache_version:
@@ -26,7 +26,7 @@ inputs:
required: false
default: 'dev'
stdlib:
description: 'C++ standard library - affects cache key'
description: 'C++ standard library for Conan configuration (note: also in compiler-id)'
required: true
type: choice
options:
@@ -57,10 +57,11 @@ runs:
path: |
~/.conan
~/.conan2
key: ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.stdlib }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-${{ inputs.configuration }}
# Note: compiler-id includes stdlib by convention (e.g. clang-14-libstdcxx)
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 }}-${{ inputs.stdlib }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.stdlib }}-
${{ 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

View File

@@ -18,26 +18,31 @@ jobs:
strategy:
fail-fast: false
matrix:
compiler: [clang]
# Matrix configuration:
# - compiler_id: Full identifier with stdlib (e.g. clang-14-libstdcxx) for cache keys
# - compiler: Base compiler family (gcc/clang) for Conan settings
# - cc/cxx: Actual compiler executables
# - compiler_version: Version number for Conan
# - stdlib: Standard library (libstdcxx/libcxx) for Conan/CMake configuration
compiler_id: [clang-14-libstdcxx, clang-16-libstdcxx] # Temporarily disabled: gcc-13-libstdcxx
configuration: [Debug]
include:
# Temporarily disabled for clang testing
# - compiler: gcc
# - compiler_id: gcc-13-libstdcxx
# compiler: gcc
# cc: gcc-13
# cxx: g++-13
# compiler_id: gcc-13
# compiler_version: 13
# stdlib: libstdcxx
- compiler: clang
- compiler_id: clang-14-libstdcxx
compiler: clang
cc: clang-14
cxx: clang++-14
compiler_id: clang-14
compiler_version: 14
stdlib: libstdcxx # Required for clang-14 compatibility
- compiler: clang
- compiler_id: clang-16-libstdcxx
compiler: clang
cc: clang-16
cxx: clang++-16
compiler_id: clang-16
compiler_version: 16
stdlib: libstdcxx # Workaround for missing lexicographical_compare_three_way in libc++
env: