From 64b285751bde9964fb733fedeceacdb13618b914 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Sat, 8 Apr 2023 19:10:10 +0200 Subject: [PATCH 1/5] CI: do not break files generated by ProtocolBuffers when executing clang-tidy. Added bugprone-redundant-branch-condition and misc-redundant-expression checks --- .clang-tidy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index e906793e1..0ef91e2ec 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -23,6 +23,7 @@ Checks: '-*, bugprone-move-forwarding-reference, bugprone-multiple-statement-macro, bugprone-parent-virtual-call, + bugprone-redundant-branch-condition, bugprone-reserved-identifier, bugprone-sizeof-container, bugprone-sizeof-expression, @@ -70,6 +71,7 @@ Checks: '-*, misc-misplaced-const, misc-new-delete-overloads, misc-non-copyable-objects, + misc-redundant-expression, misc-static-assert, misc-throw-by-value-catch-by-reference, misc-uniqueptr-reset-release, @@ -356,7 +358,7 @@ std::vector::at; - key: google-runtime-int.TypeSuffix value: _t - key: bugprone-reserved-identifier.AllowedIdentifiers - value: '' + value: '_pb;_pbi' - key: modernize-use-emplace.IgnoreImplicitConstructors value: 'false' - key: modernize-use-equals-delete.IgnoreMacros From f7c1d9bf91b88491bc516f984cfbd223fa6d88fa Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Sun, 9 Apr 2023 19:05:32 +0200 Subject: [PATCH 2/5] Replace deprecated vsprintf by vsnprintf --- src/algorithms/libs/rtklib/rtklib_rtkcmn.cc | 4 ++-- src/algorithms/libs/rtklib/rtklib_rtkpos.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc index 53c67fa88..95d08a32a 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc @@ -229,7 +229,7 @@ void fatalerr(const char *format, ...) char msg[1024]; va_list ap; va_start(ap, format); - vsprintf(msg, format, ap); + vsnprintf(msg, 1024, format, ap); va_end(ap); fprintf(stderr, "%s", msg); exit(-9); @@ -4084,7 +4084,7 @@ void trace(int level, const char *format, ...) va_list ap; char buffer[256]; va_start(ap, format); - vsprintf(buffer, format, ap); + vsnprintf(buffer, 256, format, ap); va_end(ap); std::string str(buffer); VLOG(level) << "RTKLIB TRACE[" << level << "]:" << str; diff --git a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc index 2e13bde39..cd8ce552b 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc @@ -504,7 +504,7 @@ void errmsg(rtk_t *rtk, const char *format, ...) time2str(rtk->sol.time, tstr, 2); n = std::snprintf(buff, sizeof(buff), "%s: ", tstr + 11); va_start(ap, format); - n += vsprintf(buff + n, format, ap); + n += vsnprintf(buff + n, 256, format, ap); va_end(ap); n = n < MAXERRMSG - rtk->neb ? n : MAXERRMSG - rtk->neb; memcpy(rtk->errbuf + rtk->neb, buff, n); From 038ded3b5a86e0ecc9e03d5f0f88d5c36a6a7807 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 5 May 2023 13:21:43 +0200 Subject: [PATCH 3/5] Bump local Protocol Buffers version to 22.4. Remove patch applied upstream --- CMakeLists.txt | 2 +- cmake/Modules/BuildProtobuf.cmake | 23 +---------------------- src/tests/data/protobuf22.patch | 12 ------------ 3 files changed, 2 insertions(+), 35 deletions(-) delete mode 100644 src/tests/data/protobuf22.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index 024d573a4..2a4beeb9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -337,7 +337,7 @@ set(GNSSSDR_ARMADILLO_LOCAL_VERSION "12.2.x") set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2") set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0") set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.23") -set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "22.2") +set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "22.4") set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.13") set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0") set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master") diff --git a/cmake/Modules/BuildProtobuf.cmake b/cmake/Modules/BuildProtobuf.cmake index ca8ea19c7..5b7a995eb 100644 --- a/cmake/Modules/BuildProtobuf.cmake +++ b/cmake/Modules/BuildProtobuf.cmake @@ -9,13 +9,11 @@ # abseil-cpp >= 20230117 libraries (see https://github.com/abseil/abseil-cpp) # already installed. Zlib is used if found. # -# Note: requires the patch command if using GCC >= 13 or Clang >= 16 -# # Creates protobuf::libprotobuf and protobuf::protoc imported targets. if(NOT GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION) - set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "22.2") + set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "22.4") endif() if(NOT GNSSSDR_BINARY_DIR) @@ -57,25 +55,6 @@ list(APPEND UTF8_LIBRARIES ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}utf8_range${CMAKE_STATIC_LIBRARY_SUFFIX} ) -# Fix for GCC 13 and Clang 16 -if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "13")) OR - ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "16"))) - find_program(Patch_EXECUTABLE NAME patch PATHS ENV PATH) - if(NOT Patch_EXECUTABLE) - message(FATAL_ERROR "The patch command is not found. It is required to build Protocol Buffers. Please check your OS documentation and install the patch command.") - endif() - set(PROTOBUF_PATCH_COMMAND - cd ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/src/google/protobuf/ && - ${Patch_EXECUTABLE} ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/src/google/protobuf/port.h < ${GNSSSDR_SOURCE_DIR}/src/tests/data/protobuf22.patch - ) - # Patch only once - if(EXISTS ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/src/google/protobuf/port.h) - set(PROTOBUF_PATCH_COMMAND "") - endif() -else() - set(PROTOBUF_PATCH_COMMAND "") -endif() - ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} GIT_REPOSITORY https://github.com/protocolbuffers/protobuf diff --git a/src/tests/data/protobuf22.patch b/src/tests/data/protobuf22.patch deleted file mode 100644 index ac7dd27df..000000000 --- a/src/tests/data/protobuf22.patch +++ /dev/null @@ -1,12 +0,0 @@ -SPDX-License-Identifier: GPL-3.0-or-later -SPDX-FileCopyrightText: 2023 Carles Fernandez-Prades ---- port.h 2023-03-31 11:40:38.000000000 +0100 -+++ port.h 2023-03-31 11:56:49.000000000 +0100 -@@ -38,6 +38,7 @@ - - #include - #include -+#include - #include - #include - #include \ No newline at end of file From 4479c7867b9f2b74eb44166294e7493cb367a66f Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 5 May 2023 18:50:59 +0200 Subject: [PATCH 4/5] Bump local Google Benchmark version to 1.8.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a4beeb9b..3a4f3fd0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,7 +342,7 @@ set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.13") set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0") set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master") set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.0.0") -set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.7.1") +set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.8.0") set(GNSSSDR_MATHJAX_EXTERNAL_VERSION "2.7.7") # Downgrade versions if requirements are not met From d30b87c2c1d5111524bce6fe438be81d705588e6 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 8 May 2023 12:47:00 +0200 Subject: [PATCH 5/5] Make cpplint happy --- src/algorithms/libs/rtklib/rtklib_rtkcmn.cc | 4 ++-- src/algorithms/libs/rtklib/rtklib_rtkpos.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc index 95d08a32a..e21af5d08 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc @@ -229,7 +229,7 @@ void fatalerr(const char *format, ...) char msg[1024]; va_list ap; va_start(ap, format); - vsnprintf(msg, 1024, format, ap); + vsnprintf(msg, sizeof(msg), format, ap); va_end(ap); fprintf(stderr, "%s", msg); exit(-9); @@ -4084,7 +4084,7 @@ void trace(int level, const char *format, ...) va_list ap; char buffer[256]; va_start(ap, format); - vsnprintf(buffer, 256, format, ap); + vsnprintf(buffer, sizeof(buffer), format, ap); va_end(ap); std::string str(buffer); VLOG(level) << "RTKLIB TRACE[" << level << "]:" << str; diff --git a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc index cd8ce552b..8c31aec6b 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc @@ -504,7 +504,7 @@ void errmsg(rtk_t *rtk, const char *format, ...) time2str(rtk->sol.time, tstr, 2); n = std::snprintf(buff, sizeof(buff), "%s: ", tstr + 11); va_start(ap, format); - n += vsnprintf(buff + n, 256, format, ap); + n += vsnprintf(buff + n, sizeof(buff) - n, format, ap); va_end(ap); n = n < MAXERRMSG - rtk->neb ? n : MAXERRMSG - rtk->neb; memcpy(rtk->errbuf + rtk->neb, buff, n);