* gnu/packages/protobuf.scm (protobuf): Update to 3.21.9. Move outputs field before build system. Move inputs field below arguments. [source]: Apply patch and update URL. [build-system]: Use cmake-build-system. This causes the CMake support files to be installed, which is expected by some packages such as hyperledger-iroha. [arguments]: Use gexps. [configure-flags]: Add BUILD_SHARED_LIBS=ON. [phases]: Add set-c++-standard. [home-page]: Update URL. (protobuf-3.6): Adjust to continue using the gnu-build-system. * gnu/packages/patches/protobuf-fix-build-on-32bit.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it.
		
			
				
	
	
		
			139 lines
		
	
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 5f4a52d9bff7595ec47fb6727662a1cada3cd404 Mon Sep 17 00:00:00 2001
 | |
| From: Mike Kruskal <mkruskal@google.com>
 | |
| Date: Thu, 15 Sep 2022 10:23:23 -0700
 | |
| Subject: [PATCH 3/7] Patching static assert test failure
 | |
| 
 | |
| ---
 | |
| Edited to remove the patches touching the php directory.
 | |
| 
 | |
|  src/google/protobuf/extension_set_unittest.cc | 6 ++++--
 | |
|  1 file changed, 4 insertions(+), 2 deletions(-)
 | |
| 
 | |
| diff --git a/src/google/protobuf/extension_set_unittest.cc b/src/google/protobuf/extension_set_unittest.cc
 | |
| index 8b436bc20c..84da3c5465 100644
 | |
| --- a/src/google/protobuf/extension_set_unittest.cc
 | |
| +++ b/src/google/protobuf/extension_set_unittest.cc
 | |
