X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=protobuf.spec;h=312896a0bb75170666b6e6a4e3448519c236f8e7;hb=3820831;hp=e368cc22c99174c0dda86ef4c7e98c939da76876;hpb=60d30a5611ec0a2ed3874d836129a7f90c7f8617;p=packages%2Fprotobuf.git diff --git a/protobuf.spec b/protobuf.spec index e368cc2..312896a 100644 --- a/protobuf.spec +++ b/protobuf.spec @@ -1,47 +1,68 @@ # TODO: -# - add bindings for java -# - tests fail: 2 of 5 tests failed +# - add bindings for java (maven build) +# - add bindings for javascript +# - add bindings for csharp # # Conditional build: -# -%bcond_without python # Python bindings -%bcond_with tests # build with tests +%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.4.1 -Release: 2 +Version: 3.2.1 +Release: 1 License: BSD Group: Libraries -Source0: http://protobuf.googlecode.com/files/%{name}-%{version}.tar.bz2 -# Source0-md5: ed436802019c9e1f40cc750eaf78f318 +#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 -URL: http://code.google.com/p/protobuf/ -BuildRequires: autoconf -BuildRequires: automake +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 -BuildRequires: rpmbuild(macros) >= 1.219 -BuildRequires: zlib-devel -%if %{with python} +%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 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 +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 @@ -49,9 +70,14 @@ 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 +languages. %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. + 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, @@ -60,94 +86,154 @@ 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. -Google używa buforów protokołowych (Protocol Buffers) do prawie -wszystkich wewnętrznych protokołów RPC i formatów plików. +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 libraries -Group: Development/Libraries +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 built with optimize_for = LITE_RUNTIME. +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: Protocol Buffers C++ headers and 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 -This package contains Protocol Buffers compiler for all languages and -C++ headers and 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 development files for protobuf -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 libraries for Protocol Buffers +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 bindings for Google Protocol Buffers -Group: Development/Languages +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 -Conflicts: %{name} < %{version} -Conflicts: %{name} > %{version} %description -n python-protobuf -This package contains Python libraries for Google Protocol Buffers +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 Google Protocol Buffers descriptions +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 Google Protocol Buffers -descriptions in Vim editor +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 -%{__rm} -r gtest +%patch1 -p1 + +ln -s /usr/src/gmock/src/gmock*.cc src %build +%{__libtoolize} %{__aclocal} -I m4 %{__autoconf} +%{__autoheader} %{__automake} -%configure +# 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} -%if %{with python} cd python -%{__python} setup.py build -%{__sed} -i -e 1d build/lib/google/protobuf/descriptor_pb2.py +%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 @@ -169,16 +255,22 @@ 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 -%if %{with python} cd python -%{__python} setup.py install \ - --root=$RPM_BUILD_ROOT \ - --single-version-externally-managed \ - --optimize=2 +%if %{with python2} +%py_install %py_postclean -cd .. %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 @@ -195,20 +287,20 @@ rm -rf $RPM_BUILD_ROOT %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.7 +%attr(755,root,root) %ghost %{_libdir}/libprotoc.so.12 %files libs %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libprotobuf.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libprotobuf.so.7 +%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.7 +%attr(755,root,root) %ghost %{_libdir}/libprotobuf-lite.so.12 %files devel %defattr(644,root,root,755) @@ -218,10 +310,12 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libprotobuf-lite.la %{_libdir}/libprotobuf.la %{_libdir}/libprotoc.la -%{_includedir}/google -%{_examplesdir}/%{name}-%{version} +# 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) @@ -229,14 +323,36 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libprotobuf.a %{_libdir}/libprotoc.a -%if %{with python} +%if %{with python2} %files -n python-protobuf %defattr(644,root,root,755) -%doc python/README.txt +%doc python/README.md %dir %{py_sitescriptdir}/google %{py_sitescriptdir}/google/protobuf -%{py_sitescriptdir}/protobuf-%{version}-py*.egg-info -%{py_sitescriptdir}/protobuf-%{version}-py*-nspkg.pth +%{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