From 83e475dd09a9803e19898ccc4a36fe0edcbbb202 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:13:42 +0100 Subject: [PATCH 01/20] Use bebe images for Linux --- .github/workflows/cmake.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 818bf11e..6b88fe63 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -29,6 +29,7 @@ jobs: build: name: ${{ matrix.settings.name }} ${{ matrix.configuration }} runs-on: ${{ matrix.settings.os }} + container: ${{ matrix.settings.bebe_image }} strategy: matrix: configuration: [ "Release", "Debug" ] @@ -36,30 +37,35 @@ jobs: - { name: "Ubuntu GCC-12", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.gcc12", compiler: { type: GCC, version: 12, conan: "gcc", cc: "gcc-12", cxx: "g++-12", std: 20 }, lib: "libstdc++11" } - { name: "Ubuntu GCC-13", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.gcc13", compiler: { type: GCC, version: 13, conan: "gcc", cc: "gcc-13", cxx: "g++-13", std: 23 }, lib: "libstdc++11" } - { name: "Ubuntu GCC-14", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.gcc14", compiler: { type: GCC, version: 14, conan: "gcc", cc: "gcc-14", cxx: "g++-14", std: 23 }, lib: "libstdc++11" } - { name: "Ubuntu GCC-15", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.gcc15", compiler: { type: GCC, version: 15, conan: "gcc", cc: "gcc-15", cxx: "g++-15", std: 23 }, lib: "libstdc++11" } - { name: "Ubuntu Clang-14 + libc++", - os: ubuntu-22.04, + os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang14", compiler: { type: CLANG, @@ -73,7 +79,8 @@ jobs: } - { name: "Ubuntu Clang-15 + libc++", - os: ubuntu-22.04, + os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang15", compiler: { type: CLANG, @@ -87,7 +94,8 @@ jobs: } - { name: "Ubuntu Clang-16 + libc++", - os: ubuntu-22.04, + os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang16", compiler: { type: CLANG, @@ -102,6 +110,7 @@ jobs: - { name: "Ubuntu Clang-17 + libc++", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang17", compiler: { type: CLANG, @@ -116,6 +125,7 @@ jobs: - { name: "Ubuntu Clang-18 + libc++", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang18", compiler: { type: CLANG, @@ -130,6 +140,7 @@ jobs: - { name: "Ubuntu Clang-19 + libc++", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang19", compiler: { type: CLANG, @@ -144,6 +155,7 @@ jobs: - { name: "Ubuntu Clang-20 + libc++", os: ubuntu-latest, + bebe_image: "ghcr.io/twon/bebe/bebe:ubuntu.clang20", compiler: { type: CLANG, From 636e7a37f23fc65c936427c925a52eb4b91448a4 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:20:04 +0100 Subject: [PATCH 02/20] Only install compiler when not working with images --- .github/actions/setup-python/action.yml | 6 ++++++ .github/workflows/cmake.yml | 3 +++ 2 files changed, 9 insertions(+) diff --git a/.github/actions/setup-python/action.yml b/.github/actions/setup-python/action.yml index 65948521..39e45c51 100644 --- a/.github/actions/setup-python/action.yml +++ b/.github/actions/setup-python/action.yml @@ -1,10 +1,16 @@ name: 'Setup Python' description: 'Sets up Python and installs requirements (including Conan)' +inputs: + install-python: + description: 'Whether to run actions/setup-python' + default: 'true' + runs: using: "composite" steps: - name: Set up Python + if: inputs.install-python == 'true' uses: actions/setup-python@v5.4.0 with: python-version: '3.13' diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6b88fe63..2cadd868 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -219,6 +219,7 @@ jobs: - uses: actions/checkout@v6.0.2 - name: Install Compiler + if: ${{ !matrix.settings.bebe_image }} uses: ./.github/actions/setup-compiler with: compiler-type: ${{ matrix.settings.compiler.type }} @@ -228,6 +229,8 @@ jobs: - name: Setup Python uses: ./.github/actions/setup-python + with: + install-python: ${{ !matrix.settings.bebe_image }} - name: Cache Conan Restore uses: ./.github/actions/conan-cache-restore From c217c560b55ea19dfa9131db75b91d0a3256dda5 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:26:33 +0100 Subject: [PATCH 03/20] Run from current location --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2cadd868..a17d60aa 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -255,7 +255,7 @@ jobs: - name: Conan Install shell: bash run: | - conan install "${{ github.workspace }}" --build missing -pr:b default + conan install . --build missing -pr:b default - name: Configure CMake (Windows) if: runner.os == 'Windows' From 23357b269c3cc10f7d99d8650fbd2e5888ff8f16 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:31:08 +0100 Subject: [PATCH 04/20] Selectively use sudo onl if available --- .github/actions/setup-conan/action.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-conan/action.yml b/.github/actions/setup-conan/action.yml index ece10ad6..6d17aed2 100644 --- a/.github/actions/setup-conan/action.yml +++ b/.github/actions/setup-conan/action.yml @@ -54,7 +54,11 @@ runs: if [[ "${{ runner.os }}" != "Windows" ]]; then echo "tools.system.package_manager:mode = install" >> .conan2/global.conf - echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf + if command -v sudo >/dev/null 2>&1; then + echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf + else + echo "tools.system.package_manager:sudo = False" >> .conan2/global.conf + fi fi if [[ "${{ inputs.conan-compiler }}" == "clang" && "${{ runner.os }}" == "Linux" ]]; then From 28121f564b0ab9504ed285d22eb464de804c4be1 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:34:27 +0100 Subject: [PATCH 05/20] Use system libstdc++ --- .github/workflows/cmake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index a17d60aa..3ebc3620 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -255,6 +255,7 @@ jobs: - name: Conan Install shell: bash run: | + unset LD_LIBRARY_PATH conan install . --build missing -pr:b default - name: Configure CMake (Windows) From 57ef1d780c4f7464b429057189a2d9cbd23d372e Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:39:32 +0100 Subject: [PATCH 06/20] Log library path --- .github/actions/setup-conan/action.yml | 5 ++++- .github/workflows/cmake.yml | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-conan/action.yml b/.github/actions/setup-conan/action.yml index 6d17aed2..b3c52116 100644 --- a/.github/actions/setup-conan/action.yml +++ b/.github/actions/setup-conan/action.yml @@ -23,6 +23,9 @@ inputs: generator: description: 'CMake generator' default: "Ninja" + package-manager-mode: + description: 'Conan system package manager mode (install, patch, or None)' + default: "install" runs: using: "composite" @@ -53,7 +56,7 @@ runs: echo "tools.cmake.cmaketoolchain:generator = ${{ inputs.generator }}" >> .conan2/global.conf if [[ "${{ runner.os }}" != "Windows" ]]; then - echo "tools.system.package_manager:mode = install" >> .conan2/global.conf + echo "tools.system.package_manager:mode = ${{ inputs.package-manager-mode }}" >> .conan2/global.conf if command -v sudo >/dev/null 2>&1; then echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf else diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 3ebc3620..34b3b398 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -251,11 +251,13 @@ jobs: stdlib: ${{ matrix.settings.lib || '' }} cppstd: ${{ matrix.settings.compiler.std }} generator: "Ninja Multi-Config" + package-manager-mode: "install" - name: Conan Install shell: bash run: | - unset LD_LIBRARY_PATH + echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" + echo "PATH: $PATH" conan install . --build missing -pr:b default - name: Configure CMake (Windows) From 7593dc681f484fda4993f68b6e19785c83b99e09 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 16:45:44 +0100 Subject: [PATCH 07/20] Add diagnostics --- .github/workflows/cmake.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 34b3b398..d3388d4e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -256,8 +256,13 @@ jobs: - name: Conan Install shell: bash run: | - echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - echo "PATH: $PATH" + echo "--- LDD APT-GET ---" + ldd /usr/bin/apt-get + echo "--- LDCONFIG GCC ---" + ldconfig -p | grep libstdc++.so.6 + echo "--- LD.SO.CONF.D ---" + ls /etc/ld.so.conf.d/ + cat /etc/ld.so.conf.d/* || true conan install . --build missing -pr:b default - name: Configure CMake (Windows) From 54a2a23ff23fc13dc8521a146094c144bcbfd865 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 17:10:18 +0100 Subject: [PATCH 08/20] Test global config work around --- .github/workflows/cmake.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index d3388d4e..d1c55e72 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -256,13 +256,11 @@ jobs: - name: Conan Install shell: bash run: | - echo "--- LDD APT-GET ---" - ldd /usr/bin/apt-get - echo "--- LDCONFIG GCC ---" - ldconfig -p | grep libstdc++.so.6 - echo "--- LD.SO.CONF.D ---" - ls /etc/ld.so.conf.d/ - cat /etc/ld.so.conf.d/* || true + # Temporarily remove the conflicting global GCC library config to allow apt-get to work + if [[ -d "/etc/ld.so.conf.d" ]]; then + sudo rm -f /etc/ld.so.conf.d/gcc-releases-gcc-*.conf + sudo ldconfig + fi conan install . --build missing -pr:b default - name: Configure CMake (Windows) From 3c5c33f645394c081ca4bcb77d61adabe9481618 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 17:27:27 +0100 Subject: [PATCH 09/20] Don't use sudo --- .github/workflows/cmake.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index d1c55e72..2bdcd93a 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -258,8 +258,12 @@ jobs: run: | # Temporarily remove the conflicting global GCC library config to allow apt-get to work if [[ -d "/etc/ld.so.conf.d" ]]; then - sudo rm -f /etc/ld.so.conf.d/gcc-releases-gcc-*.conf - sudo ldconfig + SUDO_CMD="" + if command -v sudo >/dev/null 2>&1; then + SUDO_CMD="sudo" + fi + $SUDO_CMD rm -f /etc/ld.so.conf.d/gcc-releases-gcc-*.conf + $SUDO_CMD ldconfig fi conan install . --build missing -pr:b default From 7583b3ef4efe2cd0fa00cf7a38fde557f7813805 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 17:32:00 +0100 Subject: [PATCH 10/20] Install build essentials --- .github/workflows/cmake.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2bdcd93a..66387189 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -264,6 +264,9 @@ jobs: fi $SUDO_CMD rm -f /etc/ld.so.conf.d/gcc-releases-gcc-*.conf $SUDO_CMD ldconfig + + # Ensure the container has basic C/C++ runtime objects and headers + $SUDO_CMD apt-get update && $SUDO_CMD apt-get install -y build-essential fi conan install . --build missing -pr:b default From 2f57211b7153751f63b776ea1796b0e05482deb1 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sat, 16 May 2026 17:46:29 +0100 Subject: [PATCH 11/20] Test compiler symlinks --- .github/actions/setup-conan/action.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-conan/action.yml b/.github/actions/setup-conan/action.yml index b3c52116..59bc5810 100644 --- a/.github/actions/setup-conan/action.yml +++ b/.github/actions/setup-conan/action.yml @@ -65,7 +65,15 @@ runs: fi if [[ "${{ inputs.conan-compiler }}" == "clang" && "${{ runner.os }}" == "Linux" ]]; then - echo "tools.build:compiler_executables = {\"c\": \"clang-${{ inputs.compiler-version }}\", \"cpp\": \"clang++-${{ inputs.compiler-version }}\"}" >> .conan2/global.conf + CC_NAME="clang-${{ inputs.compiler-version }}" + CXX_NAME="clang++-${{ inputs.compiler-version }}" + if ! command -v "$CC_NAME" >/dev/null 2>&1; then + CC_NAME="clang" + fi + if ! command -v "$CXX_NAME" >/dev/null 2>&1; then + CXX_NAME="clang++" + fi + echo "tools.build:compiler_executables = {\"c\": \"$CC_NAME\", \"cpp\": \"$CXX_NAME\"}" >> .conan2/global.conf fi conan profile show -pr default From 0da260590dccc4b56e744ac29720aa8e05c74223 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 09:16:27 +0100 Subject: [PATCH 12/20] Short term work around for libc++ location in bebe image --- .github/workflows/cmake.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 66387189..dc19cdc0 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -267,6 +267,11 @@ jobs: # Ensure the container has basic C/C++ runtime objects and headers $SUDO_CMD apt-get update && $SUDO_CMD apt-get install -y build-essential + + # Install libc++ if needed for Clang + if [[ "${{ matrix.settings.compiler.type }}" == "CLANG" && "${{ matrix.settings.lib }}" == "libc++" ]]; then + $SUDO_CMD apt-get install -y libc++-${{ matrix.settings.compiler.version }}-dev libc++abi-${{ matrix.settings.compiler.version }}-dev + fi fi conan install . --build missing -pr:b default From cb6e3c404dd6841ce287cdb61bf39bb479c1bb81 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 15:40:36 +0100 Subject: [PATCH 13/20] Revert CI workarounds since Bebe image is fixed --- .github/actions/setup-conan/action.yml | 21 +++------------------ .github/workflows/cmake.yml | 17 ----------------- 2 files changed, 3 insertions(+), 35 deletions(-) diff --git a/.github/actions/setup-conan/action.yml b/.github/actions/setup-conan/action.yml index 59bc5810..ece10ad6 100644 --- a/.github/actions/setup-conan/action.yml +++ b/.github/actions/setup-conan/action.yml @@ -23,9 +23,6 @@ inputs: generator: description: 'CMake generator' default: "Ninja" - package-manager-mode: - description: 'Conan system package manager mode (install, patch, or None)' - default: "install" runs: using: "composite" @@ -56,24 +53,12 @@ runs: echo "tools.cmake.cmaketoolchain:generator = ${{ inputs.generator }}" >> .conan2/global.conf if [[ "${{ runner.os }}" != "Windows" ]]; then - echo "tools.system.package_manager:mode = ${{ inputs.package-manager-mode }}" >> .conan2/global.conf - if command -v sudo >/dev/null 2>&1; then - echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf - else - echo "tools.system.package_manager:sudo = False" >> .conan2/global.conf - fi + echo "tools.system.package_manager:mode = install" >> .conan2/global.conf + echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf fi if [[ "${{ inputs.conan-compiler }}" == "clang" && "${{ runner.os }}" == "Linux" ]]; then - CC_NAME="clang-${{ inputs.compiler-version }}" - CXX_NAME="clang++-${{ inputs.compiler-version }}" - if ! command -v "$CC_NAME" >/dev/null 2>&1; then - CC_NAME="clang" - fi - if ! command -v "$CXX_NAME" >/dev/null 2>&1; then - CXX_NAME="clang++" - fi - echo "tools.build:compiler_executables = {\"c\": \"$CC_NAME\", \"cpp\": \"$CXX_NAME\"}" >> .conan2/global.conf + echo "tools.build:compiler_executables = {\"c\": \"clang-${{ inputs.compiler-version }}\", \"cpp\": \"clang++-${{ inputs.compiler-version }}\"}" >> .conan2/global.conf fi conan profile show -pr default diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index dc19cdc0..77ac87c8 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -256,23 +256,6 @@ jobs: - name: Conan Install shell: bash run: | - # Temporarily remove the conflicting global GCC library config to allow apt-get to work - if [[ -d "/etc/ld.so.conf.d" ]]; then - SUDO_CMD="" - if command -v sudo >/dev/null 2>&1; then - SUDO_CMD="sudo" - fi - $SUDO_CMD rm -f /etc/ld.so.conf.d/gcc-releases-gcc-*.conf - $SUDO_CMD ldconfig - - # Ensure the container has basic C/C++ runtime objects and headers - $SUDO_CMD apt-get update && $SUDO_CMD apt-get install -y build-essential - - # Install libc++ if needed for Clang - if [[ "${{ matrix.settings.compiler.type }}" == "CLANG" && "${{ matrix.settings.lib }}" == "libc++" ]]; then - $SUDO_CMD apt-get install -y libc++-${{ matrix.settings.compiler.version }}-dev libc++abi-${{ matrix.settings.compiler.version }}-dev - fi - fi conan install . --build missing -pr:b default - name: Configure CMake (Windows) From c90e71c8854ce6eb46d093d061f0377d4880a42d Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 15:50:58 +0100 Subject: [PATCH 14/20] Ensure installing packages via Conan install still works in images --- .github/actions/setup-conan/action.yml | 4 ++++ .github/workflows/cmake.yml | 1 - .github/workflows/code_coverage.yml | 19 +------------------ .github/workflows/documentation.yml | 1 + 4 files changed, 6 insertions(+), 19 deletions(-) diff --git a/.github/actions/setup-conan/action.yml b/.github/actions/setup-conan/action.yml index ece10ad6..d61b8d55 100644 --- a/.github/actions/setup-conan/action.yml +++ b/.github/actions/setup-conan/action.yml @@ -54,7 +54,11 @@ runs: if [[ "${{ runner.os }}" != "Windows" ]]; then echo "tools.system.package_manager:mode = install" >> .conan2/global.conf + if command -v sudo >/dev/null 2>&1; then echo "tools.system.package_manager:sudo = True" >> .conan2/global.conf + else + echo "tools.system.package_manager:sudo = False" >> .conan2/global.conf + fi fi if [[ "${{ inputs.conan-compiler }}" == "clang" && "${{ runner.os }}" == "Linux" ]]; then diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 77ac87c8..a17d60aa 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -251,7 +251,6 @@ jobs: stdlib: ${{ matrix.settings.lib || '' }} cppstd: ${{ matrix.settings.compiler.std }} generator: "Ninja Multi-Config" - package-manager-mode: "install" - name: Conan Install shell: bash diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 2d58a781..998f6881 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -32,27 +32,10 @@ env: jobs: build: runs-on: ubuntu-latest + container: ghcr.io/twon/bebe/bebe:ubuntu.gcc15 steps: - uses: actions/checkout@v6.0.2 - - name: Install Latest GCC - shell: bash - run: | - sudo apt install -y g++-${{ env.COMPILER_VERSION }} - sudo rm -f /usr/bin/gcc /usr/bin/g++ /usr/bin/gcov - sudo ln -s /usr/bin/gcov-${{ env.COMPILER_VERSION }} /usr/bin/gcov - sudo ln -s /usr/bin/gcc-${{ env.COMPILER_VERSION }} /usr/bin/gcc - sudo ln -s /usr/bin/g++-${{ env.COMPILER_VERSION }} /usr/bin/g++ - - - name: Install Lcov - shell: bash - run: | - wget https://github.com/linux-test-project/lcov/archive/refs/tags/v2.0.tar.gz - tar -xvf v2.0.tar.gz - cd lcov-2.0 && sudo make install && cd .. - sudo perl -MCPAN -e 'install Capture::Tiny' - sudo apt-get install -y libdatetime-perl - - name: Setup Python uses: ./.github/actions/setup-python diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 98bc9ec2..b8d92e2e 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -32,6 +32,7 @@ env: jobs: documentation: runs-on: ubuntu-latest + container: ghcr.io/twon/bebe/bebe:ubuntu.gcc15 steps: - uses: actions/checkout@v6.0.2 From 6dca1aedbc4b4b54cd2e97236446f33544c05229 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 17:06:08 +0100 Subject: [PATCH 15/20] Don't install python when using an image --- .github/workflows/code_coverage.yml | 2 ++ .github/workflows/documentation.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 998f6881..9a41bfc0 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -38,6 +38,8 @@ jobs: - name: Setup Python uses: ./.github/actions/setup-python + with: + install-python: 'false' - name: Cache Conan Restore uses: ./.github/actions/conan-cache-restore diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index b8d92e2e..3d355d37 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -46,6 +46,8 @@ jobs: - name: Setup Python uses: ./.github/actions/setup-python + with: + install-python: 'false' - name: Cache Conan Restore uses: ./.github/actions/conan-cache-restore From 3d340689f52a09aa95be46ba09ea02db5dbb360e Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 17:09:15 +0100 Subject: [PATCH 16/20] Avoid github workspace in image --- .github/workflows/code_coverage.yml | 2 +- .github/workflows/documentation.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 9a41bfc0..87f26d24 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -63,7 +63,7 @@ jobs: - name: Conan Install shell: bash run: | - conan install "${{ github.workspace }}" --build missing + conan install . --build missing - name: Configure CMake shell: bash diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 3d355d37..e5d9400a 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -73,7 +73,7 @@ jobs: - name: Conan Install shell: bash run: | - conan install "${{ github.workspace }}" --build missing -o build_docs=True + conan install . --build missing -o build_docs=True - name: Configure CMake shell: bash From 3bf23b3d22c443ec1a0fabd0ef3d30ee290f3047 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 17:57:11 +0100 Subject: [PATCH 17/20] Add pkgconf to conanfile.py to fix missing pkg-config in Bebe images --- .github/workflows/code_coverage.yml | 2 +- .github/workflows/documentation.yml | 2 +- conanfile.py | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 87f26d24..99bd8bc5 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -27,7 +27,7 @@ on: env: BUILD_TYPE: Debug - COMPILER_VERSION: 12 + COMPILER_VERSION: 15 jobs: build: diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index e5d9400a..636117ca 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -27,7 +27,7 @@ on: env: BUILD_TYPE: Debug - COMPILER_VERSION: 13 + COMPILER_VERSION: 15 jobs: documentation: diff --git a/conanfile.py b/conanfile.py index 465f4fab..1159c19d 100644 --- a/conanfile.py +++ b/conanfile.py @@ -162,6 +162,7 @@ def config_options(self): def build_requirements(self): self.tool_requires("ninja/1.13.2") + self.tool_requires("pkgconf/2.1.0") self.test_requires("catch2/3.13.0") self.test_requires("gtest/1.17.0") From 213d5675200b32c4006aa5a3395cc538148a9734 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 17:59:15 +0100 Subject: [PATCH 18/20] Remove redundant Install Compiler step from documentation workflow since it runs inside Bebe container --- .github/workflows/documentation.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 636117ca..0a0df77f 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -36,13 +36,6 @@ jobs: steps: - uses: actions/checkout@v6.0.2 - - name: Install Compiler - uses: ./.github/actions/setup-compiler - with: - compiler-type: GCC - compiler-version: ${{ env.COMPILER_VERSION }} - stdlib: libstdc++11 - os: Linux - name: Setup Python uses: ./.github/actions/setup-python From c3cf442647e7460a35642adc078ba1c6cc25d1bb Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 18:04:49 +0100 Subject: [PATCH 19/20] Make pkgconf dependency Linux-specific to avoid overhead on Windows and macOS --- .github/workflows/documentation.yml | 1 - conanfile.py | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 0a0df77f..b08137c5 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -36,7 +36,6 @@ jobs: steps: - uses: actions/checkout@v6.0.2 - - name: Setup Python uses: ./.github/actions/setup-python with: diff --git a/conanfile.py b/conanfile.py index 1159c19d..97d80029 100644 --- a/conanfile.py +++ b/conanfile.py @@ -162,10 +162,12 @@ def config_options(self): def build_requirements(self): self.tool_requires("ninja/1.13.2") - self.tool_requires("pkgconf/2.1.0") self.test_requires("catch2/3.13.0") self.test_requires("gtest/1.17.0") + if self.settings.os == "Linux": + self.tool_requires("pkgconf/2.1.0") + if get_cmake_version() < Version("4.3.0"): self.tool_requires("cmake/4.3.0") From 0f7a8c601d26f8a1d0e1c37ebac6c05e3face4aa Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 19:16:05 +0100 Subject: [PATCH 20/20] Add comments --- conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conanfile.py b/conanfile.py index 97d80029..2bbc138c 100644 --- a/conanfile.py +++ b/conanfile.py @@ -166,7 +166,7 @@ def build_requirements(self): self.test_requires("gtest/1.17.0") if self.settings.os == "Linux": - self.tool_requires("pkgconf/2.1.0") + self.tool_requires("pkgconf/2.1.0") # Required for X11 support. if get_cmake_version() < Version("4.3.0"): self.tool_requires("cmake/4.3.0")