| 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: | 
 |  | 
 | - 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 |