mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
refactor: move Conan profile creation after cache restore
PROBLEM: Profile was created before cache restore, then immediately overwritten by cached profile. This meant we were using a potentially stale cached profile instead of fresh configuration. SOLUTION: Move profile creation into dependencies action after restore - Dependencies action now takes compiler params as inputs - Profile created AFTER cache restore (overwrites any cached profile) - Ensures fresh profile with correct compiler settings for each job CHANGES: - Dependencies action: Add inputs (os, arch, compiler, compiler_version, cc, cxx) - Dependencies action: Add 'Configure Conan' step after cache restore - Dependencies action: Support both Linux and macOS profile generation - Nix workflow: Remove 'Configure Conan' step, pass compiler params - macOS workflow: Detect compiler version, pass to dependencies action Benefits: ✅ Profile always fresh and correct for current matrix config ✅ Cache still includes .conan.db and other important files ✅ Self-contained dependencies action (easier to understand) ✅ Works for both Linux (with explicit cc/cxx) and macOS (auto-detect)
This commit is contained in:
74
.github/actions/xahau-ga-dependencies/action.yml
vendored
74
.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
|
||||||
@@ -63,6 +85,58 @@ runs:
|
|||||||
aws-access-key-id: ${{ inputs.aws-access-key-id }}
|
aws-access-key-id: ${{ inputs.aws-access-key-id }}
|
||||||
aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
|
aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
|
||||||
|
|
||||||
|
- 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
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
35
.github/workflows/xahau-ga-macos.yml.disabled
vendored
35
.github/workflows/xahau-ga-macos.yml.disabled
vendored
@@ -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,13 @@ 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
|
||||||
|
aws-access-key-id: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_ACCESS_KEY }}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: ./.github/actions/xahau-ga-build
|
uses: ./.github/actions/xahau-ga-build
|
||||||
|
|||||||
38
.github/workflows/xahau-ga-nix.yml
vendored
38
.github/workflows/xahau-ga-nix.yml
vendored
@@ -238,40 +238,6 @@ jobs:
|
|||||||
hash_dir: true
|
hash_dir: true
|
||||||
compiler_check: content
|
compiler_check: content
|
||||||
|
|
||||||
- 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:"
|
||||||
@@ -292,6 +258,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 }}
|
||||||
aws-access-key-id: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.XAHAUD_GITHUB_ACTIONS_CACHE_NIQ_AWS_ACCESS_KEY }}
|
||||||
|
|||||||
Reference in New Issue
Block a user