]> git.pld-linux.org Git - packages/protobuf.git/blob - protobuf.spec
rebuild with python 3.10
[packages/protobuf.git] / protobuf.spec
1 # TODO:
2 # - add bindings for java (maven build)
3 # - add bindings for javascript
4 # - add bindings for csharp
5 #
6 # Conditional build:
7 %bcond_without  python2 # Python 2.x bindings
8 %bcond_without  python3 # Python 3.x bindings
9 %bcond_without  ruby    # Ruby bindings
10 %bcond_without  tests   # perform "make check" (requires 4+GB RAM on 64-bit archs)
11
12 Summary:        Protocol Buffers - Google's data interchange format
13 Summary(pl.UTF-8):      Protocol Buffers - format wymiany danych Google
14 Name:           protobuf
15 Version:        3.14.0
16 Release:        5
17 License:        BSD
18 Group:          Libraries
19 #Source0Download: https://github.com/google/protobuf/releases
20 Source0:        https://github.com/google/protobuf/releases/download/v%{version}/%{name}-all-%{version}.tar.gz
21 # Source0-md5:  d0a7dd930210af5285c08c8a2c2304ab
22 Source1:        ftdetect-proto.vim
23 Patch0:         system-gtest.patch
24 Patch1:         no-wrap-memcpy.patch
25 Patch2:         %{name}-x32.patch
26 Patch3:         %{name}-disable-64bitptr-test.patch
27 URL:            https://github.com/google/protobuf/
28 BuildRequires:  autoconf >= 2.59
29 BuildRequires:  automake >= 1:1.9
30 %{?with_tests:BuildRequires:    gmock-devel >= 1.9.0}
31 %{?with_tests:BuildRequires:    gtest-devel >= 1.9.0}
32 BuildRequires:  libstdc++-devel >= 6:4.7
33 BuildRequires:  libtool
34 BuildRequires:  pkgconfig
35 BuildRequires:  sed >= 4.0
36 %if %{with python2}
37 BuildRequires:  python-modules >= 1:2.7
38 BuildRequires:  python-setuptools
39 %endif
40 %if %{with python3}
41 BuildRequires:  python3-modules >= 1:3.3
42 BuildRequires:  python3-setuptools
43 %endif
44 %if %{with python2} || %{with python3}
45 BuildRequires:  rpm-pythonprov
46 %endif
47 BuildRequires:  rpmbuild(macros) >= 1.714
48 %if %{with ruby}
49 BuildRequires:  ruby-devel
50 BuildRequires:  ruby-rake
51 BuildRequires:  ruby-rake-compiler
52 %endif
53 BuildRequires:  sed >= 4.0
54 BuildRequires:  zlib-devel >= 1.2.0.4
55 Requires:       %{name}-libs = %{version}-%{release}
56 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
57
58 %define         _vimdatadir     %{_datadir}/vim
59
60 # triggers bogus "overflow in constant expression" errors with gcc 4.9 .. 5.4
61 %define         filterout       -fwrapv
62
63 %description
64 Protocol Buffers are a way of encoding structured data in an efficient
65 yet extensible format. Google uses Protocol Buffers for almost all of
66 its internal RPC protocols and file formats.
67
68 Protocol buffers are a flexible, efficient, automated mechanism for
69 serializing structured data - think XML, but smaller, faster, and
70 simpler. You define how you want your data to be structured once, then
71 you can use special generated source code to easily write and read
72 your structured data to and from a variety of data streams and using a
73 variety of languages. You can even update your data structure without
74 breaking deployed programs that are compiled against the "old" format.
75
76 This package contains Protocol Buffers compiler for all programming
77 languages.
78
79 %description -l pl.UTF-8
80 Bufory protokołowe (Protocol Buffers) to sposób kodowania danych
81 strukturalnych w wydajny i rozszerzalny sposób. Google używa buforów
82 protokołowych do prawie wszystkich wewnętrznych protokołów RPC i
83 formatów plików.
84
85 Bufory protokołowe to elastyczny, wydajny i zautomatyzowany sposób
86 serializacji danych strukturalnych - podobny do XML-a, ale mniejszy,
87 szybszy i prostszy. Definiuje się raz, jaką strukturę mają mieć dane,
88 a następnie używa specjalnie wygenerowanego kodu źródłowego do łatwego
89 zapisu i odczytu danych strukturalnych do i z różnych strumieni
90 danych, z poziomu różnych języków. Można nawet uaktualniać strukturę
91 danych bez psucia programów skompilowanych w oparciu o "stary" format.
92
93 Ten pakiet zawiera kompilator buforów protokołowych dla wszystkich
94 języków programowania. 
95
96 %package libs
97 Summary:        Protocol Buffers library
98 Summary(pl.UTF-8):      Biblioteka buforów protokołowych (Protocol Buffers)
99 Group:          Libraries
100 Requires:       zlib >= 1.2.0.4
101
102 %description libs
103 Protocol Buffers library.
104
105 %description libs -l pl.UTF-8
106 Biblioteka buforów protokołowych (Protocol Buffers).
107
108 %package lite
109 Summary:        Protocol Buffers LITE_RUNTIME library
110 Summary(pl.UTF-8):      Biblioteka LITE_RUNTIME buforów protokołowych (Protocol Buffers)
111 Group:          Libraries
112
113 %description lite
114 Protocol Buffers library for programs built with optimize_for =
115 LITE_RUNTIME.
116
117 The "optimize_for = LITE_RUNTIME" option causes the compiler to
118 generate code which only depends libprotobuf-lite, which is much
119 smaller than libprotobuf but lacks descriptors, reflection, and some
120 other features.
121
122 %description lite -l pl.UTF-8
123 Biblioteka buforów protokołowych (Protocol Buffers) zbudowana dla
124 programów z opcją optimize_for = LITE_RUNTIME.
125
126 Opcja ta powoduje, że kompilator generuje kod, który wymaga tylko
127 biblioteki libprotobuf-lite, która jest mniejsza niż libprotobuf, ale
128 nie ma niektórych elementów, takich jak deskryptory czy refleksje.
129
130 %package devel
131 Summary:        Header files for Protocol Buffers libraries
132 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek buforów protokołowych (Protocol Buffers)
133 Group:          Development/Libraries
134 Requires:       %{name} = %{version}-%{release}
135 Requires:       %{name}-libs = %{version}-%{release}
136 Requires:       %{name}-lite = %{version}-%{release}
137 Requires:       libstdc++-devel >= 6:4.7
138
139 %description devel
140 Header files for Protocol Buffers libraries.
141
142 %description devel -l pl.UTF-8
143 Pliki nagłówkowe bibliotek buforów protokołowych (Protocol Buffers).
144
145 %package static
146 Summary:        Static Protocol Buffers libraries
147 Summary(pl.UTF-8):      Statyczne biblioteki buforów protokołowych (Protocol Buffers)
148 Group:          Development/Libraries
149 Requires:       %{name}-devel = %{version}-%{release}
150
151 %description static
152 Static Protocol Buffers libraries.
153
154 %description static -l pl.UTF-8
155 Statyczne biblioteki buforów protokołowych (Protocol Buffers).
156
157 %package -n python-protobuf
158 Summary:        Python 2 bindings for Protocol Buffers
159 Summary(pl.UTF-8):      Wiązania Pythona 2 do buforów protokołowych (Protocol Buffers)
160 Group:          Development/Languages/Python
161 Requires:       python-modules >= 1:2.7
162 # does not use C++ library at this time
163 BuildArch:      noarch
164
165 %description -n python-protobuf
166 Python 2 bindings for Protocol Buffers.
167
168 %description -n python-protobuf -l pl.UTF-8
169 Wiązania Pythona 2 do buforów protokołowych (Protocol Buffers).
170
171 %package -n python3-protobuf
172 Summary:        Python 3 bindings for Protocol Buffers
173 Summary(pl.UTF-8):      Wiązania Pythona 3 do buforów protokołowych (Protocol Buffers)
174 Group:          Development/Languages/Python
175 Requires:       python3-modules >= 1:3.3
176 # does not use C++ library at this time
177 BuildArch:      noarch
178
179 %description -n python3-protobuf
180 Python 3 bindings for Protocol Buffers.
181
182 %description -n python3-protobuf -l pl.UTF-8
183 Wiązania Pythona 3 do buforów protokołowych (Protocol Buffers).
184
185 %package -n ruby-google-protobuf
186 Summary:        Ruby bindings for Google Protocol Buffers
187 Summary(pl.UTF-8):      Wiązania języka Ruby do biblioteki Google Protocol Buffers
188 Group:          Development/Languages
189 Requires:       ruby
190
191 %description -n ruby-google-protobuf
192 Ruby bindings for Google Protocol Buffers.
193
194 %description -n ruby-google-protobuf -l pl.UTF-8
195 Wiązania języka Ruby do biblioteki Google Protocol Buffers.
196
197 %package -n vim-syntax-protobuf
198 Summary:        Vim syntax highlighting for Protocol Buffers descriptions
199 Summary(pl.UTF-8):      Podświetlanie składni Vima dla opisów buforów protokołowych (Protocol Buffers)
200 Group:          Development/Libraries
201 Requires:       vim-rt >= 4:7.2.170
202
203 %description -n vim-syntax-protobuf
204 This package contains syntax highlighting for Protocol Buffers
205 descriptions in Vim editor.
206
207 %description -n vim-syntax-protobuf -l pl.UTF-8
208 Ten pakiet zawiera pliki podświetlania składni edytora Vim dla
209 opisów buforów protokołowych (Protocol Buffers).
210
211 %prep
212 %setup -q
213 %patch0 -p1
214 %patch1 -p1
215 %patch2 -p1
216 %ifnarch %{x8664} aarch64 alpha ia64 mips64 ppc64 s390x sparc64
217 %patch3 -p1
218 %endif
219
220 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python(\s|$),#!%{__python}\1,' \
221       examples/add_person.py \
222       examples/list_people.py
223
224 # gcc 10.2 false positive warning (with tag values >= 128):
225 #
226 #  if (tag < 128) {
227 #    return *ptr == tag;
228 #           ~~~~~^~~~~~ error: comparison is always false due to limited range of data type [-Werror=type-limits]
229 #  } else {
230 #
231 %{__sed} -i -e 's/-Werror //' src/Makefile.am
232
233 %build
234 %{__libtoolize}
235 %{__aclocal} -I m4
236 %{__autoconf}
237 %{__autoheader}
238 %{__automake}
239 # Additional variables defined according to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192821
240 %configure \
241         CFLAGS='%{rpmcflags} -DGOOGLE_PROTOBUF_NO_RTTI' \
242         CPPFLAGS='%{rpmcppflags} -DGOOGLE_PROTOBUF_NO_RTTI' \
243         --disable-silent-rules \
244         --disable-external-gtest
245 %{__make}
246
247 cd python
248 %if %{with python2}
249 %py_build
250 %endif
251 %if %{with python3}
252 %py3_build
253 %endif
254 cd ..
255
256 %if %{with ruby}
257 cd ruby
258 rake
259 #rake clobber_package gem
260 cd ..
261 %endif
262
263 %if %{with tests}
264 %{__make} check
265 %endif
266
267 %install
268 rm -rf $RPM_BUILD_ROOT
269 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
270
271 %{__make} install \
272         STRIPBINARIES=no \
273         INSTALL="install -p"  \
274         CPPROG="cp -p" \
275         DESTDIR=$RPM_BUILD_ROOT
276
277 install -d $RPM_BUILD_ROOT%{_vimdatadir}/{syntax,ftdetect}
278 cp -p editors/proto.vim $RPM_BUILD_ROOT%{_vimdatadir}/syntax/proto.vim
279 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_vimdatadir}/ftdetect/proto.vim
280
281 cd python
282 %if %{with python2}
283 %py_install
284 %py_postclean
285 %endif
286 %if %{with python3}
287 %py3_install
288 %endif
289 cd ..
290
291 %if %{with ruby}
292 install -d $RPM_BUILD_ROOT{%{ruby_vendorarchdir}/google,%{ruby_vendorlibdir}/google,%{ruby_specdir}}
293 install ruby/lib/google/protobuf_c.so $RPM_BUILD_ROOT%{ruby_vendorarchdir}/google
294 cp -pr ruby/lib/google/{protobuf,protobuf.rb} $RPM_BUILD_ROOT%{ruby_vendorlibdir}/google
295 cp -p ruby/google-protobuf.gemspec $RPM_BUILD_ROOT%{ruby_specdir}/google-protobuf-%{version}.gemspec
296 %endif
297 cp -pr examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
298
299 %clean
300 rm -rf $RPM_BUILD_ROOT
301
302 %post   -p /sbin/ldconfig
303 %postun -p /sbin/ldconfig
304
305 %post   libs -p /sbin/ldconfig
306 %postun libs -p /sbin/ldconfig
307
308 %post   lite -p /sbin/ldconfig
309 %postun lite -p /sbin/ldconfig
310
311 %files
312 %defattr(644,root,root,755)
313 %doc CHANGES.txt CONTRIBUTORS.txt LICENSE README.md
314 %attr(755,root,root) %{_bindir}/protoc
315 %attr(755,root,root) %{_libdir}/libprotoc.so.*.*.*
316 %attr(755,root,root) %ghost %{_libdir}/libprotoc.so.25
317
318 %files libs
319 %defattr(644,root,root,755)
320 %attr(755,root,root) %{_libdir}/libprotobuf.so.*.*.*
321 %attr(755,root,root) %ghost %{_libdir}/libprotobuf.so.25
322
323 %files lite
324 %defattr(644,root,root,755)
325 %attr(755,root,root) %{_libdir}/libprotobuf-lite.so.*.*.*
326 %attr(755,root,root) %ghost %{_libdir}/libprotobuf-lite.so.25
327
328 %files devel
329 %defattr(644,root,root,755)
330 %attr(755,root,root) %{_libdir}/libprotobuf-lite.so
331 %attr(755,root,root) %{_libdir}/libprotobuf.so
332 %attr(755,root,root) %{_libdir}/libprotoc.so
333 %{_libdir}/libprotobuf-lite.la
334 %{_libdir}/libprotobuf.la
335 %{_libdir}/libprotoc.la
336 # XXX: dir shared with libtcmalloc
337 %dir %{_includedir}/google
338 %{_includedir}/google/protobuf
339 %{_pkgconfigdir}/protobuf-lite.pc
340 %{_pkgconfigdir}/protobuf.pc
341 %{_examplesdir}/%{name}-%{version}
342
343 %files static
344 %defattr(644,root,root,755)
345 %{_libdir}/libprotobuf-lite.a
346 %{_libdir}/libprotobuf.a
347 %{_libdir}/libprotoc.a
348
349 %if %{with python2}
350 %files -n python-protobuf
351 %defattr(644,root,root,755)
352 %doc python/README.md
353 %dir %{py_sitescriptdir}/google
354 %{py_sitescriptdir}/google/protobuf
355 %{py_sitescriptdir}/protobuf-%{version}-py*.egg-info
356 %{py_sitescriptdir}/protobuf-%{version}-py*-nspkg.pth
357 %endif
358
359 %if %{with python3}
360 %files -n python3-protobuf
361 %defattr(644,root,root,755)
362 %doc python/README.md
363 %dir %{py3_sitescriptdir}/google
364 %{py3_sitescriptdir}/google/protobuf
365 %{py3_sitescriptdir}/protobuf-%{version}-py*.egg-info
366 %{py3_sitescriptdir}/protobuf-%{version}-py*-nspkg.pth
367 %endif
368
369 %if %{with ruby}
370 %files -n ruby-google-protobuf
371 %defattr(644,root,root,755)
372 %doc ruby/README.md
373 %dir %{ruby_vendorarchdir}/google
374 %attr(755,root,root) %{ruby_vendorarchdir}/google/protobuf_c.so
375 %dir %{ruby_vendorlibdir}/google
376 %{ruby_vendorlibdir}/google/protobuf.rb
377 %{ruby_vendorlibdir}/google/protobuf
378 %{ruby_specdir}/google-protobuf-%{version}.gemspec
379 %endif
380
381 %files -n vim-syntax-protobuf
382 %defattr(644,root,root,755)
383 %{_datadir}/vim/ftdetect/proto.vim
384 %{_datadir}/vim/syntax/proto.vim
This page took 0.096233 seconds and 3 git commands to generate.