Bazel: general improvements. (#1043)

* Bazel: general improvements.

Improve the Bazel build. Attempt to fix previous errors recorded while
trying to publish ftxui in the Bazel Central Registry:
- https://github.com/bazelbuild/bazel-central-registry/pull/4485
- https://buildkite.com/bazel/bcr-presubmit/builds/13601#01968b61-f5b2-4d16-94d0-c87a03a1a23b

Test against "recent" platforms
-------------------------------

Previously, I got the error:
```
gcc: error: unrecognized command line option '-std-c++20'; did you mean '-std-c++2a'?
```
This was due to using old distribution like ubuntu 2004. Test against
newer platforms only to avoid GCC version<-9.x.y

Downgrade gtest version.
------------------------

I suspect this caused the Bazel Central Registry error:
```
file:///workdir/modules/googletest/1.15.2/MODULE.bazel:68:20: name 'use_repo_rule' is not defined
```
Specifying using bazelmod fixes the issue. Thanks @robinlinden

Tag gtest as dev_dependency
---------------------------

Presumably, this should avoid dependants to fetch it?

Enable --features-layering_check
--------------------------------

Aka clang `-Wprivate-header`. Fix the encountered errors.

Use clang in the CI
-------------------

The CI was defining clang/gcc in the matrix, but was not using it. Fix
the bug.
This commit is contained in:
Arthur Sonzogni
2025-05-07 22:41:17 +02:00
committed by GitHub
parent 4604adb502
commit b307a175ed
7 changed files with 135 additions and 72 deletions

View File

@@ -14,25 +14,30 @@ on:
jobs:
test_bazel:
name: "Bazel, ${{ matrix.compiler }}, ${{ matrix.os }}"
name: "Bazel, ${{ matrix.cxx }}, ${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
compiler: gcc
cxx: g++
cc: gcc
- os: ubuntu-latest
compiler: llvm
cxx: clang++
cc: clang
- os: macos-latest
compiler: llvm
cxx: g++
cc: gcc
- os: macos-latest
compiler: gcc
cxx: clang++
cc: clang
- os: windows-latest
compiler: cl
cxx: cl
cc: cl
runs-on: ${{ matrix.os }}
steps:
@@ -40,10 +45,16 @@ jobs:
uses: actions/checkout@v3
- name: "Build with Bazel"
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: bazel build ...
- name: "Tests with Bazel"
run: bazel run tests
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: bazel test --test_output=all ...
test_cmake:
name: "CMake, ${{ matrix.compiler }}, ${{ matrix.os }}"