shaka-packager/packager/third_party/protobuf/README.chromium

91 lines
3.5 KiB
Plaintext
Raw Permalink Normal View History

Name: Protocol Buffers
Short Name: protobuf
URL: https://github.com/google/protobuf
License: BSD
License File: LICENSE
Version: 3.0.0-beta-3
Revision: 3470b6895aa659b7559ed678e029a5338e535f14
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, protobuf.gyp,
protobuf_lite.gypi, protobuf_nacl.gyp).
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. Get open-source library six.py from https://pypi.python.org/pypi/six/ and add
it to protobuf/third_party/six/six.py.
4. 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.
5. Generate descriptor_pb2.py using something like the following steps. Make
sure you've regenerated your buildfiles and will build protoc from the
newly-modified sources above.
$ cd $SRC_DIR
$ ninja -C out/Debug protoc
$ cd third_party/protobuf/src
$ ../../../out/Debug/protoc --python_out=../python google/protobuf/descriptor.proto
6. Add an __init__.py to protobuf/ that adds third_party/six/ to Python path.
7. Update README.chromium.
Description of the patches:
- 0001-ignore-option-retain-unknown-fields.patch
Previous versions of protobuf in Chromium carried a local patch that retained
unknown fields in protobuf_lite mode. It was enabled by setting option
retain_unknown_fields = true in .proto file. Now that it is enabled by
default, this option is no longer recognized by protobuf, and so I had to
patch it so that I don't have to fix all .proto files in Chromium in a single
CL.
I plan to remove those occurences, and then this patch will no longer be
necessary.
- 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).
- 0005-fix-include-js-generator.protobuf
During merge with internal branch, the <> in one of the #includes were
accidentally replaced with "", which results in a failure in checkdeps.
Fixed in https://github.com/google/protobuf/pull/1547.
- 0007-uninline_googleonce.patch
- 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.
- 0011-libprotobuf_export.patch
During merge with internal branch, the dll export attribute was accidentally
removed in C++11 mode.
Fixed in https://github.com/google/protobuf/pull/1549