-
Notifications
You must be signed in to change notification settings - Fork 81
Open
Description
Hi,
On openSUSE Tumbleweed, where we have protobuf 30.2 already, libArcus fails to build. Here is the build log showing compilation errors:
Here is a patch (courtesy Dominique Leuenberger) that fixes building libArcus with protobuf 30.x. Please consider incorporating this. Thanks in advance.
Index: libArcus-4.13/python/PythonMessage.cpp
===================================================================
--- libArcus-4.13.orig/python/PythonMessage.cpp
+++ libArcus-4.13/python/PythonMessage.cpp
@@ -47,7 +47,7 @@ PythonMessage::~PythonMessage()
std::string Arcus::PythonMessage::getTypeName() const
{
- return _message->GetTypeName();
+ return std::string(_message->GetTypeName());
}
MessagePtr Arcus::PythonMessage::getSharedMessage() const
Index: libArcus-4.13/src/MessageTypeStore.cpp
===================================================================
--- libArcus-4.13.orig/src/MessageTypeStore.cpp
+++ libArcus-4.13/src/MessageTypeStore.cpp
@@ -21,6 +21,8 @@
#include <unordered_map>
#include <sstream>
#include <iostream>
+#include <string_view>
+#include <cstdint>
#include <google/protobuf/dynamic_message.h>
#include <google/protobuf/compiler/importer.h>
@@ -34,16 +36,18 @@ using namespace Arcus;
* of std::hash differs between compilers, we need to make sure we use the same
* implementation everywhere.
*/
-uint32_t hash(const std::string& input)
+uint32_t hash(std::string_view input)
{
- const char* data = input.c_str();
- uint32_t length = input.size();
- uint32_t result = static_cast<uint32_t>(2166136261UL);
- for(; length; --length)
+ const char* data = input.data();
+ uint32_t length = static_cast<uint32_t>(input.size());
+ uint32_t result = 2166136261u;
+
+ for (; length; --length)
{
result ^= static_cast<uint32_t>(*data++);
- result *= static_cast<uint32_t>(16777619UL);
+ result *= 16777619u;
}
+
return result;
}
Index: libArcus-4.13/src/MessageTypeStore.h
===================================================================
--- libArcus-4.13.orig/src/MessageTypeStore.h
+++ libArcus-4.13/src/MessageTypeStore.h
@@ -20,6 +20,7 @@
#define ARCUS_MESSAGE_TYPE_STORE_H
#include <memory>
+#include <cstdint>
#include "ArcusExport.h"
#include "Types.h"
Index: libArcus-4.13/src/Types.h
===================================================================
--- libArcus-4.13.orig/src/Types.h
+++ libArcus-4.13/src/Types.h
@@ -20,6 +20,7 @@
#define ARCUS_TYPES_H
#include <string>
+#include <cstdint>
#include <memory>
namespace google
Index: libArcus-4.13/src/PlatformSocket_p.h
===================================================================
--- libArcus-4.13.orig/src/PlatformSocket_p.h
+++ libArcus-4.13/src/PlatformSocket_p.h
@@ -21,6 +21,7 @@
#include <memory>
#include <string>
+#include <cstdint>
namespace Arcus
{
Metadata
Metadata
Assignees
Labels
No labels