OLD | NEW |
1 Name: Protocol Buffers | 1 Name: Protocol Buffers |
2 Short Name: protobuf | 2 Short Name: protobuf |
3 URL: http://protobuf.googlecode.com/svn/trunk | 3 URL: https://github.com/google/protobuf |
4 License: BSD | 4 License: BSD |
5 License File: COPYING.txt | 5 License File: LICENSE |
6 Version: unknown | 6 Version: 3.0.0-beta-2 |
7 Revision: r476 | 7 Revision: d5fb408ddc281ffcadeb08699e65bb694656d0bd |
8 Security Critical: yes | 8 Security Critical: yes |
9 | 9 |
10 Local files (not taken from upstream): | 10 Steps used to create the current version: |
11 README.chromium | 11 1. Pull the release from https://github.com/google/protobuf/releases |
12 config.h | 12 2. Use the cleanup_release.sh script to remove unnecessary files. |
13 descriptor2_pb.py | 13 3. Add build files (BUILD.gn, proto_library.gni, protobuf.gyp, |
| 14 protobuf_lite.gypi, protobuf_nacl.gyp). |
14 | 15 |
15 A protobuf.gyp file has been added for building with Chromium. | 16 Be sure to update the list of source files, as additional .cc files and |
| 17 headers might have been added -- you need to find the transitive closure of |
| 18 include files required by targets. |
16 | 19 |
17 This code has been patched to support unknown field retention in protobuf-lite. | 20 Other things to care about are defines required by protobuf on various |
18 See r62331 for the patch. | 21 platforms, warnings generated by compilers, and new dependencies introduced. |
| 22 4. Get open-source library six.py from https://pypi.python.org/pypi/six/ and add |
| 23 it to protobuf/third_party/six/six.py. |
| 24 5. Apply patches in patches/ (see the description below): |
19 | 25 |
20 This code has been patched to ensure that files in the target protobuf_lite | 26 $ for patch in patches/*; do patch -s -p1 < $patch; done |
21 do not include headers from protobuf_full. See r173228 for the patch. | |
22 | 27 |
23 This code has been patched to make the target protobuf_lite a component so that | 28 For future releases, it will be worth looking into which patches still need |
24 targets that depend on it can be componentized. See http://crbug.com/172800 for | 29 to be applied. |
25 details, and r179806 for the patch. | 30 5. Generate descriptor_pb2.py using something like the following steps. Make |
| 31 sure you've regenerated your buildfiles and will build protoc from the |
| 32 newly-modified sources above. |
26 | 33 |
27 Revision 504 was cherry-picked from upstream. | 34 $ cd $SRC_DIR |
28 Revision 512 was cherry-picked from upstream. | 35 $ ninja -C out/Debug protoc |
29 Revision 516 was cherry-picked from upstream. | 36 $ cd third_party/protobuf/src |
30 Revision 517 was cherry-picked from upstream. | 37 $ ../../../out/Debug/protoc --python_out=../python google/protobuf/descriptor
.proto |
31 Revision 522 was cherry-picked from upstream. | |
32 Revision 523 was cherry-picked from upstream. | |
33 Revision 524 was cherry-picked from upstream. | |
34 Revision 573 was cherry-picked from upstream. | |
35 The `&file->options() != NULL &&` was removed from descriptor.cc | |
36 References to `vector` were changed to `std::vector` in extension_set.h | |
37 and unknown_field_set.h | |
38 | 38 |
39 GetEmptyString() and GoogleOnceInit() have been uninlined, for a large savings | 39 6. Add an __init__.py to protobuf/ that adds third_party/six/ to Python path. |
40 in binary size. | 40 7. Update README.chromium. |
41 | 41 |
42 A BUILD.gn file has been added for building with GN. | 42 Description of the patches: |
43 | 43 |
44 Cherry-pick pherl changes to make protobuf build on VS2015. | 44 - 0001-ignore-option-retain-unknown-fields.patch |
45 | 45 |
46 Cherry-pick c3cb53b (fix "sometimes-uninitialized" warning). | 46 Previous versions of protobuf in Chromium carried a local patch that retained |
| 47 unknown fields in protobuf_lite mode. It was enabled by setting option |
| 48 retain_unknown_fields = true in .proto file. Now that it is enabled by |
| 49 default, this option is no longer recognized by protobuf, and so I had to |
| 50 patch it so that I don't have to fix all .proto files in Chromium in a single |
| 51 CL. |
47 | 52 |
48 Cherry-pick https://github.com/google/protobuf/commit/56a90a2081379a5 | 53 I plan to remove those occurences, and then this patch will no longer be |
| 54 necessary. |
49 | 55 |
50 Cherry-pick https://github.com/google/protobuf/commit/69d660b39ceabea | 56 - 0003-remove-static-initializers.patch |
51 | 57 |
52 Cherry-pick https://github.com/google/protobuf/commit/a74e912a8be1274 | 58 This patch removes all static initializers from Chromium. The change in Status |
| 59 class is not completely compatible with upstream, but it's compatible enough |
| 60 to work in Chromium, which doesn't use this functionality yet. The work on |
| 61 upstreaming the removal of static initializers is in progress: |
| 62 https://github.com/google/protobuf/issues/1404 |
| 63 |
| 64 - 0004-fix-integer-types-and-shared-library-exports.patch |
| 65 |
| 66 This patch makes protobuf int64 to be int64_t (as opposed to long long in |
| 67 upstream), and similarly for other integer types. It also allows exporting |
| 68 protobuf symbols in Linux .so libraries, so that protobuf can be built as a |
| 69 component (see http://crrev.com/179806). |
| 70 |
| 71 - 0005-fix-no-threadlocal-on-mac.patch |
| 72 |
| 73 Apple's Clang doesn't support thread-local variables on Mac. |
| 74 |
| 75 - 0006-fix-clang-type-errors.patch |
| 76 |
| 77 New versions of Clang have type checking semantics that check the conformance |
| 78 with the C++ standard more thorougly, which makes them a bit more |
| 79 restrictive. This cherry-picks upstream commits |
| 80 3cc35adb6dca9057a790d253b9f5e2b9b000a106 and |
| 81 58f07644eab25f68973ecab4bdc43fc318c26131. |
| 82 |
| 83 - 0007-uninline_googleonce.patch |
| 84 - 0008-uninline_get_empty_string.patch |
| 85 - 0009-uninline-arenastring.patch |
| 86 - 0010-uninline-generated-code.patch |
| 87 |
| 88 These patches uninline some functions, resulting in a significant reduction |
| 89 (somewhere between 500 KB and 1 MB) of binary size. |
OLD | NEW |