Commit Graph

7679 Commits

Author SHA1 Message Date
Thomas Van Lenten
a645d7176b Update the iOS project for Xcode 12.
- Move the min up to iOS 9.  Things should still work with 8, just can't have
  the project set to that and be able to run the tests, so moving it up to
  support running the tests.
- Remove the bitcode setting from the unittest bundle, was causing an error
  with Xcode 12.
2020-10-21 15:42:09 -04:00
Thomas Van Lenten
676ea98902 Update the build/testing script for Xcode 12. 2020-10-21 15:42:09 -04:00
Thomas Van Lenten
9c27f6a479 Add cast to avoid warning on Xcode 12. 2020-10-21 15:42:09 -04:00
RPG3D
ce66f6047d Update libprotobuf.cmake 2020-10-13 15:15:08 -07:00
RPG3D
6aaa40f2a9 Update libprotobuf.cmake
link log library on Android
2020-10-13 15:15:08 -07:00
RPG3D
6eedd1a519 Update libprotobuf-lite.cmake
link log library on Android
2020-10-13 15:15:08 -07:00
Misha Seltzer
7daf0aa7b0 Removed the unnecessary setuptools package dependency for Python package.
The setuptools package was added to allow definition of namespaces using
the now outdated (and discouraged from use) pkg_resources-style.

The code here, for a long while now, uses a try/except (`ImportError`)
protection around the setuptools code, and falls back to the more
encoraged pkgutil-style.

