Before, Cython would *need* to be imported immediately if generated
files did not already exist. Now, missing generated files will trigger a
`setup_requires` inclusion of Cython and defer cythonization until
extension build-time. If cythonization was specified via environment
variable and setup could not find Cython, the extensions are poisoned
instead of blocking non-extension commands from running.
Before we patched the link command, now we just patch `spawn` as an
updatable catch-all solution to ARG_MAX limitations on bash for MSYS and
MinGW and friends.
Removes MinGW flags from various build scripts, since they're now set in
our `setup.py`s by default. Also removes the arguments for the
extensions in grpcio's setup.py; that function was already accessing
globals anyway, might as well go whole-hog.
Before we patched the link command, now we just patch `spawn` as an
updatable catch-all solution to ARG_MAX limitations on bash for MSYS and
MinGW and friends.
Even if GRPC_PYTHON_BUILD_WITH_CYTHON is not specified, if the files are
not present then we will fall back to generating with Cython. This
relegates GRPC_PYTHON_BUILD_WITH_CYTHON to providing a regeneration
option rather than being a necessary build environment variable.
Turns out that Python namespace packages may be asymmetrical. The contents of a
particular package that was installed first (here grpcio) appears to retain its
contents in the installation directory when all other distributions declare
that package as a namespace package (here grpcio-tools).
Notable Changes:
-Convert all str types to byte types at cython layer (ascii encoding)
-Use six for packages that have different names in Python2/Python3
-By default, unit tests are compiled/run in Python2.7 and Python3.4
-Ensure MACOSX_BUILD_TARGET is at least 10.7
Before, namespace packages would break in auditwheel due to a
superfluous check (fixed in the commit referenced in the Dockerfiles).
Now, the auditwheel used in the manylinux1-support Docker images can
handle namespace packages, and we may thus use them. This should
alleviate future user pain w.r.t. installation of grpcio-tools causing
loss of grpcio files and vice versa (e.g. requiring a reinstall of
grpcio following installation of grpcio-tools).