From 4354945727948d45eed8f24228f1c4513792b08b Mon Sep 17 00:00:00 2001 From: Derek Bailey Date: Sat, 18 Nov 2023 00:19:03 -0800 Subject: [PATCH] Fix CI builds (#8161) * Update build.yml Upgrade to gcc 13 and clang 15 * switch to __is_trivially_copyable * fix cmake issue and warning about sign comparison * Use libc++ for C++23 on clang for now * Use libc++ for C++23 on clang for now * exclude clang+15 for C++13 builds --- .github/workflows/build.yml | 23 ++++++++++++----------- CMakeLists.txt | 6 +++++- include/flatbuffers/flexbuffers.h | 2 +- tests/test.cpp | 2 +- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3db1f3dc2..b79fe184f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - cxx: [g++-10, clang++-14] + cxx: [g++-13, clang++-15] fail-fast: false steps: - uses: actions/checkout@v3 @@ -58,11 +58,11 @@ jobs: with: files: Linux.flatc.binary.${{ matrix.cxx }}.zip - name: Generate SLSA subjects - clang - if: matrix.cxx == 'clang++-14' && startsWith(github.ref, 'refs/tags/') + if: matrix.cxx == 'clang++-15' && startsWith(github.ref, 'refs/tags/') id: hash-clang run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT - name: Generate SLSA subjects - gcc - if: matrix.cxx == 'g++-10' && startsWith(github.ref, 'refs/tags/') + if: matrix.cxx == 'g++-13' && startsWith(github.ref, 'refs/tags/') id: hash-gcc run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT @@ -72,7 +72,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: cmake - run: CXX=clang++-14 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" . + run: CXX=clang++-15 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" . - name: build run: make -j @@ -86,7 +86,7 @@ jobs: - name: cmake working-directory: build run: > - CXX=clang++-14 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON + CXX=clang++-15 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_BUILD_CPP17=ON -DFLATBUFFERS_CPP_STD=17 - name: build working-directory: build @@ -105,11 +105,12 @@ jobs: fail-fast: false matrix: std: [11, 14, 17, 20, 23] - cxx: [g++-10, clang++-14] + cxx: [g++-13, clang++-15] exclude: - # GCC 10.3.0 doesn't support std 23 - - cxx: g++-10 - std: 23 + # Clang++15 10.3.0 stdlibc++ doesn't fully support std 23 + - cxx: clang++-15 + std: 23 + steps: - uses: actions/checkout@v3 - name: cmake @@ -358,7 +359,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - cxx: [g++-10, clang++-14] + cxx: [g++-13, clang++-15] steps: - uses: actions/checkout@v3 - name: cmake @@ -389,7 +390,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - cxx: [g++-10] + cxx: [g++-13] steps: - uses: actions/checkout@v3 - name: cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a2e83499..fd4418b77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -556,7 +556,11 @@ if(FLATBUFFERS_BUILD_TESTS) # Add a library so there is a single target that the generated samples can # link too. - add_library(flatsample INTERFACE) + if(MSVC) + add_library(flatsample INTERFACE) + else() + add_library(flatsample STATIC) + endif() # Since flatsample has no sources, we have to explicitly set the linker lang. set_target_properties(flatsample PROPERTIES LINKER_LANGUAGE CXX) diff --git a/include/flatbuffers/flexbuffers.h b/include/flatbuffers/flexbuffers.h index 6651157b8..f262558e4 100644 --- a/include/flatbuffers/flexbuffers.h +++ b/include/flatbuffers/flexbuffers.h @@ -1720,7 +1720,7 @@ class Verifier FLATBUFFERS_FINAL_CLASS { max_vectors_(buf_len), check_alignment_(_check_alignment), reuse_tracker_(reuse_tracker) { - FLATBUFFERS_ASSERT(size_ < FLATBUFFERS_MAX_BUFFER_SIZE); + FLATBUFFERS_ASSERT(static_cast(size_) < FLATBUFFERS_MAX_BUFFER_SIZE); if (reuse_tracker_) { reuse_tracker_->clear(); reuse_tracker_->resize(size_, PackedType(BIT_WIDTH_8, FBT_NULL)); diff --git a/tests/test.cpp b/tests/test.cpp index be2811efe..af8cd6347 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -86,7 +86,7 @@ void TriviallyCopyableTest() { // clang-format off #if __GNUG__ && __GNUC__ < 5 && \ !(defined(__clang__) && __clang_major__ >= 16) - TEST_EQ(__has_trivial_copy(Vec3), true); + TEST_EQ(__is_trivially_copyable(Vec3), true); #else #if __cplusplus >= 201103L TEST_EQ(std::is_trivially_copyable::value, true);