|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| .github/ | | 03-May-2024 | - | 149 | 118 |
| benchmarks/ | | 03-May-2024 | - | 12,873 | 11,546 |
| cmake/ | | 03-May-2024 | - | 2,362 | 2,043 |
| conformance/ | | 03-May-2024 | - | 15,726 | 12,006 |
| csharp/ | | 03-May-2024 | - | 158,328 | 129,173 |
| docs/ | | 03-May-2024 | - | 1,899 | 1,573 |
| editors/ | | 03-May-2024 | - | 331 | 183 |
| examples/ | | 03-May-2024 | - | 1,334 | 1,020 |
| java/ | | 03-May-2024 | - | 128,592 | 93,012 |
| js/ | | 03-May-2024 | - | 56,255 | 35,385 |
| kokoro/ | | 03-May-2024 | - | 5,461 | 3,504 |
| m4/ | | 03-May-2024 | - | 1,931 | 1,594 |
| objectivec/ | | 03-May-2024 | - | 89,746 | 69,273 |
| patches/ | | 03-May-2024 | - | 506 | 466 |
| php/ | | 03-May-2024 | - | 56,832 | 38,177 |
| protoc-artifacts/ | | 03-May-2024 | - | 781 | 628 |
| python/ | | 03-May-2024 | - | 50,838 | 37,819 |
| ruby/ | | 03-May-2024 | - | 35,579 | 26,617 |
| src/ | | 03-May-2024 | - | 299,558 | 221,775 |
| third_party/ | | 03-May-2024 | - | 540 | 380 |
| toolchain/ | | 03-May-2024 | - | 396 | 368 |
| util/python/ | | 03-May-2024 | - | 21 | 19 |
| .bazelignore | D | 03-May-2024 | 99 | 5 | 4 |
| .gitmodules | D | 03-May-2024 | 245 | 8 | 7 |
| .readthedocs.yml | D | 03-May-2024 | 518 | 23 | 11 |
| BUILD | D | 03-May-2024 | 50.4 KiB | 1,506 | 1,378 |
| BUILD.gn | D | 03-May-2024 | 14.4 KiB | 389 | 327 |
| CHANGES.txt | D | 03-May-2024 | 147.6 KiB | 3,265 | 2,793 |
| CONTRIBUTING.md | D | 03-May-2024 | 6.7 KiB | 121 | 102 |
| CONTRIBUTORS.txt | D | 03-May-2024 | 4 KiB | 108 | 96 |
| DEPS | D | 03-May-2024 | 84 | 7 | 6 |
| DIR_METADATA | D | 03-May-2024 | 44 | 4 | 3 |
| LICENSE | D | 03-May-2024 | 1.7 KiB | 33 | 28 |
| Makefile.am | D | 03-May-2024 | 108.7 KiB | 1,474 | 1,439 |
| Protobuf-C++.podspec | D | 03-May-2024 | 1.5 KiB | 41 | 33 |
| Protobuf.podspec | D | 03-May-2024 | 2.2 KiB | 43 | 38 |
| README.chromium | D | 03-May-2024 | 5.4 KiB | 142 | 99 |
| README.md | D | 03-May-2024 | 3.9 KiB | 86 | 61 |
| SECURITY.md | D | 03-May-2024 | 176 | 5 | 3 |
| WORKSPACE | D | 03-May-2024 | 2 KiB | 69 | 53 |
| appveyor.bat | D | 03-May-2024 | 1.4 KiB | 49 | 40 |
| appveyor.yml | D | 03-May-2024 | 1.1 KiB | 48 | 33 |
| autogen.sh | D | 03-May-2024 | 1.2 KiB | 45 | 24 |
| build_files_updated_unittest.sh | D | 03-May-2024 | 1.7 KiB | 63 | 39 |
| cc_proto_blacklist_test.bzl | D | 03-May-2024 | 999 | 39 | 30 |
| compiler_config_setting.bzl | D | 03-May-2024 | 964 | 24 | 22 |
| configure.ac | D | 03-May-2024 | 7.9 KiB | 248 | 213 |
| fix_permissions.sh | D | 03-May-2024 | 147 | 9 | 7 |
| gen_chromium_file_lists.py | D | 03-May-2024 | 4.7 KiB | 137 | 100 |
| gen_extra_chromium_files.py | D | 03-May-2024 | 1.3 KiB | 45 | 27 |
| generate_changelog.py | D | 03-May-2024 | 1.5 KiB | 66 | 56 |
| generate_descriptor_proto.sh | D | 03-May-2024 | 3.1 KiB | 116 | 89 |
| global.json | D | 03-May-2024 | 81 | 7 | 6 |
| internal.bzl | D | 03-May-2024 | 1 KiB | 30 | 25 |
| maven_install.json | D | 03-May-2024 | 17.5 KiB | 288 | 287 |
| mirclient.cc | D | 03-May-2024 | 24.2 KiB | 470 | 468 |
| mirclient.map | D | 03-May-2024 | 639 | 31 | 29 |
| post_process_dist.sh | D | 03-May-2024 | 1.8 KiB | 65 | 32 |
| proto_library.gni | D | 03-May-2024 | 21.6 KiB | 684 | 615 |
| proto_sources.gni | D | 03-May-2024 | 21.4 KiB | 440 | 431 |
| protobuf-lite.pc.in | D | 03-May-2024 | 249 | 12 | 10 |
| protobuf.bzl | D | 03-May-2024 | 19.1 KiB | 588 | 511 |
| protobuf.pc.in | D | 03-May-2024 | 271 | 14 | 11 |
| protobuf_deps.bzl | D | 03-May-2024 | 4.2 KiB | 94 | 81 |
| protobuf_release.bzl | D | 03-May-2024 | 1.4 KiB | 51 | 42 |
| protobuf_version.bzl | D | 03-May-2024 | 28 | 2 | 1 |
| tests.sh | D | 03-May-2024 | 15.6 KiB | 607 | 448 |
| update_compatibility_version.py | D | 03-May-2024 | 1.4 KiB | 57 | 41 |
| update_file_lists.sh | D | 03-May-2024 | 6.6 KiB | 201 | 167 |
| update_version.py | D | 03-May-2024 | 13.1 KiB | 415 | 343 |
| version.json | D | 03-May-2024 | 397 | 17 | 17 |
README.chromium
1Name: Protocol Buffers
2Short Name: protobuf
3URL: https://github.com/google/protobuf
4License: BSD
5License File: LICENSE
6Version: 3.20.3
7CPEPrefix: cpe:/a:google:protobuf:3.20.3
8Revision: fe271ab76f2ad2b2b28c10443865d2af21e27e0e
9Security Critical: yes
10
11Steps used to create the current version:
121. Pull the release from https://github.com/google/protobuf/releases (Source
13 code zip)
142. Add build files (BUILD.gn, proto_library.gni).
15
16 As needed, update defines required by protobuf on various platforms, warnings
17 generated by compilers, and new dependencies introduced.
183. Add DEPS, DIR_METADATA, and OWNERS.
194. Add mirclient.cc and mirclient.map.
205. Add gen_extra_chromium_files.py and gen_chromium_file_lists.py.
216. Apply patches in patches/ (see the description below):
22
23 $ for patch in patches/*; do patch -s -p1 < $patch; done
24
25 For future releases, it will be worth looking into which patches still need
26 to be applied. In case of conflict, update those patches accordingly and save
27 them back in place (i.e. in patches directory).
287. Generate descriptor_pb2.py using the script "gen_extra_chromium_files.py" in
29 the same directory as this file.
308. Generate proto_sources.gni using the script "gen_chromium_file_lists.py".
319. Update this file (README.chromium).
32
33Note about libmirclient:
34
35On Ubuntu, Chromium has an indirect dependency on the system
36libprotobuf-lite through libmirclient (through GTK). The symbols in
37the system library conflict with Chromium's libprotobuf-lite used on
38component builds.
39
40mirclient.* are added to stub out libmirclient.so.9 to prevent loading
41the system libprotobuf-lite. Chromium's replacement libmirclient will
42get loaded, but its symbols will never be used directly or indirectly.
43
44Note about vpython:
45
46Some Python scripts end up mixing protoc output from this copy of protobuf with
47the google.protobuf module from vpython's protobuf. If Python scripts break due
48to the vpython copy of protobuf, you may need to update the version in
49//.vpython3. See https://crbug.com/1320047.
50
51Description of the patches:
52
53- 0004-fix-shared-library-exports.patch
54
55 This patch allows exporting protobuf symbols in Linux .so libraries, so
56 that protobuf can be built as a component (see http://crrev.com/179806).
57
58- 0008-uninline_get_empty_string.patch
59- 0010-uninline-generated-code.patch
60
61 These patches uninline some functions, resulting in a significant reduction
62 (somewhere between 500 KB and 1 MB) of binary size.
63
64- 0021-Fix-protobuf-s-library-.gitinore-file.patch
65
66 Un-ignores python/google/protobuf/descriptor_pb2.py and
67 python/google/protobuf/compiler/plugin_pb2.py
68
69- 0022-Allow-deprecated-fields.patch
70
71 Allows deprecated fields to be used without extra C++ compiler warnings.
72
73- 0026-remove-sprintf.patch
74
75 Imports
76 https://github.com/protocolbuffers/protobuf/commit/c0fc2e881bc36aafb0bf539bf41889611370f60c
77 to remove use of sprintf.
78
79- 0027-no-noreturn.patch
80
81 Removes an instance of [[noreturn]]. The attribute is correct, but the way
82 protobuf's GOOGLE_LOG(FATAL) is defined, the compiler can't see this and it
83 trips -Winvalid-noreturn. See https://github.com/protocolbuffers/protobuf/issues/9817
84
85- 0028-export-internal-metadata.patch
86
87 Adds a missing PROTOBUF_EXPORT. See cl/443188236
88
89- 0029-make-initializers-optimizable.patch
90
91 Makes the InitProtobufDefaults() static initializer optimizable by Clang when
92 built with libc++. It patches out the OnShutdownDestroyString call, which we
93 do not need, and removes the thread-safe initialization. Thread safety is only
94 needed if a static initializer spawns a thread which then calls
95 InitProtobufDefaults() without synchronizing with the start of main().
96 (Anything which happens after main() starts can rely on the initializer
97 running.)
98
99- 0030-workaround-window-constinit.patch
100
101 Disables PROTOBUF_CONSTINIT in generated code in Windows shared library
102 builds. Protobuf's default instances take pointers to a dllimport variable,
103 fixed_address_empty_string. This is not constinit on Windows. This is a bug in
104 protobuf as the default instance was intended to be constant-initialized. But
105 the components build in Chromium is a developer configuration, so we tolerate
106 an initializer as long as the build works, until protobuf has a proper fix.
107
108 See https://github.com/protocolbuffers/protobuf/issues/10159.
109
110- 0031-workaround-cfi-unrelated-cast.patch
111
112 A workaround for Clang's Control Flow Integrity check for casting pointers to
113 memory that his not yet initialized to be of that type for empty arrays, does
114 not work, and still fails. This patch removes the workaround and instead
115 disables cfi-unrelated-cast for the affected methods and simplifies them.
116
117 See https://github.com/protocolbuffers/protobuf/issues/10186.
118 See https://bugs.chromium.org/p/chromium/issues/detail?id=1294200#c26.
119
120- 0032-cxx20.patch
121
122 Fixes necessary to build in --std=c++20 mode.
123
124 Imports https://critique.corp.google.com/cl/451177197 (a portion of
125 https://github.com/protocolbuffers/protobuf/commit/6dd8af4ecfa7987bddb309862932886b84f1e4ef
126 ).
127
128- 0033-no-enum-conversion-warn.patch
129
130 Avoid hitting the clang error -Wenum-constexpr-conversion by specifying width
131 of the enum.
132
133 Imports https://critique.corp.google.com/cl/466986872.
134
135- 0034-change-macro-to-avoid-pedantic-warning.patch
136
137 Avoid hitting -Wextra-semi.
138
139 Imports (rebased):
140 https://github.com/protocolbuffers/protobuf/commit/def602dd07b7eae1cac6823705975317b5607fc3
141
142
README.md
1Protocol Buffers - Google's data interchange format
2===================================================
3
4Copyright 2008 Google Inc.
5
6https://developers.google.com/protocol-buffers/
7
8Overview
9--------
10
11Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,
12platform-neutral, extensible mechanism for serializing structured data. You
13can find [protobuf's documentation on the Google Developers site](https://developers.google.com/protocol-buffers/).
14
15This README file contains protobuf installation instructions. To install
16protobuf, you need to install the protocol compiler (used to compile .proto
17files) and the protobuf runtime for your chosen programming language.
18
19Protocol Compiler Installation
20------------------------------
21
22The protocol compiler is written in C++. If you are using C++, please follow
23the [C++ Installation Instructions](src/README.md) to install protoc along
24with the C++ runtime.
25
26For non-C++ users, the simplest way to install the protocol compiler is to
27download a pre-built binary from our release page:
28
29 [https://github.com/protocolbuffers/protobuf/releases](https://github.com/protocolbuffers/protobuf/releases)
30
31In the downloads section of each release, you can find pre-built binaries in
32zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary
33as well as a set of standard .proto files distributed along with protobuf.
34
35If you are looking for an old version that is not available in the release
36page, check out the maven repo here:
37
38 [https://repo1.maven.org/maven2/com/google/protobuf/protoc/](https://repo1.maven.org/maven2/com/google/protobuf/protoc/)
39
40These pre-built binaries are only provided for released versions. If you want
41to use the github master version at HEAD, or you need to modify protobuf code,
42or you are using C++, it's recommended to build your own protoc binary from
43source.
44
45If you would like to build protoc binary from source, see the [C++ Installation
46Instructions](src/README.md).
47
48Protobuf Runtime Installation
49-----------------------------
50
51Protobuf supports several different programming languages. For each programming
52language, you can find instructions in the corresponding source directory about
53how to install protobuf runtime for that specific language:
54
55| Language | Source |
56|--------------------------------------|-------------------------------------------------------------|
57| C++ (include C++ runtime and protoc) | [src](src) |
58| Java | [java](java) |
59| Python | [python](python) |
60| Objective-C | [objectivec](objectivec) |
61| C# | [csharp](csharp) |
62| JavaScript | [js](js) |
63| Ruby | [ruby](ruby) |
64| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)|
65| PHP | [php](php) |
66| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) |
67
68Quick Start
69-----------
70
71The best way to learn how to use protobuf is to follow the tutorials in our
72developer guide:
73
74https://developers.google.com/protocol-buffers/docs/tutorials
75
76If you want to learn from code examples, take a look at the examples in the
77[examples](examples) directory.
78
79Documentation
80-------------
81
82The complete documentation for Protocol Buffers is available via the
83web at:
84
85https://developers.google.com/protocol-buffers/
86