91 lines
3.5 KiB
Plaintext
91 lines
3.5 KiB
Plaintext
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
|