Browse Source

contrib: protobuf: Apply a patch to avoid relying on transitive includes

This fixes build breakage with latest nightly libc++. Since
2e2f3158c6,
fewer libc++ headers transitively include <algorithm>.

This protobuf header uses std::fill unconditionally, which is a
function provided by <algorithm>. (The surrounding code comment was
wrong/outdated - <algorithm> was needed on all platforms.)

The same seems to have been fixed in upstream protobuf as part
of a larger code sync:
ab4585a695 (diff-5cc9e8e347380b7bbc8fac8c06dc98100f3b5c076fcffa177e8ce11e753d4f7c)
pull/134/head
Martin Storsjö 5 years ago
committed by Jean-Baptiste Kempf
parent
commit
5f6776416e
  1. 14
      contrib/src/protobuf/include-algorithm.patch
  2. 2
      contrib/src/protobuf/rules.mak

14
contrib/src/protobuf/include-algorithm.patch

@ -0,0 +1,14 @@
--- protobuf/src/google/protobuf/repeated_field.h.orig 2022-02-17 12:44:54.526527423 +0200
+++ protobuf/src/google/protobuf/repeated_field.h 2022-02-17 12:44:58.190446363 +0200
@@ -46,11 +46,7 @@
#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__
#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__
-#ifdef _MSC_VER
-// This is required for min/max on VS2013 only.
#include <algorithm>
-#endif
-
#include <string>
#include <iterator>
#include <google/protobuf/stubs/casts.h>

2
contrib/src/protobuf/rules.mak

@ -41,6 +41,7 @@ protoc: protoc-$(PROTOBUF_VERSION)-cpp.tar.gz .sum-protoc
tar xvzfo "$<" -C $(UNPACK_DIR) --strip-components=1
$(APPLY) $(SRC)/protobuf/protobuf-disable-gmock.patch
$(APPLY) $(SRC)/protobuf/protobuf-fix-build.patch
$(APPLY) $(SRC)/protobuf/include-algorithm.patch
$(MOVE)
.protoc: protoc
@ -55,6 +56,7 @@ protobuf: protobuf-$(PROTOBUF_VERSION)-cpp.tar.gz .sum-protobuf
$(APPLY) $(SRC)/protobuf/protobuf-disable-gmock.patch
$(APPLY) $(SRC)/protobuf/dont-build-protoc.patch
$(APPLY) $(SRC)/protobuf/protobuf-fix-build.patch
$(APPLY) $(SRC)/protobuf/include-algorithm.patch
$(MOVE)
.protobuf: protobuf

Loading…
Cancel
Save