From: Fabrice Fontaine Date: Sat, 23 Jun 2018 16:40:18 +0000 (+0200) Subject: protobuf-c: fix build with protobuf 3.6 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d479ef78fddc2454f171d3c58a0d09a356d9d3e4;p=buildroot.git protobuf-c: fix build with protobuf 3.6 Add two patches retrieved from upstream Fixes: - http://autobuild.buildroot.net/results/26b84f2614f75ac101078a59afeb63bc4c0d28b7 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- diff --git a/package/protobuf-c/0001-Add-std-to-some-types.patch b/package/protobuf-c/0001-Add-std-to-some-types.patch new file mode 100644 index 0000000000..8f1a5d0be0 --- /dev/null +++ b/package/protobuf-c/0001-Add-std-to-some-types.patch @@ -0,0 +1,110 @@ +From 034e603d2a5e629c1c3fbac405638f8afb3ead51 Mon Sep 17 00:00:00 2001 +From: Fredrik Gustafsson +Date: Sun, 11 Mar 2018 08:57:46 +0100 +Subject: [PATCH] Add std:: to some types + +This is required for compilation to succeed on debian jessie with g++ +6.3.0. + +Signed-off-by: Fabrice Fontaine +[Retrieved from: https://github.com/protobuf-c/protobuf-c/pull/309] +--- + protoc-c/c_file.h | 2 +- + protoc-c/c_generator.cc | 8 ++++---- + protoc-c/c_helpers.cc | 12 ++++++------ + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/protoc-c/c_file.h b/protoc-c/c_file.h +index ed38ce4..84df522 100644 +--- a/protoc-c/c_file.h ++++ b/protoc-c/c_file.h +@@ -104,7 +104,7 @@ class FileGenerator { + scoped_array > extension_generators_; + + // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. +- vector package_parts_; ++ std::vector package_parts_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); + }; +diff --git a/protoc-c/c_generator.cc b/protoc-c/c_generator.cc +index a0d0cb6..79a272f 100644 +--- a/protoc-c/c_generator.cc ++++ b/protoc-c/c_generator.cc +@@ -80,13 +80,13 @@ namespace c { + // "foo=bar,baz,qux=corge" + // parses to the pairs: + // ("foo", "bar"), ("baz", ""), ("qux", "corge") +-void ParseOptions(const string& text, vector >* output) { +- vector parts; ++void ParseOptions(const string& text, std::vector >* output) { ++ std::vector parts; + SplitStringUsing(text, ",", &parts); + + for (unsigned i = 0; i < parts.size(); i++) { + string::size_type equals_pos = parts[i].find_first_of('='); +- pair value; ++ std::pair value; + if (equals_pos == string::npos) { + value.first = parts[i]; + value.second = ""; +@@ -105,7 +105,7 @@ bool CGenerator::Generate(const FileDescriptor* file, + const string& parameter, + OutputDirectory* output_directory, + string* error) const { +- vector > options; ++ std::vector > options; + ParseOptions(parameter, &options); + + // ----------------------------------------------------------------- +diff --git a/protoc-c/c_helpers.cc b/protoc-c/c_helpers.cc +index b79b5b0..71b8682 100644 +--- a/protoc-c/c_helpers.cc ++++ b/protoc-c/c_helpers.cc +@@ -177,7 +177,7 @@ string ToCamel(const string &name) { + } + + string FullNameToLower(const string &full_name) { +- vector pieces; ++ std::vector pieces; + SplitStringUsing(full_name, ".", &pieces); + string rv = ""; + for (unsigned i = 0; i < pieces.size(); i++) { +@@ -188,7 +188,7 @@ string FullNameToLower(const string &full_name) { + return rv; + } + string FullNameToUpper(const string &full_name) { +- vector pieces; ++ std::vector pieces; + SplitStringUsing(full_name, ".", &pieces); + string rv = ""; + for (unsigned i = 0; i < pieces.size(); i++) { +@@ -199,7 +199,7 @@ string FullNameToUpper(const string &full_name) { + return rv; + } + string FullNameToC(const string &full_name) { +- vector pieces; ++ std::vector pieces; + SplitStringUsing(full_name, ".", &pieces); + string rv = ""; + for (unsigned i = 0; i < pieces.size(); i++) { +@@ -214,7 +214,7 @@ void PrintComment (io::Printer* printer, string comment) + { + if (!comment.empty()) + { +- vector comment_lines; ++ std::vector comment_lines; + SplitStringUsing (comment, "\r\n", &comment_lines); + printer->Print ("/*\n"); + for (int i = 0; i < comment_lines.size(); i++) +@@ -503,8 +503,8 @@ void SplitStringToIteratorUsing(const string& full, + + void SplitStringUsing(const string& full, + const char* delim, +- vector* result) { +- std::back_insert_iterator< vector > it(*result); ++ std::vector* result) { ++ std::back_insert_iterator< std::vector > it(*result); + SplitStringToIteratorUsing(full, delim, it); + } + diff --git a/package/protobuf-c/0002-Fix-build-with-protobuf-3.6.x.patch b/package/protobuf-c/0002-Fix-build-with-protobuf-3.6.x.patch new file mode 100644 index 0000000000..1469e01015 --- /dev/null +++ b/package/protobuf-c/0002-Fix-build-with-protobuf-3.6.x.patch @@ -0,0 +1,160 @@ +From 67e5187e96baac2e16d88ac01471c5ce7cdc3c53 Mon Sep 17 00:00:00 2001 +From: ilovezfs +Date: Wed, 20 Jun 2018 08:08:53 -0700 +Subject: [PATCH] Fix build with protobuf 3.6.x + +Adapt to changes from https://github.com/google/protobuf/pull/4387. + +scoped_ptr and scoped_array were removed in favor of std::unique_ptr + +Signed-off-by: Fabrice Fontaine +[Retrieved from: https://github.com/protobuf-c/protobuf-c/pull/328] +--- + protoc-c/c_field.cc | 2 +- + protoc-c/c_field.h | 2 +- + protoc-c/c_file.cc | 8 ++++---- + protoc-c/c_file.h | 8 ++++---- + protoc-c/c_generator.cc | 4 ++-- + protoc-c/c_helpers.cc | 2 +- + protoc-c/c_message.cc | 6 +++--- + protoc-c/c_message.h | 6 +++--- + 8 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/protoc-c/c_field.cc b/protoc-c/c_field.cc +index 9fa56ef..eaa38d2 100644 +--- a/protoc-c/c_field.cc ++++ b/protoc-c/c_field.cc +@@ -189,7 +189,7 @@ void FieldGenerator::GenerateDescriptorInitializerGeneric(io::Printer* printer, + FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor) + : descriptor_(descriptor), + field_generators_( +- new scoped_ptr[descriptor->field_count()]) { ++ new std::unique_ptr[descriptor->field_count()]) { + // Construct all the FieldGenerators. + for (int i = 0; i < descriptor->field_count(); i++) { + field_generators_[i].reset(MakeGenerator(descriptor->field(i))); +diff --git a/protoc-c/c_field.h b/protoc-c/c_field.h +index 91f1a03..efd5a29 100644 +--- a/protoc-c/c_field.h ++++ b/protoc-c/c_field.h +@@ -117,7 +117,7 @@ class FieldGeneratorMap { + + private: + const Descriptor* descriptor_; +- scoped_array > field_generators_; ++ std::unique_ptr[] > field_generators_; + + static FieldGenerator* MakeGenerator(const FieldDescriptor* field); + +diff --git a/protoc-c/c_file.cc b/protoc-c/c_file.cc +index 9851768..6dae516 100644 +--- a/protoc-c/c_file.cc ++++ b/protoc-c/c_file.cc +@@ -83,13 +83,13 @@ FileGenerator::FileGenerator(const FileDescriptor* file, + const string& dllexport_decl) + : file_(file), + message_generators_( +- new scoped_ptr[file->message_type_count()]), ++ new std::unique_ptr[file->message_type_count()]), + enum_generators_( +- new scoped_ptr[file->enum_type_count()]), ++ new std::unique_ptr[file->enum_type_count()]), + service_generators_( +- new scoped_ptr[file->service_count()]), ++ new std::unique_ptr[file->service_count()]), + extension_generators_( +- new scoped_ptr[file->extension_count()]) { ++ new std::unique_ptr[file->extension_count()]) { + + for (int i = 0; i < file->message_type_count(); i++) { + message_generators_[i].reset( +diff --git a/protoc-c/c_file.h b/protoc-c/c_file.h +index ed38ce4..e86cc44 100644 +--- a/protoc-c/c_file.h ++++ b/protoc-c/c_file.h +@@ -98,10 +98,10 @@ class FileGenerator { + private: + const FileDescriptor* file_; + +- scoped_array > message_generators_; +- scoped_array > enum_generators_; +- scoped_array > service_generators_; +- scoped_array > extension_generators_; ++ std::unique_ptr[] > message_generators_; ++ std::unique_ptr[] > enum_generators_; ++ std::unique_ptr[] > service_generators_; ++ std::unique_ptr[] > extension_generators_; + + // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. + vector package_parts_; +diff --git a/protoc-c/c_generator.cc b/protoc-c/c_generator.cc +index a0d0cb6..fe3ad26 100644 +--- a/protoc-c/c_generator.cc ++++ b/protoc-c/c_generator.cc +@@ -149,7 +149,7 @@ bool CGenerator::Generate(const FileDescriptor* file, + + // Generate header. + { +- scoped_ptr output( ++ std::unique_ptr output( + output_directory->Open(basename + ".h")); + io::Printer printer(output.get(), '$'); + file_generator.GenerateHeader(&printer); +@@ -157,7 +157,7 @@ bool CGenerator::Generate(const FileDescriptor* file, + + // Generate cc file. + { +- scoped_ptr output( ++ std::unique_ptr output( + output_directory->Open(basename + ".c")); + io::Printer printer(output.get(), '$'); + file_generator.GenerateSource(&printer); +diff --git a/protoc-c/c_helpers.cc b/protoc-c/c_helpers.cc +index b79b5b0..f2ab448 100644 +--- a/protoc-c/c_helpers.cc ++++ b/protoc-c/c_helpers.cc +@@ -559,7 +559,7 @@ static int CEscapeInternal(const char* src, int src_len, char* dest, + } + string CEscape(const string& src) { + const int dest_length = src.size() * 4 + 1; // Maximum possible expansion +- scoped_array dest(new char[dest_length]); ++ std::unique_ptr dest(new char[dest_length]); + const int len = CEscapeInternal(src.data(), src.size(), + dest.get(), dest_length, false); + GOOGLE_DCHECK_GE(len, 0); +diff --git a/protoc-c/c_message.cc b/protoc-c/c_message.cc +index 6b22c71..85a946e 100755 +--- a/protoc-c/c_message.cc ++++ b/protoc-c/c_message.cc +@@ -83,11 +83,11 @@ MessageGenerator::MessageGenerator(const Descriptor* descriptor, + : descriptor_(descriptor), + dllexport_decl_(dllexport_decl), + field_generators_(descriptor), +- nested_generators_(new scoped_ptr[ ++ nested_generators_(new std::unique_ptr[ + descriptor->nested_type_count()]), +- enum_generators_(new scoped_ptr[ ++ enum_generators_(new std::unique_ptr[ + descriptor->enum_type_count()]), +- extension_generators_(new scoped_ptr[ ++ extension_generators_(new std::unique_ptr[ + descriptor->extension_count()]) { + + for (int i = 0; i < descriptor->nested_type_count(); i++) { +diff --git a/protoc-c/c_message.h b/protoc-c/c_message.h +index 8b115d1..63aa97a 100644 +--- a/protoc-c/c_message.h ++++ b/protoc-c/c_message.h +@@ -126,9 +126,9 @@ class MessageGenerator { + const Descriptor* descriptor_; + string dllexport_decl_; + FieldGeneratorMap field_generators_; +- scoped_array > nested_generators_; +- scoped_array > enum_generators_; +- scoped_array > extension_generators_; ++ std::unique_ptr[] > nested_generators_; ++ std::unique_ptr[] > enum_generators_; ++ std::unique_ptr[] > extension_generators_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator); + };