blob: b4fddd98d0a66e86675c0c6f4096202ed265a132 [file] [log] [blame]
Name: Protocol Buffers
Short Name: protobuf
URL: https://github.com/google/protobuf
License: BSD
License File: LICENSE
Version: 3.5.2
Revision: cf242503ec157a7dda8a6eda48712dd26c81d2e6
Security Critical: yes
Steps used to create the current version:
1. Pull the release from https://github.com/google/protobuf/releases
2. Add build files (BUILD.gn, proto_library.gni).
Be sure to update the list of source files, as additional .cc files and
headers might have been added -- you need to find the transitive closure of
include files required by targets.
Other things to care about are defines required by protobuf on various
platforms, warnings generated by compilers, and new dependencies introduced.
3. Add DEPS and OWNERS.
4. Add mirclient.cc and mirclient.map.
5. Get open-source library six.py from https://pypi.python.org/pypi/six/ and add
it to protobuf/third_party/six/six.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 well_known_types_embed.cc and descriptor_pb2.py using the script
"gen_extra_chromium_files" in the same directory as this file.
8. Add an __init__.py to protobuf/ that adds third_party/six/ to Python path.
9. Update 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.
Description of the patches:
- 0003-remove-static-initializers.patch
This patch removes all static initializers from Chromium. The change in Status
class is not completely compatible with upstream, but it's compatible enough
to work in Chromium, which doesn't use this functionality yet. The work on
upstreaming the removal of static initializers is in progress:
https://github.com/google/protobuf/issues/1404
- 0004-fix-integer-types-and-shared-library-exports.patch
This patch makes protobuf int64 to be int64_t (as opposed to long long in
upstream), and similarly for other integer types. It also 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
- 0009-uninline-arenastring.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.
- 0012-fixes-for-js-embed-cc.patch
Fixed in https://github.com/google/protobuf/pull/1549
- 0015-fixes-forcing-value-to-bool.patch
Fixes an MSVC error that forbids conversion from int to bool. Needs
to be upstreamed.
- 0020-Add-support-for-libc-on-Windows.patch
Cherry-picks upstream https://github.com/google/protobuf/commit/3ba21cd5f
- 0021-Fix-protobuf-s-library-.gitinore-file.patch
Un-ignores python/google/protobuf/descriptor_pb2.py
- 0022-proto_writer_render_bytes_override.patch
Corrects override in proto_writer.h.
https://github.com/google/protobuf/pull/4707
- 0024-add_wire_format_lite_inl_include.patch
Fix components build on Windows.
https://github.com/protocolbuffers/protobuf/pull/5316
- 0025-once-only.patch
Fixed Protobuf once only sigleton initialation to use static method globals
which originally froze when protobuf tool was run after compiling with
CL.EXE. This allows MSVC based builds to be re-enabled. The next official
release of protobuf should no longer need this patch as the code around
singletons has been rewritten to no longer have this issue present in this
release of protobuf.