mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-25 21:15:49 +00:00
Compare commits
2 Commits
hook-api-u
...
sublimator
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69e2831ca7 | ||
|
|
8efc02b2d4 |
@@ -1,63 +0,0 @@
|
|||||||
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
|
|
||||||
103
.github/actions/xahau-ga-build/action.yml
vendored
103
.github/actions/xahau-ga-build/action.yml
vendored
@@ -47,6 +47,18 @@ inputs:
|
|||||||
description: 'GCC version to use for Clang toolchain (e.g. 11, 13)'
|
description: 'GCC version to use for Clang toolchain (e.g. 11, 13)'
|
||||||
required: false
|
required: false
|
||||||
default: ''
|
default: ''
|
||||||
|
ccache_max_size:
|
||||||
|
description: 'Maximum ccache size'
|
||||||
|
required: false
|
||||||
|
default: '2G'
|
||||||
|
ccache_hash_dir:
|
||||||
|
description: 'Whether to include directory paths in hash'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
ccache_compiler_check:
|
||||||
|
description: 'How to check compiler for changes'
|
||||||
|
required: false
|
||||||
|
default: 'content'
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'composite'
|
using: 'composite'
|
||||||
@@ -59,21 +71,22 @@ runs:
|
|||||||
SAFE_BRANCH=$(echo "${{ github.ref_name }}" | tr -c 'a-zA-Z0-9_.-' '-')
|
SAFE_BRANCH=$(echo "${{ github.ref_name }}" | tr -c 'a-zA-Z0-9_.-' '-')
|
||||||
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Restore ccache directory for default branch
|
- name: Restore ccache directory for main branch
|
||||||
if: inputs.ccache_enabled == 'true'
|
if: inputs.ccache_enabled == 'true'
|
||||||
id: ccache-restore
|
id: ccache-restore
|
||||||
uses: actions/cache/restore@v4
|
uses: ./.github/actions/xahau-ga-cache-restore
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-main
|
path: ~/.ccache-main
|
||||||
key: ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ inputs.main_branch }}
|
key: ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ inputs.main_branch }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-
|
||||||
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
||||||
|
cache-type: ccache-main
|
||||||
|
|
||||||
- name: Restore ccache directory for current branch
|
- name: Restore ccache directory for current branch
|
||||||
if: inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
if: inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
||||||
id: ccache-restore-current-branch
|
id: ccache-restore-current-branch
|
||||||
uses: actions/cache/restore@v4
|
uses: ./.github/actions/xahau-ga-cache-restore
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-current
|
path: ~/.ccache-current
|
||||||
key: ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ steps.safe-branch.outputs.name }}
|
key: ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ steps.safe-branch.outputs.name }}
|
||||||
@@ -81,6 +94,40 @@ runs:
|
|||||||
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ inputs.main_branch }}
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ inputs.main_branch }}
|
||||||
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-
|
||||||
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
||||||
|
cache-type: ccache-current
|
||||||
|
|
||||||
|
- name: Configure ccache
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Create cache directories
|
||||||
|
mkdir -p ~/.ccache-main ~/.ccache-current
|
||||||
|
|
||||||
|
# Configure ccache settings AFTER cache restore (prevents stale cached config)
|
||||||
|
ccache --set-config=max_size=${{ inputs.ccache_max_size }}
|
||||||
|
ccache --set-config=hash_dir=${{ inputs.ccache_hash_dir }}
|
||||||
|
ccache --set-config=compiler_check=${{ inputs.ccache_compiler_check }}
|
||||||
|
|
||||||
|
# Determine if we're on the main branch
|
||||||
|
if [ "${{ steps.safe-branch.outputs.name }}" = "${{ inputs.main_branch }}" ]; then
|
||||||
|
# Main branch: use main branch cache only
|
||||||
|
ccache --set-config=cache_dir="$HOME/.ccache-main"
|
||||||
|
echo "CCACHE_DIR=$HOME/.ccache-main" >> $GITHUB_ENV
|
||||||
|
echo "📦 Main branch: using ~/.ccache-main"
|
||||||
|
else
|
||||||
|
# Feature branch: use current branch cache with main as secondary (read-only fallback)
|
||||||
|
ccache --set-config=cache_dir="$HOME/.ccache-current"
|
||||||
|
ccache --set-config=secondary_storage="file:$HOME/.ccache-main"
|
||||||
|
echo "CCACHE_DIR=$HOME/.ccache-current" >> $GITHUB_ENV
|
||||||
|
echo "📦 Feature branch: using ~/.ccache-current with ~/.ccache-main as secondary"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Print config for verification
|
||||||
|
echo "=== ccache configuration ==="
|
||||||
|
ccache -p
|
||||||
|
|
||||||
|
# Zero statistics before the build
|
||||||
|
ccache -z
|
||||||
|
|
||||||
- name: Configure project
|
- name: Configure project
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -97,11 +144,24 @@ runs:
|
|||||||
export CXX="${{ inputs.cxx }}"
|
export CXX="${{ inputs.cxx }}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create wrapper toolchain that overlays ccache on top of Conan's toolchain
|
||||||
# Configure ccache launcher args
|
# This enables ccache for the main app build without affecting Conan dependency builds
|
||||||
CCACHE_ARGS=""
|
|
||||||
if [ "${{ inputs.ccache_enabled }}" = "true" ]; then
|
if [ "${{ inputs.ccache_enabled }}" = "true" ]; then
|
||||||
CCACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
|
cat > wrapper_toolchain.cmake <<'EOF'
|
||||||
|
# Include Conan's generated toolchain first (sets compiler, flags, etc.)
|
||||||
|
# Note: CMAKE_CURRENT_LIST_DIR is the directory containing this wrapper (.build/)
|
||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/build/generators/conan_toolchain.cmake)
|
||||||
|
|
||||||
|
# Overlay ccache configuration for main application build
|
||||||
|
# This does NOT affect Conan dependency builds (already completed)
|
||||||
|
set(CMAKE_C_COMPILER_LAUNCHER ccache CACHE STRING "C compiler launcher" FORCE)
|
||||||
|
set(CMAKE_CXX_COMPILER_LAUNCHER ccache CACHE STRING "C++ compiler launcher" FORCE)
|
||||||
|
EOF
|
||||||
|
TOOLCHAIN_FILE="wrapper_toolchain.cmake"
|
||||||
|
echo "✅ Created wrapper toolchain with ccache enabled"
|
||||||
|
else
|
||||||
|
TOOLCHAIN_FILE="build/generators/conan_toolchain.cmake"
|
||||||
|
echo "ℹ️ Using Conan toolchain directly (ccache disabled)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Configure C++ standard library if specified
|
# Configure C++ standard library if specified
|
||||||
@@ -143,31 +203,48 @@ runs:
|
|||||||
# So we get: .build/build/generators/ with our non-standard folder name
|
# So we get: .build/build/generators/ with our non-standard folder name
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-G "${{ inputs.generator }}" \
|
-G "${{ inputs.generator }}" \
|
||||||
$CCACHE_ARGS \
|
|
||||||
${CMAKE_CXX_FLAGS:+-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS"} \
|
${CMAKE_CXX_FLAGS:+-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS"} \
|
||||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} \
|
||||||
-DCMAKE_BUILD_TYPE=${{ inputs.configuration }}
|
-DCMAKE_BUILD_TYPE=${{ inputs.configuration }}
|
||||||
|
|
||||||
|
- name: Show ccache config before build
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "=========================================="
|
||||||
|
echo "ccache configuration before build"
|
||||||
|
echo "=========================================="
|
||||||
|
ccache -p
|
||||||
|
echo ""
|
||||||
|
|
||||||
- name: Build project
|
- name: Build project
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cd ${{ inputs.build_dir }}
|
cd ${{ inputs.build_dir }}
|
||||||
cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc)
|
|
||||||
|
# Check for verbose build flag in commit message
|
||||||
|
VERBOSE_FLAG=""
|
||||||
|
if echo "${XAHAU_GA_COMMIT_MSG}" | grep -q '\[ci-ga-cmake-verbose\]'; then
|
||||||
|
echo "🔊 [ci-ga-cmake-verbose] detected - enabling verbose output"
|
||||||
|
VERBOSE_FLAG="-- -v"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc) ${VERBOSE_FLAG}
|
||||||
|
|
||||||
- name: Show ccache statistics
|
- name: Show ccache statistics
|
||||||
if: inputs.ccache_enabled == 'true'
|
if: inputs.ccache_enabled == 'true'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ccache -s
|
run: ccache -s
|
||||||
|
|
||||||
- name: Save ccache directory for default branch
|
- name: Save ccache directory for main branch
|
||||||
if: always() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name == inputs.main_branch
|
if: success() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name == inputs.main_branch
|
||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-main
|
path: ~/.ccache-main
|
||||||
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
|
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
|
||||||
|
|
||||||
- name: Save ccache directory for current branch
|
- name: Save ccache directory for current branch
|
||||||
if: always() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
if: success() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-current
|
path: ~/.ccache-current
|
||||||
|
|||||||
146
.github/actions/xahau-ga-cache-restore/action.yml
vendored
Normal file
146
.github/actions/xahau-ga-cache-restore/action.yml
vendored
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
name: 'Cache Restore'
|
||||||
|
description: 'Restores cache with optional clearing based on commit message tags'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
path:
|
||||||
|
description: 'A list of files, directories, and wildcard patterns to cache'
|
||||||
|
required: true
|
||||||
|
key:
|
||||||
|
description: 'An explicit key for restoring the cache'
|
||||||
|
required: true
|
||||||
|
restore-keys:
|
||||||
|
description: 'An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
cache-type:
|
||||||
|
description: 'Type of cache (for logging purposes, e.g., "ccache-main", "Conan")'
|
||||||
|
required: false
|
||||||
|
default: 'cache'
|
||||||
|
fail-on-cache-miss:
|
||||||
|
description: 'Fail the workflow if cache entry is not found'
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
|
lookup-only:
|
||||||
|
description: 'Check if a cache entry exists for the given input(s) without downloading it'
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
|
additional-clear-keys:
|
||||||
|
description: 'Additional cache keys to clear (newline separated)'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
cache-hit:
|
||||||
|
description: 'A boolean value to indicate an exact match was found for the primary key'
|
||||||
|
value: ${{ steps.restore-cache.outputs.cache-hit }}
|
||||||
|
cache-primary-key:
|
||||||
|
description: 'The key that was used to restore the cache'
|
||||||
|
value: ${{ steps.restore-cache.outputs.cache-primary-key }}
|
||||||
|
cache-matched-key:
|
||||||
|
description: 'The key that was used to restore the cache (exact or prefix match)'
|
||||||
|
value: ${{ steps.restore-cache.outputs.cache-matched-key }}
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Clear cache if requested via commit message
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
echo "=========================================="
|
||||||
|
echo "${{ inputs.cache-type }} cache clear tag detection"
|
||||||
|
echo "=========================================="
|
||||||
|
echo "Searching for: [ci-ga-clear-cache] or [ci-ga-clear-cache:*]"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
CACHE_KEY="${{ inputs.key }}"
|
||||||
|
|
||||||
|
# Extract search terms if present (e.g., "ccache" from "[ci-ga-clear-cache:ccache]")
|
||||||
|
SEARCH_TERMS=$(echo "${XAHAU_GA_COMMIT_MSG}" | grep -o '\[ci-ga-clear-cache:[^]]*\]' | sed 's/\[ci-ga-clear-cache://;s/\]//' || echo "")
|
||||||
|
|
||||||
|
SHOULD_CLEAR=false
|
||||||
|
|
||||||
|
if [ -n "${SEARCH_TERMS}" ]; then
|
||||||
|
# Search terms provided - check if THIS cache key matches ALL terms (AND logic)
|
||||||
|
echo "🔍 [ci-ga-clear-cache:${SEARCH_TERMS}] detected"
|
||||||
|
echo "Checking if cache key matches search terms..."
|
||||||
|
echo " Cache key: ${CACHE_KEY}"
|
||||||
|
echo " Search terms: ${SEARCH_TERMS}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
MATCHES=true
|
||||||
|
for term in ${SEARCH_TERMS}; do
|
||||||
|
if ! echo "${CACHE_KEY}" | grep -q "${term}"; then
|
||||||
|
MATCHES=false
|
||||||
|
echo " ✗ Key does not contain '${term}'"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo " ✓ Key contains '${term}'"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${MATCHES}" = "true" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "✅ Cache key matches all search terms - will clear cache"
|
||||||
|
SHOULD_CLEAR=true
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "⏭️ Cache key doesn't match search terms - skipping cache clear"
|
||||||
|
fi
|
||||||
|
elif echo "${XAHAU_GA_COMMIT_MSG}" | grep -q '\[ci-ga-clear-cache\]'; then
|
||||||
|
# No search terms - always clear this job's cache
|
||||||
|
echo "🗑️ [ci-ga-clear-cache] detected in commit message"
|
||||||
|
echo "Clearing ${{ inputs.cache-type }} cache for key: ${CACHE_KEY}"
|
||||||
|
SHOULD_CLEAR=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${SHOULD_CLEAR}" = "true" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Deleting ${{ inputs.cache-type }} caches via GitHub API..."
|
||||||
|
|
||||||
|
# Delete primary cache key
|
||||||
|
echo "Checking for cache: ${CACHE_KEY}"
|
||||||
|
if gh cache list --key "${CACHE_KEY}" --json key --jq '.[].key' | grep -q "${CACHE_KEY}"; then
|
||||||
|
echo " Deleting: ${CACHE_KEY}"
|
||||||
|
gh cache delete "${CACHE_KEY}" || true
|
||||||
|
echo " ✓ Deleted"
|
||||||
|
else
|
||||||
|
echo " ℹ️ Not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Delete additional keys if provided
|
||||||
|
if [ -n "${{ inputs.additional-clear-keys }}" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Checking additional keys..."
|
||||||
|
while IFS= read -r key; do
|
||||||
|
[ -z "${key}" ] && continue
|
||||||
|
echo "Checking for cache: ${key}"
|
||||||
|
if gh cache list --key "${key}" --json key --jq '.[].key' | grep -q "${key}"; then
|
||||||
|
echo " Deleting: ${key}"
|
||||||
|
gh cache delete "${key}" || true
|
||||||
|
echo " ✓ Deleted"
|
||||||
|
else
|
||||||
|
echo " ℹ️ Not found"
|
||||||
|
fi
|
||||||
|
done <<< "${{ inputs.additional-clear-keys }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ ${{ inputs.cache-type }} cache cleared successfully"
|
||||||
|
echo "Build will proceed from scratch"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "ℹ️ No ${{ inputs.cache-type }} cache clear requested"
|
||||||
|
fi
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
- name: Restore cache
|
||||||
|
id: restore-cache
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
with:
|
||||||
|
path: ${{ inputs.path }}
|
||||||
|
key: ${{ inputs.key }}
|
||||||
|
restore-keys: ${{ inputs.restore-keys }}
|
||||||
|
fail-on-cache-miss: ${{ inputs.fail-on-cache-miss }}
|
||||||
|
lookup-only: ${{ inputs.lookup-only }}
|
||||||
119
.github/actions/xahau-ga-dependencies/action.yml
vendored
119
.github/actions/xahau-ga-dependencies/action.yml
vendored
@@ -25,6 +25,28 @@ inputs:
|
|||||||
description: 'Main branch name for restore keys'
|
description: 'Main branch name for restore keys'
|
||||||
required: false
|
required: false
|
||||||
default: 'dev'
|
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:
|
stdlib:
|
||||||
description: 'C++ standard library for Conan configuration (note: also in compiler-id)'
|
description: 'C++ standard library for Conan configuration (note: also in compiler-id)'
|
||||||
required: true
|
required: true
|
||||||
@@ -41,47 +63,70 @@ outputs:
|
|||||||
runs:
|
runs:
|
||||||
using: 'composite'
|
using: 'composite'
|
||||||
steps:
|
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: Check conanfile changes
|
|
||||||
if: inputs.cache_enabled == 'true'
|
|
||||||
id: check-conanfile-changes
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# Check if we're on the main branch
|
|
||||||
if [ "${{ github.ref_name }}" == "${{ inputs.main_branch }}" ]; then
|
|
||||||
echo "should-save-conan-cache=true" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
# Fetch main branch for comparison
|
|
||||||
git fetch origin ${{ inputs.main_branch }}
|
|
||||||
|
|
||||||
# Check if conanfile.txt or conanfile.py has changed compared to main branch
|
|
||||||
if git diff --quiet origin/${{ inputs.main_branch }}..HEAD -- '**/conanfile.txt' '**/conanfile.py'; then
|
|
||||||
echo "should-save-conan-cache=false" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "should-save-conan-cache=true" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Restore Conan cache
|
- name: Restore Conan cache
|
||||||
if: inputs.cache_enabled == 'true'
|
if: inputs.cache_enabled == 'true'
|
||||||
id: cache-restore-conan
|
id: cache-restore-conan
|
||||||
uses: actions/cache/restore@v4
|
uses: ./.github/actions/xahau-ga-cache-restore
|
||||||
with:
|
with:
|
||||||
path: |
|
path: ~/.conan2
|
||||||
~/.conan
|
|
||||||
~/.conan2
|
|
||||||
# Note: compiler-id format is compiler-version-stdlib[-gccversion]
|
# 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 }}
|
key: ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.py') }}-${{ inputs.configuration }}
|
||||||
restore-keys: |
|
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 }}-${{ hashFiles('**/conanfile.py') }}-
|
||||||
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
${{ 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 <<EOF
|
||||||
|
[settings]
|
||||||
|
arch=${{ inputs.arch }}
|
||||||
|
build_type=${{ inputs.configuration }}
|
||||||
|
compiler=${{ inputs.compiler }}
|
||||||
|
compiler.cppstd=20
|
||||||
|
compiler.libcxx=${LIBCXX}
|
||||||
|
compiler.version=${{ inputs.compiler_version }}
|
||||||
|
os=${{ inputs.os }}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Add buildenv and conf sections for Linux (not needed for macOS)
|
||||||
|
if [ "${{ inputs.os }}" = "Linux" ] && [ -n "${{ inputs.cc }}" ]; then
|
||||||
|
cat >> ~/.conan2/profiles/default <<EOF
|
||||||
|
|
||||||
|
[buildenv]
|
||||||
|
CC=/usr/bin/${{ inputs.cc }}
|
||||||
|
CXX=/usr/bin/${{ inputs.cxx }}
|
||||||
|
|
||||||
|
[conf]
|
||||||
|
tools.build:compiler_executables={"c": "/usr/bin/${{ inputs.cc }}", "cpp": "/usr/bin/${{ inputs.cxx }}"}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add macOS-specific conf if needed
|
||||||
|
if [ "${{ inputs.os }}" = "Macos" ]; then
|
||||||
|
cat >> ~/.conan2/profiles/default <<EOF
|
||||||
|
|
||||||
|
[conf]
|
||||||
|
# Workaround for gRPC with newer Apple Clang
|
||||||
|
tools.build:cxxflags=["-Wno-missing-template-arg-list-after-template-kw"]
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display profile for verification
|
||||||
|
conan profile show
|
||||||
|
|
||||||
- name: Export custom recipes
|
- name: Export custom recipes
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -107,10 +152,8 @@ runs:
|
|||||||
..
|
..
|
||||||
|
|
||||||
- name: Save Conan cache
|
- name: Save Conan cache
|
||||||
if: always() && inputs.cache_enabled == 'true' && steps.cache-restore-conan.outputs.cache-hit != 'true' && steps.check-conanfile-changes.outputs.should-save-conan-cache == 'true'
|
if: success() && inputs.cache_enabled == 'true' && steps.cache-restore-conan.outputs.cache-hit != 'true'
|
||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: |
|
path: ~/.conan2
|
||||||
~/.conan
|
|
||||||
~/.conan2
|
|
||||||
key: ${{ steps.cache-restore-conan.outputs.cache-primary-key }}
|
key: ${{ steps.cache-restore-conan.outputs.cache-primary-key }}
|
||||||
|
|||||||
74
.github/actions/xahau-ga-get-commit-message/action.yml
vendored
Normal file
74
.github/actions/xahau-ga-get-commit-message/action.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
name: 'Get Commit Message'
|
||||||
|
description: 'Gets commit message for both push and pull_request events and sets XAHAU_GA_COMMIT_MSG env var'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
event-name:
|
||||||
|
description: 'The event name (push or pull_request)'
|
||||||
|
required: true
|
||||||
|
head-commit-message:
|
||||||
|
description: 'The head commit message (for push events)'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
pr-head-sha:
|
||||||
|
description: 'The PR head SHA (for pull_request events)'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Get commit message and set environment variable
|
||||||
|
shell: python
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import secrets
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
event_name = "${{ inputs.event-name }}"
|
||||||
|
pr_head_sha = "${{ inputs.pr-head-sha }}"
|
||||||
|
repository = "${{ github.repository }}"
|
||||||
|
|
||||||
|
print("==========================================")
|
||||||
|
print("Setting XAHAU_GA_COMMIT_MSG environment variable")
|
||||||
|
print("==========================================")
|
||||||
|
print(f"Event: {event_name}")
|
||||||
|
|
||||||
|
if event_name == 'push':
|
||||||
|
# For push events, use the input directly
|
||||||
|
message = """${{ inputs.head-commit-message }}"""
|
||||||
|
print("Source: workflow input (github.event.head_commit.message)")
|
||||||
|
elif event_name == 'pull_request' and pr_head_sha:
|
||||||
|
# For PR events, fetch via GitHub API
|
||||||
|
print(f"Source: GitHub API (fetching commit {pr_head_sha})")
|
||||||
|
try:
|
||||||
|
url = f"https://api.github.com/repos/{repository}/commits/{pr_head_sha}"
|
||||||
|
req = urllib.request.Request(url, headers={
|
||||||
|
"Accept": "application/vnd.github.v3+json",
|
||||||
|
"Authorization": f"Bearer {os.environ.get('GH_TOKEN', '')}"
|
||||||
|
})
|
||||||
|
with urllib.request.urlopen(req) as response:
|
||||||
|
data = json.load(response)
|
||||||
|
message = data["commit"]["message"]
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Failed to fetch commit message: {e}")
|
||||||
|
message = ""
|
||||||
|
else:
|
||||||
|
message = ""
|
||||||
|
print(f"Warning: Unknown event type: {event_name}")
|
||||||
|
|
||||||
|
print(f"Commit message (first 100 chars): {message[:100]}")
|
||||||
|
|
||||||
|
# Write to GITHUB_ENV using heredoc with random delimiter (prevents injection attacks)
|
||||||
|
# See: https://securitylab.github.com/resources/github-actions-untrusted-input/
|
||||||
|
delimiter = f"EOF_{secrets.token_hex(16)}"
|
||||||
|
|
||||||
|
with open(os.environ['GITHUB_ENV'], 'a') as f:
|
||||||
|
f.write(f'XAHAU_GA_COMMIT_MSG<<{delimiter}\n')
|
||||||
|
f.write(message)
|
||||||
|
f.write(f'\n{delimiter}\n')
|
||||||
|
|
||||||
|
print(f"✓ XAHAU_GA_COMMIT_MSG set (available to all subsequent steps)")
|
||||||
|
print("==========================================")
|
||||||
52
.github/workflows/xahau-ga-macos.yml
vendored
52
.github/workflows/xahau-ga-macos.yml
vendored
@@ -24,12 +24,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
build_dir: .build
|
build_dir: .build
|
||||||
# Bump this number to invalidate all caches globally.
|
# Bump this number to invalidate all caches globally.
|
||||||
CACHE_VERSION: 1
|
CACHE_VERSION: 3
|
||||||
MAIN_BRANCH_NAME: dev
|
MAIN_BRANCH_NAME: dev
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get commit message
|
||||||
|
id: get-commit-message
|
||||||
|
uses: ./.github/actions/xahau-ga-get-commit-message
|
||||||
|
with:
|
||||||
|
event-name: ${{ github.event_name }}
|
||||||
|
head-commit-message: ${{ github.event.head_commit.message }}
|
||||||
|
pr-head-sha: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Install Conan
|
- name: Install Conan
|
||||||
run: |
|
run: |
|
||||||
brew install conan
|
brew install conan
|
||||||
@@ -78,14 +86,6 @@ jobs:
|
|||||||
- name: Install ccache
|
- name: Install ccache
|
||||||
run: brew install ccache
|
run: brew install ccache
|
||||||
|
|
||||||
- name: Configure ccache
|
|
||||||
uses: ./.github/actions/xahau-configure-ccache
|
|
||||||
with:
|
|
||||||
max_size: 2G
|
|
||||||
hash_dir: true
|
|
||||||
compiler_check: content
|
|
||||||
is_main_branch: ${{ github.ref_name == env.MAIN_BRANCH_NAME }}
|
|
||||||
|
|
||||||
- name: Check environment
|
- name: Check environment
|
||||||
run: |
|
run: |
|
||||||
echo "PATH:"
|
echo "PATH:"
|
||||||
@@ -98,32 +98,12 @@ jobs:
|
|||||||
echo "---- Full Environment ----"
|
echo "---- Full Environment ----"
|
||||||
env
|
env
|
||||||
|
|
||||||
- name: Configure Conan
|
- name: Detect compiler version
|
||||||
|
id: detect-compiler
|
||||||
run: |
|
run: |
|
||||||
# Create the default profile directory if it doesn't exist
|
|
||||||
mkdir -p ~/.conan2/profiles
|
|
||||||
|
|
||||||
# Detect compiler version
|
|
||||||
COMPILER_VERSION=$(clang --version | grep -oE 'version [0-9]+' | grep -oE '[0-9]+')
|
COMPILER_VERSION=$(clang --version | grep -oE 'version [0-9]+' | grep -oE '[0-9]+')
|
||||||
|
echo "compiler_version=${COMPILER_VERSION}" >> $GITHUB_OUTPUT
|
||||||
# Create profile with our specific settings
|
echo "Detected Apple Clang version: ${COMPILER_VERSION}"
|
||||||
cat > ~/.conan2/profiles/default <<EOF
|
|
||||||
[settings]
|
|
||||||
arch=armv8
|
|
||||||
build_type=Release
|
|
||||||
compiler=apple-clang
|
|
||||||
compiler.cppstd=20
|
|
||||||
compiler.libcxx=libc++
|
|
||||||
compiler.version=${COMPILER_VERSION}
|
|
||||||
os=Macos
|
|
||||||
|
|
||||||
[conf]
|
|
||||||
# Workaround for gRPC with newer Apple Clang
|
|
||||||
tools.build:cxxflags=["-Wno-missing-template-arg-list-after-template-kw"]
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Display profile for verification
|
|
||||||
conan profile show
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
uses: ./.github/actions/xahau-ga-dependencies
|
uses: ./.github/actions/xahau-ga-dependencies
|
||||||
@@ -133,6 +113,11 @@ jobs:
|
|||||||
compiler-id: clang
|
compiler-id: clang
|
||||||
cache_version: ${{ env.CACHE_VERSION }}
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
os: Macos
|
||||||
|
arch: armv8
|
||||||
|
compiler: apple-clang
|
||||||
|
compiler_version: ${{ steps.detect-compiler.outputs.compiler_version }}
|
||||||
|
stdlib: libcxx
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: ./.github/actions/xahau-ga-build
|
uses: ./.github/actions/xahau-ga-build
|
||||||
@@ -143,6 +128,7 @@ jobs:
|
|||||||
compiler-id: clang
|
compiler-id: clang
|
||||||
cache_version: ${{ env.CACHE_VERSION }}
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
stdlib: libcxx
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
79
.github/workflows/xahau-ga-nix.yml
vendored
79
.github/workflows/xahau-ga-nix.yml
vendored
@@ -22,9 +22,12 @@ jobs:
|
|||||||
- name: Generate build matrix
|
- name: Generate build matrix
|
||||||
id: set-matrix
|
id: set-matrix
|
||||||
shell: python
|
shell: python
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
run: |
|
run: |
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
# Full matrix with all 6 compiler configurations
|
# Full matrix with all 6 compiler configurations
|
||||||
# Each configuration includes all parameters needed by the build job
|
# Each configuration includes all parameters needed by the build job
|
||||||
@@ -99,13 +102,31 @@ jobs:
|
|||||||
ref = "${{ github.ref }}"
|
ref = "${{ github.ref }}"
|
||||||
base_ref = "${{ github.base_ref }}" # For PRs, this is the target branch
|
base_ref = "${{ github.base_ref }}" # For PRs, this is the target branch
|
||||||
event_name = "${{ github.event_name }}"
|
event_name = "${{ github.event_name }}"
|
||||||
commit_message = """${{ github.event.head_commit.message }}"""
|
|
||||||
pr_title = """${{ github.event.pull_request.title }}"""
|
pr_title = """${{ github.event.pull_request.title }}"""
|
||||||
|
pr_head_sha = "${{ github.event.pull_request.head.sha }}"
|
||||||
|
|
||||||
|
# Get commit message - for PRs, fetch via API since head_commit.message is empty
|
||||||
|
if event_name == "pull_request" and pr_head_sha:
|
||||||
|
try:
|
||||||
|
url = f"https://api.github.com/repos/${{ github.repository }}/commits/{pr_head_sha}"
|
||||||
|
req = urllib.request.Request(url, headers={
|
||||||
|
"Accept": "application/vnd.github.v3+json",
|
||||||
|
"Authorization": f"Bearer {os.environ.get('GH_TOKEN', '')}"
|
||||||
|
})
|
||||||
|
with urllib.request.urlopen(req) as response:
|
||||||
|
data = json.load(response)
|
||||||
|
commit_message = data["commit"]["message"]
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Failed to fetch commit message: {e}")
|
||||||
|
commit_message = ""
|
||||||
|
else:
|
||||||
|
commit_message = """${{ github.event.head_commit.message }}"""
|
||||||
|
|
||||||
# Debug logging
|
# Debug logging
|
||||||
print(f"Event: {event_name}")
|
print(f"Event: {event_name}")
|
||||||
print(f"Ref: {ref}")
|
print(f"Ref: {ref}")
|
||||||
print(f"Base ref: {base_ref}")
|
print(f"Base ref: {base_ref}")
|
||||||
|
print(f"PR head SHA: {pr_head_sha}")
|
||||||
print(f"PR title: {pr_title}")
|
print(f"PR title: {pr_title}")
|
||||||
print(f"Commit message: {commit_message}")
|
print(f"Commit message: {commit_message}")
|
||||||
|
|
||||||
@@ -156,12 +177,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
build_dir: .build
|
build_dir: .build
|
||||||
# Bump this number to invalidate all caches globally.
|
# Bump this number to invalidate all caches globally.
|
||||||
CACHE_VERSION: 2
|
CACHE_VERSION: 3
|
||||||
MAIN_BRANCH_NAME: dev
|
MAIN_BRANCH_NAME: dev
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get commit message
|
||||||
|
id: get-commit-message
|
||||||
|
uses: ./.github/actions/xahau-ga-get-commit-message
|
||||||
|
with:
|
||||||
|
event-name: ${{ github.event_name }}
|
||||||
|
head-commit-message: ${{ github.event.head_commit.message }}
|
||||||
|
pr-head-sha: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
@@ -231,48 +260,6 @@ jobs:
|
|||||||
# Install Conan 2
|
# Install Conan 2
|
||||||
pip install --upgrade "conan>=2.0,<3"
|
pip install --upgrade "conan>=2.0,<3"
|
||||||
|
|
||||||
- name: Configure ccache
|
|
||||||
uses: ./.github/actions/xahau-configure-ccache
|
|
||||||
with:
|
|
||||||
max_size: 2G
|
|
||||||
hash_dir: true
|
|
||||||
compiler_check: content
|
|
||||||
is_main_branch: ${{ github.ref_name == env.MAIN_BRANCH_NAME }}
|
|
||||||
|
|
||||||
- name: Configure Conan
|
|
||||||
run: |
|
|
||||||
# Create the default profile directory if it doesn't exist
|
|
||||||
mkdir -p ~/.conan2/profiles
|
|
||||||
|
|
||||||
# Determine the correct libcxx based on stdlib parameter
|
|
||||||
if [ "${{ matrix.stdlib }}" = "libcxx" ]; then
|
|
||||||
LIBCXX="libc++"
|
|
||||||
else
|
|
||||||
LIBCXX="libstdc++11"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create profile with our specific settings
|
|
||||||
cat > ~/.conan2/profiles/default <<EOF
|
|
||||||
[settings]
|
|
||||||
arch=x86_64
|
|
||||||
build_type=${{ matrix.configuration }}
|
|
||||||
compiler=${{ matrix.compiler }}
|
|
||||||
compiler.cppstd=20
|
|
||||||
compiler.libcxx=${LIBCXX}
|
|
||||||
compiler.version=${{ matrix.compiler_version }}
|
|
||||||
os=Linux
|
|
||||||
|
|
||||||
[buildenv]
|
|
||||||
CC=/usr/bin/${{ matrix.cc }}
|
|
||||||
CXX=/usr/bin/${{ matrix.cxx }}
|
|
||||||
|
|
||||||
[conf]
|
|
||||||
tools.build:compiler_executables={"c": "/usr/bin/${{ matrix.cc }}", "cpp": "/usr/bin/${{ matrix.cxx }}"}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Display profile for verification
|
|
||||||
conan profile show
|
|
||||||
|
|
||||||
- name: Check environment
|
- name: Check environment
|
||||||
run: |
|
run: |
|
||||||
echo "PATH:"
|
echo "PATH:"
|
||||||
@@ -293,6 +280,10 @@ jobs:
|
|||||||
compiler-id: ${{ matrix.compiler_id }}
|
compiler-id: ${{ matrix.compiler_id }}
|
||||||
cache_version: ${{ env.CACHE_VERSION }}
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
compiler: ${{ matrix.compiler }}
|
||||||
|
compiler_version: ${{ matrix.compiler_version }}
|
||||||
|
cc: ${{ matrix.cc }}
|
||||||
|
cxx: ${{ matrix.cxx }}
|
||||||
stdlib: ${{ matrix.stdlib }}
|
stdlib: ${{ matrix.stdlib }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
|
|||||||
Reference in New Issue
Block a user