Skip to content

Commit

Permalink
fix: support both old and new versions of protobuf
Browse files Browse the repository at this point in the history
The version numbering scheme for the protobuf compiler was updated which causes a mismatch warning to appear for versions of cmake less than 3.27.  Later versions of protobuf are bundled with their own copy of abseil.  Since protobuf always required abseil anyway, this fix also updates the code to rely on that instead of our own submodule.  This should lead to greater consistency (especially with new protobuf code leaning on an experimental logging feature that won't be available in older versions of abseil).  If the newer CONFIG-based method of findpackage does not work, we now fall back to the older method of using findpackage.  The version of cmake that we require is still 3.20 as 3.27 isn't available in enough locations to advance to that minimum.
  • Loading branch information
EpsilonPrime committed Jul 8, 2023
1 parent f7a45a6 commit e8a4edb
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 18 deletions.
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
[submodule "third_party/fmt"]
path = third_party/fmt
url = https://github.com/fmtlib/fmt
[submodule "third_party/abseil-cpp"]
path = third_party/abseil-cpp
url = https://github.com/abseil/abseil-cpp.git
[submodule "third_party/datetime"]
path = third_party/datetime
url = https://github.com/HowardHinnant/date.git
Expand Down
17 changes: 13 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,22 @@ option(
"Enable substrait-cpp tests. This will enable all other build options automatically."
ON)

find_package(Protobuf REQUIRED)
include_directories(${PROTOBUF_INCLUDE_DIRS})

add_subdirectory(third_party)
# Local files come first.
include_directories(include)
include_directories(src)

add_subdirectory(third_party)

#find_package(absl REQUIRED)
#include_directories(${ABSL_INCLUDE_DIRS})

find_package(Protobuf REQUIRED CONFIG)
#include_directories(${PROTOBUF_INCLUDE_DIRS})

message(STATUS "include dirs are ${Protobuf_INCLUDE_DIRS}")
message(STATUS "include dirs are ${PROTOBUF_INCLUDE_DIRS}")


list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
include(BuildUtils)

Expand Down
2 changes: 1 addition & 1 deletion src/substrait/proto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ add_library(substrait_proto ${PROTO_SRCS} ${PROTO_HDRS} ProtoUtils.cpp
ProtoUtils.h)

# Include the protobuf library as a dependency to use this class.
target_link_libraries(substrait_proto ${PROTOBUF_LIBRARIES})
target_link_libraries(substrait_proto protobuf::libprotobuf)

# Make sure we can see our own generated include files.
target_include_directories(substrait_proto
Expand Down
2 changes: 1 addition & 1 deletion src/substrait/textplan/converter/LoadBinary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ PlanOrErrors loadFromJson(std::string_view json) {
std::string{usableJson}, &plan);
if (!status.ok()) {
return PlanOrErrors({fmt::format(
"Failed to parse Substrait JSON: {}", status.message().ToString())});
"Failed to parse Substrait JSON: {}", status.message())});
}
return PlanOrErrors(plan);
}
Expand Down
1 change: 0 additions & 1 deletion src/substrait/textplan/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ if(${SUBSTRAIT_CPP_ROUNDTRIP_TESTING})
parse_result_matchers
protobuf-matchers
fmt::fmt-header-only
absl::strings
gmock
gtest
gtest_main)
Expand Down
8 changes: 4 additions & 4 deletions src/substrait/textplan/tests/RoundtripTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
#include <gtest/gtest.h>
#include <protobuf-matchers/protocol-buffer-matchers.h>

#include "absl/strings/str_split.h"
#include "gmock/gmock.h"
#include "substrait/textplan/SymbolTablePrinter.h"
#include "substrait/textplan/converter/LoadBinary.h"
#include "substrait/textplan/converter/ParseBinary.h"
Expand All @@ -28,10 +26,12 @@ namespace io::substrait::textplan {
namespace {

std::string addLineNumbers(const std::string& text) {
std::stringstream input{text};
std::stringstream result;
int lineNum = 0;
for (absl::string_view sp : absl::StrSplit(text, '\n')) {
result << std::setw(4) << ++lineNum << " " << sp << std::endl;
std::string line;
while (std::getline(input, line, '\n')) {
result << std::setw(4) << ++lineNum << " " << line << std::endl;
}
return result.str();
}
Expand Down
3 changes: 0 additions & 3 deletions third_party/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
# SPDX-License-Identifier: Apache-2.0

set(ABSL_PROPAGATE_CXX_STD ON)
add_subdirectory(abseil-cpp)

set(BUILD_TZ_LIB ON)
add_subdirectory(datetime)

Expand Down
1 change: 0 additions & 1 deletion third_party/abseil-cpp
Submodule abseil-cpp deleted from c8a2f9

0 comments on commit e8a4edb

Please sign in to comment.