2 # - system address_sorting and upb?
3 # - use shared grpc core in python modules
6 %bcond_without apidocs # (Python) API docs build
7 %bcond_without python3 # CPython 3.x module
9 Summary: RPC library and framework
10 Summary(pl.UTF-8): Biblioteka i szkielet RPC
16 #Source0Download: https://github.com/grpc/grpc/releases
17 Source0: https://github.com/grpc/grpc/archive/v%{version}/%{name}-%{version}.tar.gz
18 # Source0-md5: ba6736177699865450206452a9ae49e0
19 Source1: https://github.com/census-instrumentation/opencensus-proto/archive/v0.3.0/opencensus-proto-0.3.0.tar.gz
20 # Source1-md5: 0b208800a68548cbf2d4bff763c050a2
21 Patch1: %{name}-sphinx.patch
22 Patch2: %{name}-x32.patch
23 Patch3: %{name}-libdir.patch
24 Patch5: %{name}-system-openssl.patch
26 BuildRequires: abseil-cpp-devel
27 BuildRequires: c-ares-devel >= 1.13.0
28 BuildRequires: cmake >= 3.5.1
29 BuildRequires: gcc >= 6:4.7
30 BuildRequires: libstdc++-devel >= 6:7
31 BuildRequires: openssl-devel
32 BuildRequires: protobuf-devel >= 3.12
33 # with re2Config for cmake
34 BuildRequires: re2-devel >= 20200801
35 BuildRequires: rpm-build >= 4.6
36 BuildRequires: rpm-pythonprov
37 BuildRequires: rpmbuild(macros) >= 1.714
38 BuildRequires: zlib-devel
40 BuildRequires: python3-Cython >= 0.29.8
41 BuildRequires: python3-modules >= 1:3.6
44 BuildRequires: python3-Sphinx >= 1.8.1
45 BuildRequires: python3-six >= 1.10
47 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
49 # Libs rquire non-function grpc_core::ExecCtx::exec_ctx_ and grpc_core::ApplicationCallbackExecCtx::callback_exec_ctx_ symbols.
50 # Wildcard '+' chars to workaround escape incompatibilities between rpm versions.
51 %define skip_post_check_so libgrpc...so.* libgrpc.._unsecure.so.*
54 gRPC is a modern, open source, high-performance remote procedure call
55 (RPC) framework that can run anywhere. gRPC enables client and server
56 applications to communicate transparently, and simplifies the building
59 %description -l pl.UTF-8
60 gRPC to nowoczesny, mający otwarty źródła, wydajny szkielet zdalnych
61 wywołań procedur (RPC - Remote Procedure Call). Pozwala na
62 przezroczystą komunikację klienta i serwera, upraszcza tworzenie
66 Summary: Header files for gRPC library
67 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki gRPC
68 Group: Development/Libraries
69 Requires: %{name} = %{version}-%{release}
70 Requires: c-ares-devel >= 1.13.0
71 Requires: re2-devel >= 20200801
75 Header files for gRPC library.
77 %description devel -l pl.UTF-8
78 Pliki nagłówkowe biblioteki gRPC.
81 Summary: API documentation for gRPC library
82 Summary(pl.UTF-8): Dokumentacja API biblioteki gRPC
87 API documentation for gRPC library.
89 %description apidocs -l pl.UTF-8
90 Dokumentacja API biblioteki gRPC.
92 %package -n python3-grpcio
93 Summary: HTTP/2 based RPC framework
94 Summary(pl.UTF-8): Szkielet RPC oparty na HTTP/2
95 Group: Libraries/Python
97 %description -n python3-grpcio
98 gRPC is a modern, open source, high-performance remote procedure call
99 (RPC) framework that can run anywhere. gRPC enables client and server
100 applications to communicate transparently, and simplifies the building
101 of connected systems.
103 %description -n python3-grpcio -l pl.UTF-8
104 gRPC to nowoczesny, mający otwarty źródła, wydajny szkielet zdalnych
105 wywołań procedur (RPC - Remote Procedure Call). Pozwala na
106 przezroczystą komunikację klienta i serwera, upraszcza tworzenie
107 systemów połączonych.
109 %package -n python3-grpcio-apidocs
110 Summary: API documentation for Python gRPC library
111 Summary(pl.UTF-8): Dokumentacja API biblioteki Pythona gRPC
115 %description -n python3-grpcio-apidocs
116 API documentation for Python gRPC library.
118 %description -n python3-grpcio-apidocs -l pl.UTF-8
119 Dokumentacja API biblioteki Pythona gRPC.
128 %{__rm} doc/.gitignore
130 # simulate download_archive result
131 %{__tar} xf %{SOURCE1} -C third_party/opencensus-proto --strip-components=1 opencensus-proto-0.3.0/src
137 -DCMAKE_CXX_STANDARD=17 \
138 -DgRPC_INSTALL_CMAKEDIR:PATH=%{_lib}/cmake/grpc \
139 -DgRPC_INSTALL_LIBDIR:PATH=%{_lib} \
140 -DgRPC_ABSL_PROVIDER=package \
141 -DgRPC_CARES_PROVIDER=package \
142 -DgRPC_PROTOBUF_PROVIDER=package \
143 -DgRPC_RE2_PROVIDER=package \
144 -DgRPC_SSL_PROVIDER=package \
145 -DgRPC_ZLIB_PROVIDER=package
150 export GRPC_PYTHON_BUILD_SYSTEM_ABSL=1
151 export GRPC_PYTHON_BUILD_SYSTEM_CARES=1
152 export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1
153 export GRPC_PYTHON_BUILD_SYSTEM_RE2=1
154 export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1
158 export GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD=1
164 sphinx-build-3 -b html doc/python/sphinx doc/python/sphinx/_build/html
168 rm -rf $RPM_BUILD_ROOT
170 %{__make} -C build install \
171 DESTDIR=$RPM_BUILD_ROOT
173 export GRPC_PYTHON_BUILD_SYSTEM_ABSL=1
174 export GRPC_PYTHON_BUILD_SYSTEM_CARES=1
175 export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1
176 export GRPC_PYTHON_BUILD_SYSTEM_RE2=1
177 export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1
183 install -d $RPM_BUILD_ROOT%{_docdir}
184 cp -pr doc $RPM_BUILD_ROOT%{_docdir}/%{name}-apidocs-%{version}
185 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}-apidocs-%{version}/python/sphinx
188 rm -rf $RPM_BUILD_ROOT
190 %post -p /sbin/ldconfig
191 %postun -p /sbin/ldconfig
194 %defattr(644,root,root,755)
195 %doc AUTHORS CONCEPTS.md MAINTAINERS.md NOTICE.txt README.md TROUBLESHOOTING.md
196 %attr(755,root,root) %{_bindir}/grpc_cpp_plugin
197 %attr(755,root,root) %{_bindir}/grpc_csharp_plugin
198 %attr(755,root,root) %{_bindir}/grpc_node_plugin
199 %attr(755,root,root) %{_bindir}/grpc_objective_c_plugin
200 %attr(755,root,root) %{_bindir}/grpc_php_plugin
201 %attr(755,root,root) %{_bindir}/grpc_python_plugin
202 %attr(755,root,root) %{_bindir}/grpc_ruby_plugin
203 %attr(755,root,root) %{_libdir}/libgpr.so.*.*.*
204 %attr(755,root,root) %ghost %{_libdir}/libgpr.so.25
205 %attr(755,root,root) %{_libdir}/libgrpc.so.*.*.*
206 %attr(755,root,root) %ghost %{_libdir}/libgrpc.so.25
207 %attr(755,root,root) %{_libdir}/libgrpc_plugin_support.so.*.*.*
208 %attr(755,root,root) %ghost %{_libdir}/libgrpc_plugin_support.so.1.47
209 %attr(755,root,root) %{_libdir}/libgrpc_unsecure.so.*.*.*
210 %attr(755,root,root) %ghost %{_libdir}/libgrpc_unsecure.so.25
211 %attr(755,root,root) %{_libdir}/libgrpc++.so.*.*.*
212 %attr(755,root,root) %ghost %{_libdir}/libgrpc++.so.1.47
213 %attr(755,root,root) %{_libdir}/libgrpc++_alts.so.*.*.*
214 %attr(755,root,root) %ghost %{_libdir}/libgrpc++_alts.so.1.47
215 %attr(755,root,root) %{_libdir}/libgrpc++_error_details.so.*.*.*
216 %attr(755,root,root) %ghost %{_libdir}/libgrpc++_error_details.so.1.47
217 %attr(755,root,root) %{_libdir}/libgrpc++_reflection.so.*.*.*
218 %attr(755,root,root) %ghost %{_libdir}/libgrpc++_reflection.so.1.47
219 %attr(755,root,root) %{_libdir}/libgrpc++_unsecure.so.*.*.*
220 %attr(755,root,root) %ghost %{_libdir}/libgrpc++_unsecure.so.1.47
221 %attr(755,root,root) %{_libdir}/libgrpcpp_channelz.so.*.*.*
222 %attr(755,root,root) %ghost %{_libdir}/libgrpcpp_channelz.so.1.47
223 # TODO: use system libs instead
224 %attr(755,root,root) %{_libdir}/libaddress_sorting.so.*.*.*
225 %attr(755,root,root) %ghost %{_libdir}/libaddress_sorting.so.25
226 %attr(755,root,root) %{_libdir}/libupb.so.*.*.*
227 %attr(755,root,root) %ghost %{_libdir}/libupb.so.25
231 %defattr(644,root,root,755)
232 %attr(755,root,root) %{_libdir}/libgpr.so
233 %attr(755,root,root) %{_libdir}/libgrpc.so
234 %attr(755,root,root) %{_libdir}/libgrpc_plugin_support.so
235 %attr(755,root,root) %{_libdir}/libgrpc_unsecure.so
236 %attr(755,root,root) %{_libdir}/libgrpc++.so
237 %attr(755,root,root) %{_libdir}/libgrpc++_alts.so
238 %attr(755,root,root) %{_libdir}/libgrpc++_error_details.so
239 %attr(755,root,root) %{_libdir}/libgrpc++_reflection.so
240 %attr(755,root,root) %{_libdir}/libgrpc++_unsecure.so
241 %attr(755,root,root) %{_libdir}/libgrpcpp_channelz.so
242 %attr(755,root,root) %{_libdir}/libaddress_sorting.so
243 %attr(755,root,root) %{_libdir}/libupb.so
245 %{_includedir}/grpc++
246 %{_includedir}/grpcpp
247 %{_libdir}/cmake/grpc
248 %{_pkgconfigdir}/gpr.pc
249 %{_pkgconfigdir}/grpc.pc
250 %{_pkgconfigdir}/grpc_unsecure.pc
251 %{_pkgconfigdir}/grpc++.pc
252 %{_pkgconfigdir}/grpc++_unsecure.pc
255 %defattr(644,root,root,755)
256 %{_docdir}/%{name}-apidocs-%{version}
259 %files -n python3-grpcio
260 %defattr(644,root,root,755)
261 %dir %{py3_sitedir}/grpc
262 %{py3_sitedir}/grpc/*.py
263 %{py3_sitedir}/grpc/__pycache__
264 %dir %{py3_sitedir}/grpc/_cython
265 %attr(755,root,root) %{py3_sitedir}/grpc/_cython/cygrpc.cpython-*.so
266 %{py3_sitedir}/grpc/_cython/__init__.py
267 %{py3_sitedir}/grpc/_cython/__pycache__
268 %{py3_sitedir}/grpc/_cython/_credentials
269 %{py3_sitedir}/grpc/_cython/_cygrpc
270 %{py3_sitedir}/grpc/aio
271 %{py3_sitedir}/grpc/beta
272 %{py3_sitedir}/grpc/experimental
273 %{py3_sitedir}/grpc/framework
274 %{py3_sitedir}/grpcio-%{version}-py*.egg-info
278 %files -n python3-grpcio-apidocs
279 %defattr(644,root,root,755)
280 %doc doc/python/sphinx/_build/html/{_static,*.html,*.js}