| @@ -855,8 +855,10 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) {
 | |
|      const size_t old_capacity =                                                \
 | |
|          message->GetRepeatedExtension(unittest::repeated_##type##_extension)   \
 | |
|              .Capacity();                                                       \
 | |
| -    EXPECT_GE(old_capacity,                                                    \
 | |
| -              (RepeatedFieldLowerClampLimit<cpptype, sizeof(void*)>()));       \
 | |
| +    EXPECT_GE(                                                                 \
 | |
| +        old_capacity,                                                          \
 | |
| +        (RepeatedFieldLowerClampLimit<cpptype, std::max(sizeof(cpptype),       \
 | |
| +                                                        sizeof(void*))>()));   \
 | |
|      for (int i = 0; i < 16; ++i) {                                             \
 | |
|        message->AddExtension(unittest::repeated_##type##_extension, value);     \
 | |
|      }                                                                          \
 | |
| 
 | |
| From c94b66706bec17d918495f4715183a5eaf0f8044 Mon Sep 17 00:00:00 2001
 | |
| From: Mike Kruskal <mkruskal@google.com>
 | |
| Date: Thu, 15 Sep 2022 11:31:31 -0700
 | |
| Subject: [PATCH 4/7] Test fixes for 32-bit architectures
 | |
| 
 | |
| ---
 | |
|  .../compiler/cpp/message_size_unittest.cc     |  2 +-
 | |
|  .../protobuf/io/zero_copy_stream_unittest.cc  |  3 ++
 | |
|  .../protobuf/repeated_field_unittest.cc       |  4 +--
 | |
|  src/google/protobuf/util/time_util_test.cc    | 28 +++++++++++--------
 | |
|  4 files changed, 23 insertions(+), 14 deletions(-)
 | |
| 
 | |
| diff --git a/src/google/protobuf/compiler/cpp/message_size_unittest.cc b/src/google/protobuf/compiler/cpp/message_size_unittest.cc
 | |
| index a75d77a70c..ed4a90e223 100644
 | |
| --- a/src/google/protobuf/compiler/cpp/message_size_unittest.cc
 | |
| +++ b/src/google/protobuf/compiler/cpp/message_size_unittest.cc
 | |
| @@ -139,9 +139,9 @@ TEST(GeneratedMessageTest, OneStringSize) {
 | |
|  
 | |
|  TEST(GeneratedMessageTest, MoreStringSize) {
 | |
|    struct MockGenerated : public MockMessageBase {  // 16 bytes
 | |
| -    int has_bits[1];                               // 4 bytes
 | |
|      int cached_size;                               // 4 bytes
 | |
|      MockRepeatedPtrField data;                     // 24 bytes
 | |
| +    // + 4 bytes padding
 | |
|    };
 | |
|    GOOGLE_CHECK_MESSAGE_SIZE(MockGenerated, 48);
 | |
|    EXPECT_EQ(sizeof(protobuf_unittest::MoreString), sizeof(MockGenerated));
 | |
| diff --git a/src/google/protobuf/io/zero_copy_stream_unittest.cc b/src/google/protobuf/io/zero_copy_stream_unittest.cc
 | |
| index d82354e571..d656da5f13 100644
 | |
| --- a/src/google/protobuf/io/zero_copy_stream_unittest.cc
 | |
| +++ b/src/google/protobuf/io/zero_copy_stream_unittest.cc
 | |
| @@ -720,6 +720,9 @@ TEST_F(IoTest, StringIo) {
 | |
|  
 | |
|  // Verifies that outputs up to kint32max can be created.
 | |
|  TEST_F(IoTest, LargeOutput) {
 | |
| +  // Filter out this test on 32-bit architectures.
 | |
| +  if(sizeof(void*) < 8) return;
 | |
| +
 | |
|    std::string str;
 | |
|    StringOutputStream output(&str);
 | |
|    void* unused_data;
 | |
| diff --git a/src/google/protobuf/repeated_field_unittest.cc b/src/google/protobuf/repeated_field_unittest.cc
 | |
| index eb0b9091cf..3baf6f25bb 100644
 | |
| --- a/src/google/protobuf/repeated_field_unittest.cc
 | |
| +++ b/src/google/protobuf/repeated_field_unittest.cc
 | |
| @@ -429,14 +429,14 @@ TEST(RepeatedField, ReserveNothing) {
 | |
|  
 | |
|  TEST(RepeatedField, ReserveLowerClamp) {
 | |
|    int clamped_value = internal::CalculateReserveSize<bool, sizeof(void*)>(0, 1);
 | |
| -  EXPECT_GE(clamped_value, 8 / sizeof(bool));
 | |
| +  EXPECT_GE(clamped_value, sizeof(void*) / sizeof(bool));
 | |
|    EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<bool, sizeof(void*)>()),
 | |
|              clamped_value);
 | |
|    // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<bool,
 | |
|    // sizeof(void*)>( clamped_value, 2)));
 | |
|  
 | |
|    clamped_value = internal::CalculateReserveSize<int, sizeof(void*)>(0, 1);
 | |
| -  EXPECT_GE(clamped_value, 8 / sizeof(int));
 | |
| +  EXPECT_GE(clamped_value, sizeof(void*) / sizeof(int));
 | |
|    EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<int, sizeof(void*)>()),
 | |
|              clamped_value);
 | |
|    // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<int,
 | |
| diff --git a/src/google/protobuf/util/time_util_test.cc b/src/google/protobuf/util/time_util_test.cc
 | |
| index 464e57b4ee..dceb6dbe2b 100644
 | |
| --- a/src/google/protobuf/util/time_util_test.cc
 | |
| +++ b/src/google/protobuf/util/time_util_test.cc
 | |
| @@ -48,15 +48,18 @@ using google::protobuf::Timestamp;
 | |
|  namespace {
 | |
|  
 | |
|  TEST(TimeUtilTest, TimestampStringFormat) {
 | |
| -  Timestamp begin, end;
 | |
| -  EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
 | |
| -  EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds());
 | |
| -  EXPECT_EQ(0, begin.nanos());
 | |
| -  EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
 | |
| -  EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds());
 | |
| -  EXPECT_EQ(999999999, end.nanos());
 | |
| -  EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin));
 | |
| -  EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end));
 | |
| +  // These these are out of bounds for 32-bit architectures.
 | |
| +  if(sizeof(time_t) >= sizeof(uint64_t)) {
 | |
| +    Timestamp begin, end;
 | |
| +    EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
 | |
| +    EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds());
 | |
| +    EXPECT_EQ(0, begin.nanos());
 | |
| +    EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
 | |
| +    EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds());
 | |
| +    EXPECT_EQ(999999999, end.nanos());
 | |
| +    EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin));
 | |
| +    EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end));
 | |
| +  }
 | |
|  
 | |
|    // Test negative timestamps.
 | |
|    Timestamp time = TimeUtil::NanosecondsToTimestamp(-1);
 | |
| n@@ -94,9 +97,12 @@ TEST(TimeUtilTest, DurationStringFormat) {
 | |
|    EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
 | |
|    EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
 | |
|  
 | |
| -  EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin));
 | |
| +  // These these are out of bounds for 32-bit architectures.
 | |
| +  if(sizeof(time_t) >= sizeof(uint64_t)) {
 | |
| +    EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin));
 | |
| +    EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end));
 | |
| +  }
 | |
|    EXPECT_EQ(999999999, (end - begin).nanos());
 | |
| -  EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end));
 | |
|    EXPECT_EQ(-999999999, (begin - end).nanos());
 | |
|  
 | |
|    // Generated output should contain 3, 6, or 9 fractional digits.
 | |
| 
 |