Chrome Release Bot (LUCI) 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
..
.github 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
benchmarks 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cmake 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
conformance 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
csharp 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
docs 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
editors 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
examples 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
java 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
js 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
kokoro 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
m4 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
objectivec 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
patches 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
php 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protoc-artifacts 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
python 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
ruby 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
src 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
third_party 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
toolchain 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
util 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
.bazelignore 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
.gitignore 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
.gitmodules 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
.readthedocs.yml 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
BUILD 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
BUILD.gn 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
CHANGES.txt 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
CONTRIBUTING.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
CONTRIBUTORS.txt 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
DEPS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
DIR_METADATA 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
LICENSE 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
Makefile.am 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
OWNERS 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
Protobuf-C++.podspec 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
Protobuf.podspec 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
README.chromium 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
README.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
SECURITY.md 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
WORKSPACE 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
appveyor.bat 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
appveyor.yml 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
autogen.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
build_files_updated_unittest.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
cc_proto_blacklist_test.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
compiler_config_setting.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
composer.json 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
configure.ac 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
fix_permissions.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
gen_chromium_file_lists.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
gen_extra_chromium_files.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
generate_changelog.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
generate_descriptor_proto.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
global.json 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
internal.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
maven_install.json 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
mirclient.cc 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
mirclient.map 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
post_process_dist.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
proto_library.gni 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
proto_sources.gni 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf-lite.pc.in 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf.pc.in 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf_deps.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf_release.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
protobuf_version.bzl 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
tests.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
update_compatibility_version.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
update_file_lists.sh 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago
update_version.py 4762b62e7d Publish DEPS for 106.0.5249.13 1 year ago

README.chromium

Name: Protocol Buffers
Short Name: protobuf
URL: https://github.com/google/protobuf
License: BSD
License File: LICENSE
Version: 3.20.0
CPEPrefix: cpe:/a:google:protobuf:3.20.0
Revision: bc799d78f81115940eec953e2937245c70e3e6e4
Security Critical: yes

Steps used to create the current version:
1. Pull the release from https://github.com/google/protobuf/releases (Source
code zip)
2. Add build files (BUILD.gn, proto_library.gni).

As needed, update defines required by protobuf on various platforms, warnings
generated by compilers, and new dependencies introduced.
3. Add DEPS, DIR_METADATA, and OWNERS.
4. Add mirclient.cc and mirclient.map.
5. Add gen_extra_chromium_files.py and gen_chromium_file_lists.py.
6. Apply patches in patches/ (see the description below):

$ for patch in patches/*; do patch -s -p1 < $patch; done

For future releases, it will be worth looking into which patches still need
to be applied. In case of conflict, update those patches accordingly and save
them back in place (i.e. in patches directory).
7. Generate descriptor_pb2.py using the script "gen_extra_chromium_files.py" in
the same directory as this file.
8. Generate proto_sources.gni using the script "gen_chromium_file_lists.py".
9. Update this file (README.chromium).

Note about libmirclient:

On Ubuntu, Chromium has an indirect dependency on the system
libprotobuf-lite through libmirclient (through GTK). The symbols in
the system library conflict with Chromium's libprotobuf-lite used on
component builds.

mirclient.* are added to stub out libmirclient.so.9 to prevent loading
the system libprotobuf-lite. Chromium's replacement libmirclient will
get loaded, but its symbols will never be used directly or indirectly.

Note about vpython:

Some Python scripts end up mixing protoc output from this copy of protobuf with
the google.protobuf module from vpython's protobuf. If Python scripts break due
to the vpython copy of protobuf, you may need to update the version in
//.vpython3. See https://crbug.com/1320047.

Description of the patches:

- 0004-fix-shared-library-exports.patch

This patch allows exporting protobuf symbols in Linux .so libraries, so
that protobuf can be built as a component (see http://crrev.com/179806).

- 0008-uninline_get_empty_string.patch
- 0010-uninline-generated-code.patch

These patches uninline some functions, resulting in a significant reduction
(somewhere between 500 KB and 1 MB) of binary size.

- 0021-Fix-protobuf-s-library-.gitinore-file.patch

Un-ignores python/google/protobuf/descriptor_pb2.py and
python/google/protobuf/compiler/plugin_pb2.py

- 0022-Allow-deprecated-fields.patch

Allows deprecated fields to be used without extra C++ compiler warnings.

- 0026-remove-sprintf.patch

Imports
https://github.com/protocolbuffers/protobuf/commit/c0fc2e881bc36aafb0bf539bf41889611370f60c
to remove use of sprintf.

- 0027-no-noreturn.patch

Removes an instance of [[noreturn]]. The attribute is correct, but the way
protobuf's GOOGLE_LOG(FATAL) is defined, the compiler can't see this and it
trips -Winvalid-noreturn. See https://github.com/protocolbuffers/protobuf/issues/9817

- 0028-export-internal-metadata.patch

Adds a missing PROTOBUF_EXPORT. See cl/443188236

- 0029-make-initializers-optimizable.patch

Makes the InitProtobufDefaults() static initializer optimizable by Clang when
built with libc++. It patches out the OnShutdownDestroyString call, which we
do not need, and removes the thread-safe initialization. Thread safety is only
needed if a static initializer spawns a thread which then calls
InitProtobufDefaults() without synchronizing with the start of main().
(Anything which happens after main() starts can rely on the initializer
running.)

- 0030-workaround-window-constinit.patch

Disables PROTOBUF_CONSTINIT in generated code in Windows shared library
builds. Protobuf's default instances take pointers to a dllimport variable,
fixed_address_empty_string. This is not constinit on Windows. This is a bug in
protobuf as the default instance was intended to be constant-initialized. But
the components build in Chromium is a developer configuration, so we tolerate
an initializer as long as the build works, until protobuf has a proper fix.

See https://github.com/protocolbuffers/protobuf/issues/10159.

- 0031-workaround-cfi-unrelated-cast.patch

A workaround for Clang's Control Flow Integrity check for casting pointers to
memory that his not yet initialized to be of that type for empty arrays, does
not work, and still fails. This patch removes the workaround and instead
disables cfi-unrelated-cast for the affected methods and simplifies them.

See https://github.com/protocolbuffers/protobuf/issues/10186.
See https://bugs.chromium.org/p/chromium/issues/detail?id=1294200#c26.

- 0032-cxx20.patch

Fixes necessary to build in --std=c++20 mode.

Imports https://critique.corp.google.com/cl/451177197 (a portion of
https://github.com/protocolbuffers/protobuf/commit/6dd8af4ecfa7987bddb309862932886b84f1e4ef
).

- 0033-no-enum-conversion-warn.patch

Avoid hitting the clang error -Wenum-constexpr-conversion by specifying width
of the enum.

Imports https://critique.corp.google.com/cl/466986872.