X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=protobuf.spec;h=312896a0bb75170666b6e6a4e3448519c236f8e7;hb=3820831;hp=9ed507ebd19e8392cc00b0557843acdb84351b96;hpb=9db55fcc0dbc9fd933ab512fc5f8e9cc1581729c;p=packages%2Fprotobuf.git diff --git a/protobuf.spec b/protobuf.spec index 9ed507e..312896a 100644 --- a/protobuf.spec +++ b/protobuf.spec @@ -1,111 +1,361 @@ -# # TODO: -# - add bindings for java and python -# - add vim syntax package +# - add bindings for java (maven build) +# - add bindings for javascript +# - add bindings for csharp # +# Conditional build: +%bcond_without python2 # Python 2.x bindings +%bcond_without python3 # Python 3.x bindings +%bcond_without ruby # Ruby bindings +%bcond_without tests # perform "make check" + Summary: Protocol Buffers - Google's data interchange format Summary(pl.UTF-8): Protocol Buffers - format wymiany danych Google Name: protobuf -Version: 2.0.3 +Version: 3.2.1 Release: 1 License: BSD Group: Libraries -Source0: http://protobuf.googlecode.com/files/%{name}-%{version}.tar.bz2 -# Source0-md5: 37e6e4d63434672c70bd977be9c372cb -URL: http://code.google.com/p/protobuf/ +#Source0Download: https://github.com/google/protobuf/releases +Source0: https://github.com/google/protobuf/archive/v%{version}/%{name}-%{version}.tar.gz +# Source0-md5: 94d3a8148c35cedd2db953245e057a67 +Source1: ftdetect-proto.vim +Patch0: system-gtest.patch +Patch1: fix-macro-redefinitions.patch +URL: https://github.com/google/protobuf/ +BuildRequires: autoconf >= 2.59 +BuildRequires: automake >= 1:1.9 +%{?with_tests:BuildRequires: gmock-devel} +%{?with_tests:BuildRequires: gtest-devel} +BuildRequires: libstdc++-devel +BuildRequires: libtool +BuildRequires: pkgconfig +%if %{with python2} +BuildRequires: python-modules >= 1:2.6 +BuildRequires: python-setuptools +%endif +%if %{with python3} +BuildRequires: python3-modules >= 1:3.3 +BuildRequires: python3-setuptools +%endif +%if %{with python2} || %{with python3} +BuildRequires: rpm-pythonprov +%endif +BuildRequires: rpmbuild(macros) >= 1.714 +%if %{with ruby} +BuildRequires: ruby-devel +BuildRequires: ruby-rake +BuildRequires: ruby-rake-compiler +%endif +BuildRequires: zlib-devel >= 1.2.0.4 Requires: %{name}-libs = %{version}-%{release} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) +%define _vimdatadir %{_datadir}/vim + +# triggers bogus "overflow in constant expression" errors with gcc 4.9 .. 5.4 +%define filterout -fwrapv + %description -Protocol buffers are a flexible, efficient, automated mechanism -for serializing structured data - similar to XML, but smaller, -faster, and simpler. You define how you want your data to be -structured once, then you can use special generated source code -to easily write and read your structured data to and from -a variety of data streams and using a variety of languages. -You can even update your data structure without breaking deployed -programs that are compiled against the "old" format. +Protocol Buffers are a way of encoding structured data in an efficient +yet extensible format. Google uses Protocol Buffers for almost all of +its internal RPC protocols and file formats. + +Protocol buffers are a flexible, efficient, automated mechanism for +serializing structured data - think XML, but smaller, faster, and +simpler. You define how you want your data to be structured once, then +you can use special generated source code to easily write and read +your structured data to and from a variety of data streams and using a +variety of languages. You can even update your data structure without +breaking deployed programs that are compiled against the "old" format. + +This package contains Protocol Buffers compiler for all programming +languages. -Google uses Protocol Buffers for almost all of its internal RPC -protocols and file formats. +%description -l pl.UTF-8 +Bufory protokołowe (Protocol Buffers) to sposób kodowania danych +strukturalnych w wydajny i rozszerzalny sposób. Google używa buforów +protokołowych do prawie wszystkich wewnętrznych protokołów RPC i +formatów plików. -#%description -l pl.UTF-8 +Bufory protokołowe to elastyczny, wydajny i zautomatyzowany sposób +serializacji danych strukturalnych - podobny do XML-a, ale mniejszy, +szybszy i prostszy. Definiuje się raz, jaką strukturę mają mieć dane, +a następnie używa specjalnie wygenerowanego kodu źródłowego do łatwego +zapisu i odczytu danych strukturalnych do i z różnych strumieni +danych, z poziomu różnych języków. Można nawet uaktualniać strukturę +danych bez psucia programów skompilowanych w oparciu o "stary" format. + +Ten pakiet zawiera kompilator buforów protokołowych dla wszystkich +języków programowania. %package libs -Summary: protobuf libraries -Summary(pl.UTF-8): Biblioteki protobuf +Summary: Protocol Buffers library +Summary(pl.UTF-8): Biblioteka buforów protokołowych (Protocol Buffers) Group: Libraries +Requires: zlib >= 1.2.0.4 %description libs -protobuf libraries. +Protocol Buffers library. %description libs -l pl.UTF-8 -Biblioteki protobuf. +Biblioteka buforów protokołowych (Protocol Buffers). + +%package lite +Summary: Protocol Buffers LITE_RUNTIME library +Summary(pl.UTF-8): Biblioteka LITE_RUNTIME buforów protokołowych (Protocol Buffers) +Group: Libraries + +%description lite +Protocol Buffers library for programs built with optimize_for = +LITE_RUNTIME. + +The "optimize_for = LITE_RUNTIME" option causes the compiler to +generate code which only depends libprotobuf-lite, which is much +smaller than libprotobuf but lacks descriptors, reflection, and some +other features. + +%description lite -l pl.UTF-8 +Biblioteka buforów protokołowych (Protocol Buffers) zbudowana dla +programów z opcją optimize_for = LITE_RUNTIME. + +Opcja ta powoduje, że kompilator generuje kod, który wymaga tylko +biblioteki libprotobuf-lite, która jest mniejsza niż libprotobuf, ale +nie ma niektórych elementów, takich jak deskryptory czy refleksje. %package devel -Summary: Header files for protobuf libraries -Summary(pl.UTF-8): Pliki nagłówkowe bibliotek protobuf +Summary: Header files for Protocol Buffers libraries +Summary(pl.UTF-8): Pliki nagłówkowe bibliotek buforów protokołowych (Protocol Buffers) Group: Development/Libraries +Requires: %{name} = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-lite = %{version}-%{release} +Requires: libstdc++-devel %description devel -Header files for protobuf libraries. +Header files for Protocol Buffers libraries. %description devel -l pl.UTF-8 -Pliki nagłówkowe bibliotek protobuf. +Pliki nagłówkowe bibliotek buforów protokołowych (Protocol Buffers). %package static -Summary: Static protobuf libraries -Summary(pl.UTF-8): Statyczne biblioteki protobuf +Summary: Static Protocol Buffers libraries +Summary(pl.UTF-8): Statyczne biblioteki buforów protokołowych (Protocol Buffers) Group: Development/Libraries Requires: %{name}-devel = %{version}-%{release} %description static -Static protobuf libraries. +Static Protocol Buffers libraries. %description static -l pl.UTF-8 -Statyczne biblioteki protobuf. +Statyczne biblioteki buforów protokołowych (Protocol Buffers). + +%package -n python-protobuf +Summary: Python 2 bindings for Protocol Buffers +Summary(pl.UTF-8): Wiązania Pythona 2 do buforów protokołowych (Protocol Buffers) +Group: Development/Languages/Python +Requires: python-modules >= 1:2.6 +# does not use C++ library at this time + +%description -n python-protobuf +Python 2 bindings for Protocol Buffers. + +%description -n python-protobuf -l pl.UTF-8 +Wiązania Pythona 2 do buforów protokołowych (Protocol Buffers). + +%package -n python3-protobuf +Summary: Python 3 bindings for Protocol Buffers +Summary(pl.UTF-8): Wiązania Pythona 3 do buforów protokołowych (Protocol Buffers) +Group: Development/Languages/Python +Requires: python3-modules >= 1:3.3 +# does not use C++ library at this time + +%description -n python3-protobuf +Python 3 bindings for Protocol Buffers. + +%description -n python3-protobuf -l pl.UTF-8 +Wiązania Pythona 3 do buforów protokołowych (Protocol Buffers). + +%package -n ruby-google-protobuf +Summary: Ruby bindings for Google Protocol Buffers +Summary(pl.UTF-8): Wiązania języka Ruby do biblioteki Google Protocol Buffers +Group: Development/Languages +Requires: ruby + +%description -n ruby-google-protobuf +Ruby bindings for Google Protocol Buffers. + +%description -n ruby-google-protobuf -l pl.UTF-8 +Wiązania języka Ruby do biblioteki Google Protocol Buffers. + +%package -n vim-syntax-protobuf +Summary: Vim syntax highlighting for Protocol Buffers descriptions +Summary(pl.UTF-8): Podświetlanie składni Vima dla opisów buforów protokołowych (Protocol Buffers) +Group: Development/Libraries +Requires: vim-rt >= 4:7.2.170 + +%description -n vim-syntax-protobuf +This package contains syntax highlighting for Protocol Buffers +descriptions in Vim editor. + +%description -n vim-syntax-protobuf -l pl.UTF-8 +Ten pakiet zawiera pliki podświetlania składni edytora Vim dla +opisów buforów protokołowych (Protocol Buffers). %prep %setup -q +%patch0 -p1 +%patch1 -p1 + +ln -s /usr/src/gmock/src/gmock*.cc src %build -%configure +%{__libtoolize} +%{__aclocal} -I m4 +%{__autoconf} +%{__autoheader} +%{__automake} +# Additional variables defined according to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192821 +%configure \ + CFLAGS='%{rpmcflags} -DGOOGLE_PROTOBUF_NO_RTTI' \ + CPPFLAGS='%{rpmcppflags} -DGOOGLE_PROTOBUF_NO_RTTI' %{__make} +cd python +%if %{with python2} +%py_build +%endif +%if %{with python3} +%py3_build +%endif +cd .. + +%if %{with ruby} +cd ruby +rake +#rake clobber_package gem +cd .. +%endif + +%if %{with tests} +%{__make} check +%endif + %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} %{__make} install \ + STRIPBINARIES=no \ + INSTALL="install -p" \ + CPPROG="cp -p" \ DESTDIR=$RPM_BUILD_ROOT -install examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} +install -d $RPM_BUILD_ROOT%{_vimdatadir}/{syntax,ftdetect} +cp -p editors/proto.vim $RPM_BUILD_ROOT%{_vimdatadir}/syntax/proto.vim +cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_vimdatadir}/ftdetect/proto.vim + +cd python +%if %{with python2} +%py_install +%py_postclean +%endif +%if %{with python3} +%py3_install +%endif +cd .. + +%if %{with ruby} +install -d $RPM_BUILD_ROOT{%{ruby_vendorarchdir}/google,%{ruby_vendorlibdir}/google,%{ruby_specdir}} +install ruby/lib/google/protobuf_c.so $RPM_BUILD_ROOT%{ruby_vendorarchdir}/google +cp -pr ruby/lib/google/{protobuf,protobuf.rb} $RPM_BUILD_ROOT%{ruby_vendorlibdir}/google +cp -p ruby/google-protobuf.gemspec $RPM_BUILD_ROOT%{ruby_specdir}/google-protobuf-%{version}.gemspec +%endif +cp -p examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} %clean rm -rf $RPM_BUILD_ROOT +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig +%post lite -p /sbin/ldconfig +%postun lite -p /sbin/ldconfig + %files %defattr(644,root,root,755) -%doc CHANGES.txt CONTRIBUTORS.txt README.txt +%doc CHANGES.txt CONTRIBUTORS.txt LICENSE README.md %attr(755,root,root) %{_bindir}/protoc +%attr(755,root,root) %{_libdir}/libprotoc.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libprotoc.so.12 %files libs %defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libproto*.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libprotobuf.so.3 -%attr(755,root,root) %ghost %{_libdir}/libprotoc.so.3 +%attr(755,root,root) %{_libdir}/libprotobuf.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libprotobuf.so.12 + +%files lite +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libprotobuf-lite.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libprotobuf-lite.so.12 %files devel %defattr(644,root,root,755) -%{_includedir}/google -%attr(755,root,root) %{_libdir}/libproto*.la -%attr(755,root,root) %{_libdir}/libproto*.so +%attr(755,root,root) %{_libdir}/libprotobuf-lite.so +%attr(755,root,root) %{_libdir}/libprotobuf.so +%attr(755,root,root) %{_libdir}/libprotoc.so +%{_libdir}/libprotobuf-lite.la +%{_libdir}/libprotobuf.la +%{_libdir}/libprotoc.la +# XXX: dir shared with libtcmalloc +%dir %{_includedir}/google +%{_includedir}/google/protobuf +%{_pkgconfigdir}/protobuf-lite.pc +%{_pkgconfigdir}/protobuf.pc %{_examplesdir}/%{name}-%{version} %files static %defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libproto*.a +%{_libdir}/libprotobuf-lite.a +%{_libdir}/libprotobuf.a +%{_libdir}/libprotoc.a + +%if %{with python2} +%files -n python-protobuf +%defattr(644,root,root,755) +%doc python/README.md +%dir %{py_sitescriptdir}/google +%{py_sitescriptdir}/google/protobuf +%{py_sitescriptdir}/protobuf-*-py*.egg-info +%{py_sitescriptdir}/protobuf-*-py*-nspkg.pth +%endif + +%if %{with python3} +%files -n python3-protobuf +%defattr(644,root,root,755) +%doc python/README.md +%dir %{py3_sitescriptdir}/google +%{py3_sitescriptdir}/google/protobuf +%{py3_sitescriptdir}/protobuf-*-py*.egg-info +%{py3_sitescriptdir}/protobuf-*-py*-nspkg.pth +%endif + +%if %{with ruby} +%files -n ruby-google-protobuf +%defattr(644,root,root,755) +%doc ruby/README.md +%dir %{ruby_vendorarchdir}/google +%attr(755,root,root) %{ruby_vendorarchdir}/google/protobuf_c.so +%dir %{ruby_vendorlibdir}/google +%{ruby_vendorlibdir}/google/protobuf.rb +%{ruby_vendorlibdir}/google/protobuf +%{ruby_specdir}/google-protobuf-%{version}.gemspec +%endif + +%files -n vim-syntax-protobuf +%defattr(644,root,root,755) +%{_datadir}/vim/ftdetect/proto.vim +%{_datadir}/vim/syntax/proto.vim