aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Masood Malekghassemi <atash@google.com>2016-02-18 12:39:42 -0800
committerGravatar Masood Malekghassemi <atash@google.com>2016-02-18 15:54:18 -0800
commit736173487cfda82b3dd3bdcf812eddc9de7a6129 (patch)
treed464b8022576d82c5ae7cf26bb282eec85d4e8e5
parenta5fc9818e16a3a720673519c8a71008b7fbd886d (diff)
Exclude cygrpc.so from the Python package
-rw-r--r--PYTHON-MANIFEST.in3
-rw-r--r--setup.py1
-rw-r--r--src/python/grpcio/precompiled.py2
-rwxr-xr-xtools/run_tests/build_artifact_python.sh13
4 files changed, 15 insertions, 4 deletions
diff --git a/PYTHON-MANIFEST.in b/PYTHON-MANIFEST.in
index 072089ac51..25aba87c18 100644
--- a/PYTHON-MANIFEST.in
+++ b/PYTHON-MANIFEST.in
@@ -1,4 +1,5 @@
-graft src/python/grpcio/grpc
+recursive-include src/python/grpcio/grpc *.c *.h *.py *.pyx *.pxd *.pxi *.python *.pem
+recursive-exclude src/python/grpcio/grpc/_cython *.so *.pyd
graft src/python/grpcio/tests
graft src/core
graft include/grpc
diff --git a/setup.py b/setup.py
index 01faa4c96c..46ad75f5a4 100644
--- a/setup.py
+++ b/setup.py
@@ -210,7 +210,6 @@ PACKAGE_DATA = {
'grpc._cython': [
'_windows/grpc_c.32.python',
'_windows/grpc_c.64.python',
- 'cygrpc.so',
],
}
if INSTALL_TESTS:
diff --git a/src/python/grpcio/precompiled.py b/src/python/grpcio/precompiled.py
index 05c651b506..ae2a0c835a 100644
--- a/src/python/grpcio/precompiled.py
+++ b/src/python/grpcio/precompiled.py
@@ -100,3 +100,5 @@ def update_setup_arguments(setup_arguments):
sys.stderr.write(
'could not write precompiled extension to directory: {} -> {}\n'
.format(url, target_path))
+ return
+ setup_arguments['package_data']['grpc._cython'].append('cygrpc.so')
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 6e7ab911d5..7ba04d7546 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -39,6 +39,14 @@ then
pip install -rrequirements.txt
fi
+# Build the source distribution first because MANIFEST.in cannot override
+# exclusion of built shared objects among package resources (for some
+# inexplicable reason).
+GRPC_PYTHON_USE_CUSTOM_BDIST=0 \
+GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
+${SETARCH_CMD} python setup.py \
+ sdist
+
# The bdist_wheel_grpc_custom command is finicky about command output ordering
# and thus ought to be run in a shell command separate of others. Further, it
# trashes the actual bdist_wheel output, so it should be run first so that
@@ -48,11 +56,12 @@ GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
${SETARCH_CMD} python setup.py \
build_tagged_ext
+# Wheel has a bug where directories don't get excluded.
+# https://bitbucket.org/pypa/wheel/issues/99/cannot-exclude-directory
GRPC_PYTHON_USE_CUSTOM_BDIST=0 \
GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
${SETARCH_CMD} python setup.py \
- bdist_wheel \
- sdist
+ bdist_wheel
mkdir -p artifacts