Hello community, here is the log from the commit of package grpc for openSUSE:Factory checked in at 2018-05-29 16:52:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grpc (Old) and /work/SRC/openSUSE:Factory/.grpc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grpc" Tue May 29 16:52:15 2018 rev:9 rq:612693 version:1.12.0 Changes: -------- --- /work/SRC/openSUSE:Factory/grpc/grpc.changes 2018-05-19 15:43:15.792878182 +0200 +++ /work/SRC/openSUSE:Factory/.grpc.new/grpc.changes 2018-05-29 16:52:20.551669041 +0200 @@ -1,0 +2,8 @@ +Fri May 25 05:34:36 UTC 2018 - [email protected] + +- build grpc python module for python2 and python3 + * add 0001-Allow-building-the-python-module-with-system-openssl.patch + * add 0002-Allow-building-the-python-module-with-system-zlib.patch + * add 0003-Allow-building-the-python-module-with-system-cares.patch + +------------------------------------------------------------------- New: ---- 0001-Allow-building-the-python-module-with-system-openssl.patch 0002-Allow-building-the-python-module-with-system-zlib.patch 0003-Allow-building-the-python-module-with-system-cares.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grpc.spec ++++++ --- /var/tmp/diff_new_pack.f4rZAW/_old 2018-05-29 16:52:21.303641374 +0200 +++ /var/tmp/diff_new_pack.f4rZAW/_new 2018-05-29 16:52:21.303641374 +0200 @@ -17,6 +17,7 @@ %define lname libgrpc6 +%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: grpc Version: 1.12.0 Release: 0 @@ -25,9 +26,19 @@ Group: Development/Tools/Building Url: http://grpc.io/ Source: https://github.com/grpc/grpc/archive/v%version.tar.gz +# # PATCH-FEATURE-UPSTREAM 0001-Allow-building-the-python-module-with-system-openssl.patch -- https://github.com/grpc/grpc/pull/15548 +Patch0: 0001-Allow-building-the-python-module-with-system-openssl.patch +# # PATCH-FEATURE-UPSTREAM 0002-Allow-building-the-python-module-with-system-zlib.patch -- https://github.com/grpc/grpc/pull/15548 +Patch1: 0002-Allow-building-the-python-module-with-system-zlib.patch +# # PATCH-FEATURE-UPSTREAM 0003-Allow-building-the-python-module-with-system-cares.patch -- https://github.com/grpc/grpc/pull/15548 +Patch2: 0003-Allow-building-the-python-module-with-system-cares.patch +BuildRequires: %{python_module Cython} +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools} BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkg-config +BuildRequires: python-rpm-macros BuildRequires: pkgconfig(libcares) BuildRequires: pkgconfig(openssl) >= 1.0.1 BuildRequires: pkgconfig(protobuf) >= 3.5 @@ -57,12 +68,41 @@ This subpackage contains libraries and header files for developing applications that want to make use of the gRPC reference implementation. +%package -n python2-grpcio +Summary: Python language bindings for grpc, a HTTP/2 Remote Procedure Call implementation +Group: Development/Libraries/Python +Requires: %{lname} = %{version}-%{release} +Requires: python = %{python2_version} + +%description -n python2-grpcio +This subpackage contains the python2 bindings. + +%package -n python3-grpcio +Summary: Python language bindings for grpc, a HTTP/2 Remote Procedure Call implementation +Group: Development/Libraries/Python +Requires: %{lname} = %{version}-%{release} +Requires: python = %{python3_version} + +%description -n python3-grpcio +This subpackage contains the python3 bindings. + %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 %build make %{?_smp_mflags} STRIP=/bin/true V=1 VERBOSE=1 CFLAGS="%optflags" CXXFLAGS="%optflags" +# build python module +export GRPC_PYTHON_BUILD_WITH_CYTHON=True +export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True +export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=True +export GRPC_PYTHON_BUILD_SYSTEM_CARES=True +export CFLAGS="%{optflags}" +%python_build + %install b="%buildroot" %make_install prefix="$b/%_prefix" STRIP=/bin/true V=1 VERBOSE=1 @@ -75,6 +115,7 @@ mv lib lib64 fi popd +%python_install %post -n %lname -p /sbin/ldconfig %postun -n %lname -p /sbin/ldconfig @@ -93,4 +134,12 @@ %_libdir/pkgconfig/*.pc %_libdir/*.so +%files -n python2-grpcio +%{python2_sitearch}/grpcio-%{version}-py*.egg-info +%{python2_sitearch}/grpc + +%files -n python3-grpcio +%{python3_sitearch}/grpcio-%{version}-py*.egg-info +%{python3_sitearch}/grpc + %changelog ++++++ 0001-Allow-building-the-python-module-with-system-openssl.patch ++++++ >From 30ce693621d61efb8596503a0da212077a8c4daa Mon Sep 17 00:00:00 2001 From: Thomas Bechtold <[email protected]> Date: Thu, 24 May 2018 17:12:13 +0200 Subject: [PATCH 1/3] Allow building the python module with system openssl When building the python module and using the new GRPC_PYTHON_BUILD_SYSTEM_OPENSSL env variable, the third party boringssl code is not compiled. Instead, the openssl shared library installed on the system is used during runtime. This is useful for distributions who don't want to include code copies but use shared libraries instead. --- setup.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 99d1a1c504..3a5ed56c64 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ egg_info.manifest_maker.template = 'PYTHON-MANIFEST.in' PY3 = sys.version_info.major == 3 PYTHON_STEM = os.path.join('src', 'python', 'grpcio') CORE_INCLUDE = ('include', '.',) -BORINGSSL_INCLUDE = (os.path.join('third_party', 'boringssl', 'include'),) +SSL_INCLUDE = (os.path.join('third_party', 'boringssl', 'include'),) ZLIB_INCLUDE = (os.path.join('third_party', 'zlib'),) CARES_INCLUDE = ( os.path.join('third_party', 'cares'), @@ -84,6 +84,12 @@ CLASSIFIERS = [ # present, then it will still attempt to use Cython. BUILD_WITH_CYTHON = os.environ.get('GRPC_PYTHON_BUILD_WITH_CYTHON', False) +# Export this variable to use the system installation of openssl. You need to +# have the header files installed (in /usr/include/openssl) and during +# runtime, the shared libary must be installed +BUILD_WITH_SYSTEM_OPENSSL = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_OPENSSL', + False) + # Environment variable to determine whether or not to enable coverage analysis # in Cython modules. ENABLE_CYTHON_TRACING = os.environ.get( @@ -148,8 +154,13 @@ CORE_C_FILES = tuple(grpc_core_dependencies.CORE_SOURCE_FILES) if "win32" in sys.platform: CORE_C_FILES = filter(lambda x: 'third_party/cares' not in x, CORE_C_FILES) +if BUILD_WITH_SYSTEM_OPENSSL: + CORE_C_FILES = filter(lambda x: 'third_party/boringssl' not in x, CORE_C_FILES) + CORE_C_FILES = filter(lambda x: 'src/boringssl' not in x, CORE_C_FILES) + SSL_INCLUDE = (os.path.join('/usr', 'include', 'openssl'),) + EXTENSION_INCLUDE_DIRECTORIES = ( - (PYTHON_STEM,) + CORE_INCLUDE + BORINGSSL_INCLUDE + ZLIB_INCLUDE + + (PYTHON_STEM,) + CORE_INCLUDE + SSL_INCLUDE + ZLIB_INCLUDE + CARES_INCLUDE + ADDRESS_SORTING_INCLUDE) EXTENSION_LIBRARIES = () @@ -159,6 +170,8 @@ if not "win32" in sys.platform: EXTENSION_LIBRARIES += ('m',) if "win32" in sys.platform: EXTENSION_LIBRARIES += ('advapi32', 'ws2_32',) +if BUILD_WITH_SYSTEM_OPENSSL: + EXTENSION_LIBRARIES += ('ssl', 'crypto',) DEFINE_MACROS = ( ('OPENSSL_NO_ASM', 1), ('_WIN32_WINNT', 0x600), -- 2.17.0 ++++++ 0002-Allow-building-the-python-module-with-system-zlib.patch ++++++ >From 3823d9048102bce79e165584c62a1a5b91810aeb Mon Sep 17 00:00:00 2001 From: Thomas Bechtold <[email protected]> Date: Fri, 25 May 2018 06:52:23 +0200 Subject: [PATCH 2/3] Allow building the python module with system zlib When building the python module and using the new GRPC_PYTHON_BUILD_SYSTEM_ZLIB env variable, the third party zlib code is not compiled. Instead, the zlib shared library installed on the system is used during runtime. This is useful for distributions who don't want to include code copies but use shared libraries instead. --- setup.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/setup.py b/setup.py index 3a5ed56c64..483d3ac168 100644 --- a/setup.py +++ b/setup.py @@ -90,6 +90,12 @@ BUILD_WITH_CYTHON = os.environ.get('GRPC_PYTHON_BUILD_WITH_CYTHON', False) BUILD_WITH_SYSTEM_OPENSSL = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_OPENSSL', False) +# Export this variable to use the system installation of zlib. You need to +# have the header files installed (in /usr/include/) and during +# runtime, the shared libary must be installed +BUILD_WITH_SYSTEM_ZLIB = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_ZLIB', + False) + # Environment variable to determine whether or not to enable coverage analysis # in Cython modules. ENABLE_CYTHON_TRACING = os.environ.get( @@ -159,6 +165,10 @@ if BUILD_WITH_SYSTEM_OPENSSL: CORE_C_FILES = filter(lambda x: 'src/boringssl' not in x, CORE_C_FILES) SSL_INCLUDE = (os.path.join('/usr', 'include', 'openssl'),) +if BUILD_WITH_SYSTEM_ZLIB: + CORE_C_FILES = filter(lambda x: 'third_party/zlib' not in x, CORE_C_FILES) + ZLIB_INCLUDE = (os.path.join('/usr', 'include'),) + EXTENSION_INCLUDE_DIRECTORIES = ( (PYTHON_STEM,) + CORE_INCLUDE + SSL_INCLUDE + ZLIB_INCLUDE + CARES_INCLUDE + ADDRESS_SORTING_INCLUDE) @@ -172,6 +182,8 @@ if "win32" in sys.platform: EXTENSION_LIBRARIES += ('advapi32', 'ws2_32',) if BUILD_WITH_SYSTEM_OPENSSL: EXTENSION_LIBRARIES += ('ssl', 'crypto',) +if BUILD_WITH_SYSTEM_ZLIB: + EXTENSION_LIBRARIES += ('z',) DEFINE_MACROS = ( ('OPENSSL_NO_ASM', 1), ('_WIN32_WINNT', 0x600), -- 2.17.0 ++++++ 0003-Allow-building-the-python-module-with-system-cares.patch ++++++ >From 78a6e04ec1efc2dc839f0329dcff732940e27fd9 Mon Sep 17 00:00:00 2001 From: Thomas Bechtold <[email protected]> Date: Fri, 25 May 2018 07:08:05 +0200 Subject: [PATCH 3/3] Allow building the python module with system cares When building the python module and using the new GRPC_PYTHON_BUILD_SYSTEM_CARES env variable, the third party cares code is not compiled. Instead, the cares shared library installed on the system is used during runtime. This is useful for distributions who don't want to include code copies but use shared libraries instead. --- setup.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/setup.py b/setup.py index 483d3ac168..43c25aafeb 100644 --- a/setup.py +++ b/setup.py @@ -96,6 +96,12 @@ BUILD_WITH_SYSTEM_OPENSSL = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_OPENSSL', BUILD_WITH_SYSTEM_ZLIB = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_ZLIB', False) +# Export this variable to use the system installation of cares. You need to +# have the header files installed (in /usr/include/) and during +# runtime, the shared libary must be installed +BUILD_WITH_SYSTEM_CARES = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_CARES', + False) + # Environment variable to determine whether or not to enable coverage analysis # in Cython modules. ENABLE_CYTHON_TRACING = os.environ.get( @@ -169,6 +175,10 @@ if BUILD_WITH_SYSTEM_ZLIB: CORE_C_FILES = filter(lambda x: 'third_party/zlib' not in x, CORE_C_FILES) ZLIB_INCLUDE = (os.path.join('/usr', 'include'),) +if BUILD_WITH_SYSTEM_CARES: + CORE_C_FILES = filter(lambda x: 'third_party/cares' not in x, CORE_C_FILES) + CARES_INCLUDE = (os.path.join('/usr', 'include'),) + EXTENSION_INCLUDE_DIRECTORIES = ( (PYTHON_STEM,) + CORE_INCLUDE + SSL_INCLUDE + ZLIB_INCLUDE + CARES_INCLUDE + ADDRESS_SORTING_INCLUDE) @@ -184,6 +194,8 @@ if BUILD_WITH_SYSTEM_OPENSSL: EXTENSION_LIBRARIES += ('ssl', 'crypto',) if BUILD_WITH_SYSTEM_ZLIB: EXTENSION_LIBRARIES += ('z',) +if BUILD_WITH_SYSTEM_CARES: + EXTENSION_LIBRARIES += ('cares',) DEFINE_MACROS = ( ('OPENSSL_NO_ASM', 1), ('_WIN32_WINNT', 0x600), -- 2.17.0