Removing this library won't affect any current workflow, and in the case
of setuptools not found, it'll actually use a more modern (and
encouraged) flow.
2020-10-12 17:27:33 -07:00
Daniel Joos
c8f76331ab
Adds a CMake option to build libprotoc separately (#7949)
This exposes the variable `protobuf_BUILD_LIBPROTOC` as CMake option to be able to build libprotoc without building the protoc binary.
2020-10-09 15:54:39 -07:00
Paul Yang
4eea2b00a3
Remove php 5 tests on mac (#7956) 2020-10-09 15:53:12 -07:00
Paul Yang
9ccde30967
Add cmake and protoc to mergeable config (#7955) 2020-10-09 15:45:46 -07:00
Paul Yang
0a648daaca
Use the https address for git clone (#7951)
The previous git address failed for no access
2020-10-08 14:56:27 -07:00
Paul Yang
7ab0be202d
Merge pull request #7952 from TeBoring/3.13.x-merge
Merge 3.13.x into master
2020-10-08 14:09:03 -07:00
Bo Yang
37e69bcddf Merge branch '3.13.x' 2020-10-08 13:32:41 -07:00
Paul Yang
d1eca4e4b4
Update version number to 3.13.0.1 for php (#7950) 2020-10-08 11:17:30 -07:00
David L. Jones
f5a3b92cf7
Update default dependency for gtest. (#7907)
The gtest source was changed in #7237 on an opt-in basis, and has been
released since 3.12.0. The comments state that the default should change
in 3.13.0, but that didn't quite happen.

This change does flip the default, and updates comments to say 3.14.0.
2020-10-02 20:10:51 -07:00
David L. Jones
ad29d402c4
Enhance documentation for generate_py_protobufs. (#7937)
This change updates the README.md to describe the order of resolution
between `options['generate_py_protobufs']`, `--protoc`, and the `PROTOC`
env var.

Since the `setup.py` script is not the main way to find docs, this change
deletes the parts of the docstring that are redundant with `README.md`.
2020-10-02 13:36:49 -07:00
David L. Jones
344f28d4a2
Allow generate_py_protobufs to find a custom protoc (#7936)
Currently, the logic in `generate_py_protobufs` cannot find a custom `protoc` (even though it's supposed to be possible). Fixes:

1. Mark the `--protoc` flag as accepting an argument.
2. If the `--protoc` flag was not passed, try finding `PROTOC` in the environment.
3. (Existing behavior) Otherwise, fall back to `spawn.find_executable`.

Hat tip to @bobhancock for uncovering the problem(s).
2020-10-01 17:17:55 -07:00
David L. Jones
54bfa174e7
Mark some Bazel targets as "manual." (#7932)
The Python C++ extension targets are not used unless
`--@:use_fast_cpp_protos=true`, and may not even be able to build
if the Python headers are missing (note that
`//util/python:python_headers`, bound to `@python_headers//` in
`//:WORKSPACE`, is not currently sufficient). This change adds the
`"manual"` tag to these targets, so that they do not cause
`bazel test ...` to fail when Python headers are missing. Without
the manual tag, the targets are always selected, even if
`--@:use_fast_cpp_protos=false`.

The `:cc_proto_blacklist_test` target is metastable, depending on
whether the `--proto_toolchain_for_cc=` flag names a target with
or without the `@com_google_protobuf//` prefix. We use the correct
prefix for Bazel's default in `kokoro/linux/bazel/build.sh`, but
the `bazel test :cc_proto_blacklist_test` (with or without `//`)
fails consistently. Hopefully, this will be fixed when
bazelbuild/bazel#10590 is addressed.
2020-10-01 11:13:44 -07:00
David L. Jones
b774da0d42
Change Python kokoro configs to test only their specified version. (#7927)
Using non-versioned scripts for `build_file` means every Python version is
tested (under Tox), and this is multiplied by each Python version running Tox.

For example, when the `python38` config is used to run Tox, the
Tox layer runs on Python 3.8. This then tests all of the Python versions
individually, including, for example, python27 tests.

This change fixes the `build_file` paths to point to the same-pathed build
script. For example, `kokoro/linux/python27/presubmit.cfg` now uses
`kokoro/linux/python27/build.sh`.

Some additional fixes:

*  Use `python -m tox` in tests.sh instead of just `tox`. This helps non-site
   installations of tox, where the `tox` script may not be on `$PATH`.
*  Ensure tox (and other Python build-related packages) are available in
   Python testing images. (New images have been pushed.)
*  Disable `--warnings_as_errors` due to deprecated function.
*  Remove apt lists per [Docker best practices][1].

[1]: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
2020-09-30 15:56:17 -07:00
Vlad Vesa
d16bf914bc Fix: gcc 9 -Warray-bounds warnings about memset() in generated code 2020-09-29 14:58:28 -07:00
Adam Cozzette
3d8943fea9
Work around Codespell false positive (#7924)
The Codespell checker is saying we should replace "files'" with
"file's", but this is not a real issue since the single-quote on the end
is being used as a quote and not an apostrophe. Let's tell Codespell to
ignore this.
2020-09-28 18:35:23 -07:00
Robin Linden
40f5b0b30f Fix undef warning when building w/ clang or gcc on Windows 2020-09-28 11:15:17 -07:00
Robert Yokota
300dfcc5bf Reserve 1088 for Confluent Schema Registry 2020-09-25 11:12:03 -07:00
David L. Jones
02955622cc
[bazel/py] Omit google/__init__.py from the Protobuf runtime. (#7908)
Since `google` is a Python namespace package, the google/__init__.py
file should be omitted to avoid collisions. For example, its presence
may cause other Pip packages in the google namespace not to be found.

This change narrows which __init__.py files are included in the
`//:protobuf_runtime` target to include only those under
`google/protobuf`. It also moves their canonical inclusion to the
internal `//:python_srcs` rule, eliminating the dual specification in
`python_protobuf.extra_srcs`.

This is the difference in files, lexicographically ordered:

```
$ bazel cquery 'labels(srcs, kind(py_library, deps(:protobuf_python)))' | sort > /tmp/deps-{before,after}.txt
$ diff /tmp/deps-{before,after}.txt
1,5d0
< //:python/compatibility_tests/v2.5.0/tests/__init__.py (null)
< //:python/compatibility_tests/v2.5.0/tests/google/__init__.py (null)
< //:python/compatibility_tests/v2.5.0/tests/google/protobuf/__init__.py (null)
< //:python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/__init__.py (null)
< //:python/google/__init__.py (null)
51d45
< //:python/protobuf_distutils/protobuf_distutils/__init__.py (null)
```

This seems like a desirable change, since it avoids polluting other
packages, too.

This change is conceptually similar to #7877, but for Bazel.
2020-09-23 15:20:38 -07:00
David L. Jones
66e3562aaf
Remove uses of pkg_resources in non-namespace packages. (#7902)
In #713 and #1296, the `google` package in protobuf sources was found
to cause conflicts with other Google projects, because it was not
properly configured as a namespace package [1]. The initial fix in
786f80f addressed part of the issue, and #1298 fixed the rest.

However, 786f80f (the initial fix) also made `google.protobuf` and
`google.protobuf.pyext` into namespace packages. This was not correct:
they are both regular, non-namespace, sub-subpackages.

However (still), the follow-up #1298 did not nominate them as
namespace packages, so the namespace registration behavior has
remained, but without benefit.

This change removes the unnecessary namespace registration, which has
substantial overhead, thus reducing startup time substantially when
using protobufs.

Because this change affects the import internals, quantifying the
overhead requires a full tear-down/start-up of the Python interpreter.
So, to capture the full cost for every run, I measured the time to
launching a _fresh_ Python instance in a subprocess, varying the
imports and code under test. In other words, I used `timeit` to
measure the time to launch a _fresh_ Python subprocess which actually
performs the imports.

* Reference: normal Python startup (i.e., don't import protobuf at all).
  ```
   % python3 -m timeit -s 'import subprocess' -r 3 -n 10 'subprocess.call(["python3", "-c", "pass"])'
  10 loops, best of 3: 27.1 msec per loop
  ```

* Baseline: cost to import `google.protobuf.descriptor`, with
  extraneous namespace packages.
  ```
  % python3 -m timeit -s 'import subprocess' -r 3 -n 10 'subprocess.call(["python3", "-c", "import google.protobuf.descriptor"])'
  10 loops, best of 3: 133 msec per loop
  ```

* This change: cost to import `google.protobuf.descriptor`, without
  extraneous namespace packages.
  ```
  % python3 -m timeit -s 'import subprocess' -r 3 -n 10 'subprocess.call(["python3", "-c", "import google.protobuf.descriptor"])'
  10 loops, best of 3: 43.1 msec per loop
  ```

[1]:  https://packaging.python.org/guides/packaging-namespace-packages/
2020-09-22 20:46:07 -07:00
Joshua Haberman
cae85a9f11
PHP: Added == operators for Map and Array. (#7900) 2020-09-22 11:44:52 -07:00
Fabrice Fontaine
3abbbd8870 python/setup.py: remove unneeded wheel dependency
wheel is required since version 3.13.0 and
ff92cee10b

This will result in the following build failure when cross-compiling:

Download error on https://pypi.org/simple/wheel/: unknown url type: https -- Some packages may not be found!
Couldn't find index page for 'wheel' (maybe misspelled?)
Download error on https://pypi.org/simple/: unknown url type: https -- Some packages may not be found!
No local packages or working download links found for wheel

Remove wheel requirement from setup.py as it is only needed by
release.sh, not by setup.py

Fixes:
 - http://autobuild.buildroot.org/results/371c686a10d6870933011b46d36b1879d29046b9

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-09-21 12:25:14 -07:00
James Brock
c2d089e413 Add Purescript protobuf to third-party list 2020-09-18 10:26:39 -07:00
David L. Jones
f4aa17b28a Update documentation for protobuf_distutils Python package.
This updates README.md to use an example with pip instead of setup.py.
The README.md is then used as the long_description argument to setup(),
so that the doc shows up on pypi.
2020-09-14 20:14:32 -07:00
Joshua Haberman
f0942fb0a2
Equals passes tests in both pure-PHP and the C extension. (#7883) 2020-09-14 13:40:07 -07:00
Yuriy Chernyshov
2361b1960f Fix more -Wunused-parameter warnings 2020-09-09 16:57:49 -07:00
xiaahui
5ecb4ab4cd remove GetArena in _InternalParse 2020-09-09 16:47:00 -07:00
Keith Smiley
cdf5022ada Use {} 2020-09-08 15:49:54 -07:00
Keith Smiley
8f2ae3a0fc Fix -Wmissing-field-initializers warning 2020-09-08 15:49:54 -07:00
Keith Smiley
0110ff5659 Update rules_proto
This was pretty behind 97d8af4dc4...4029855629
2020-09-03 09:23:28 -07:00
Romain Geissler
76f9074c1c Fix some -Wunused-parameter warnings which appeared in release 3.13.0. 2020-09-03 09:11:11 -07:00
Masaki Hara
f5bdd7cd56
JS: parse (un)packed fields conditionally (#7379) 2020-08-31 13:30:23 -07:00
David L. Jones
ff06e23d23
Add a setuptools extension for generating Python protobufs (#7783)
This extension allows Python code to be generated from setup.py files, so they
are created as part of a normal Python build. The extension uses an already-existing
protoc binary, which can be explicitly specified if needed.
2020-08-31 10:40:57 -07:00
Joshua Haberman
70b02861f8
Merge pull request #7845 from haberman/sync-stage
Integrate from Piper for C++, Java, and Python
2020-08-25 21:33:27 -07:00
Joshua Haberman
5c26cae18c Re-add change that was somehow lost. 2020-08-25 14:42:47 -07:00
Joshua Haberman
e1ee430d16 Re-add fix that somehow was lost pushing back to Piper. 2020-08-25 14:28:24 -07:00
Joshua Haberman
28d6aa04f6 Merge tag 'refs/tags/sync-piper' into sync-stage 2020-08-24 15:48:44 -07:00
Joshua Haberman
f3cf99c0fb Sync from Piper @328224070
PROTOBUF_SYNC_PIPER
2020-08-24 15:48:43 -07:00
Adam Cozzette
1b18833f4f Tweaked update_version.py to leave PHP notes blank
Until now update_version.py has copied the notes from the previous PHP
release, which is not very useful.
2020-08-21 16:33:52 -07:00
Adam Cozzette
6da79e94b0 Fixed VERSION_SUFFIX logic in update_version.py
This commit makes a couple of fixes:
- Make sure we always update the suffix, since even for a non-RC release
  we need to clear the suffix.
- Make sure the suffix is properly quoted and begins with -rc
2020-08-21 16:33:52 -07:00
Lőrinc Pap
4b93993ac7 Update Gradle dependency reference format
See https://docs.gradle.org/current/userguide/java_library_plugin.html
> The compile, testCompile, runtime and testRuntime configurations inherited from the Java plugin are still available but are deprecated. You should avoid using them, as they are only kept for backwards compatibility.
2020-08-20 15:13:03 -07:00
CauhxMilloy
090d28e8f7
Null Check in UnknownField::AddAll() (#7328)
UnknownField::AddAll() is called (multiple times) from UnknownField::MergeFrom(). The `extras` parameter is one of: `varintList`, `fixed32List`, `fixed64List`, `lengthDelimitedList`, or `groupList`. All of these members can be null, and are appropriately checked in other usage. If attempting to parse a proto with unknown extensions, and exception is thrown (NRE).
This adds the appropriate null check inside UnknownField::AddAll().
2020-08-20 14:42:53 -07:00
Misha Seltzer
223e89157a Removed test files from pypi distribution generation code.
Fixes #7493

By removing all test files from the distribution, we've reduced the .whl
file size from 1259808B (1.2MB) to 996042B (973K), which is 21% reduction,
And reduced the unpacked size from 5317178B (5.1MB) to 3251811B (3.2MB),
which is 39% reduction.

Size was measured for the protobuf-3.11.3-cp35-cp35m-manylinux1_x86_64.whl release.
2020-08-19 17:16:36 -07:00
Afshin Pir
a446e6472b Previously, I had incorrectly used some newer features of CMake(version 3.14). But Now I have updated this code to work with older versions of CMake too. 2020-08-19 17:03:36 -07:00
Adam Yi
88f3ef7d1d [bazel] Add default shell env to gen_well_known_protos_java
We may need the shell environment (potentially augmented with
`--action_env`) to invoke protoc on Windows. If protoc was built with
mingw, it probably needs .dll files in non-default locations that must be
in PATH. Previously with `--compiler=mingw-gcc`,
`bazel build //:gen_well_known_protos_java` would fail on Windows. This
CL fixes the issue.

Also we have `default_shell_env` set to True for `ProtoCompile`, this makes
the behavior consistent.

See #2933, and
585a27ad0a/proto/compiler.bzl (L130)
2020-08-19 17:01:40 -07:00