628e06
# Build -python subpackage
628e06
%bcond_without python
628e06
# Build -java subpackage
628e06
%bcond_without java
628e06
# Don't require gtest
628e06
%bcond_with gtest
628e06
628e06
%if %{with python}
628e06
%define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
628e06
%endif
628e06
628e06
%global emacs_version %(pkg-config emacs --modversion)
628e06
%global emacs_lispdir %(pkg-config emacs --variable sitepkglispdir)
628e06
%global emacs_startdir %(pkg-config emacs --variable sitestartdir)
628e06
628e06
Summary:        Protocol Buffers - Google's data interchange format
628e06
Name:           protobuf
628e06
Version:        2.5.0
628e06
Release:        8%{?dist}
628e06
License:        BSD
628e06
Group:          Development/Libraries
628e06
Source:         http://protobuf.googlecode.com/files/protobuf-%{version}.tar.bz2
628e06
Source1:        ftdetect-proto.vim
628e06
Source2:        protobuf-init.el
628e06
Patch1:         protobuf-2.5.0-fedora-gtest.patch
628e06
Patch2:         protobuf-2.5.0-java-fixes.patch
628e06
Patch3:         0001-Add-generic-GCC-support-for-atomic-operations.patch
628e06
Patch4:         protobuf-2.5.0-makefile.patch
628e06
URL:            http://code.google.com/p/protobuf/
628e06
BuildRequires:  automake autoconf libtool pkgconfig zlib-devel
628e06
BuildRequires:  emacs
628e06
BuildRequires:  emacs-el >= 24.1
628e06
%if %{with gtest}
628e06
BuildRequires:  gtest-devel
628e06
%endif
628e06
628e06
%description
628e06
Protocol Buffers are a way of encoding structured data in an efficient
628e06
yet extensible format. Google uses Protocol Buffers for almost all of
628e06
its internal RPC protocols and file formats.
628e06
628e06
Protocol buffers are a flexible, efficient, automated mechanism for
628e06
serializing structured data – think XML, but smaller, faster, and
628e06
simpler. You define how you want your data to be structured once, then
628e06
you can use special generated source code to easily write and read
628e06
your structured data to and from a variety of data streams and using a
628e06
variety of languages. You can even update your data structure without
628e06
breaking deployed programs that are compiled against the "old" format.
628e06
628e06
%package compiler
628e06
Summary: Protocol Buffers compiler
628e06
Group: Development/Libraries
628e06
Requires: %{name} = %{version}-%{release}
628e06
628e06
%description compiler
628e06
This package contains Protocol Buffers compiler for all programming
628e06
languages
628e06
628e06
%package devel
628e06
Summary: Protocol Buffers C++ headers and libraries
628e06
Group: Development/Libraries
628e06
Requires: %{name} = %{version}-%{release}
628e06
Requires: %{name}-compiler = %{version}-%{release}
628e06
Requires: zlib-devel
628e06
Requires: pkgconfig
628e06
628e06
%description devel
628e06
This package contains Protocol Buffers compiler for all languages and
628e06
C++ headers and libraries
628e06
628e06
%package static
628e06
Summary: Static development files for %{name}
628e06
Group: Development/Libraries
628e06
Requires: %{name} = %{version}-%{release}
628e06
628e06
%description static
628e06
Static libraries for Protocol Buffers
628e06
628e06
%package lite
628e06
Summary: Protocol Buffers LITE_RUNTIME libraries
628e06
Group: Development/Libraries
628e06
628e06
%description lite
628e06
Protocol Buffers built with optimize_for = LITE_RUNTIME.
628e06
628e06
The "optimize_for = LITE_RUNTIME" option causes the compiler to generate code
628e06
which only depends libprotobuf-lite, which is much smaller than libprotobuf but
628e06
lacks descriptors, reflection, and some other features.
628e06
628e06
%package lite-devel
628e06
Summary: Protocol Buffers LITE_RUNTIME development libraries
628e06
Requires: %{name}-devel = %{version}-%{release}
628e06
Requires: %{name}-lite = %{version}-%{release}
628e06
628e06
%description lite-devel
628e06
This package contains development libraries built with
628e06
optimize_for = LITE_RUNTIME.
628e06
628e06
The "optimize_for = LITE_RUNTIME" option causes the compiler to generate code
628e06
which only depends libprotobuf-lite, which is much smaller than libprotobuf but
628e06
lacks descriptors, reflection, and some other features.
628e06
628e06
%package lite-static
628e06
Summary: Static development files for %{name}-lite
628e06
Group: Development/Libraries
628e06
Requires: %{name}-devel = %{version}-%{release}
628e06
628e06
%description lite-static
628e06
This package contains static development libraries built with
628e06
optimize_for = LITE_RUNTIME.
628e06
628e06
The "optimize_for = LITE_RUNTIME" option causes the compiler to generate code
628e06
which only depends libprotobuf-lite, which is much smaller than libprotobuf but
628e06
lacks descriptors, reflection, and some other features.
628e06
628e06
%if %{with python}
628e06
%package python
628e06
Summary: Python bindings for Google Protocol Buffers
628e06
Group: Development/Languages
628e06
BuildRequires: python-devel
628e06
BuildRequires: python-setuptools
628e06
Conflicts: %{name}-compiler > %{version}
628e06
Conflicts: %{name}-compiler < %{version}
628e06
628e06
%description python
628e06
This package contains Python libraries for Google Protocol Buffers
628e06
%endif
628e06
628e06
%package vim
628e06
Summary: Vim syntax highlighting for Google Protocol Buffers descriptions
628e06
Group: Development/Libraries
628e06
Requires: vim-enhanced
628e06
628e06
%description vim
628e06
This package contains syntax highlighting for Google Protocol Buffers
628e06
descriptions in Vim editor
628e06
628e06
%package emacs
628e06
Summary: Emacs mode for Google Protocol Buffers descriptions
628e06
Group: Applications/Editors
628e06
Requires: emacs >= 0%{emacs_version}
628e06
628e06
%description emacs
628e06
This package contains syntax highlighting for Google Protocol Buffers
628e06
descriptions in the Emacs editor.
628e06
628e06
%package emacs-el
628e06
Summary: Elisp source files for Google protobuf Emacs mode
628e06
Group: Applications/Editors
628e06
Requires: protobuf-emacs = %{version}
628e06
628e06
%description emacs-el
628e06
This package contains the elisp source files for %{name}-emacs
628e06
under GNU Emacs. You do not need to install this package to use
628e06
%{name}-emacs.
628e06
628e06
628e06
%if %{with java}
628e06
%package java
628e06
Summary: Java Protocol Buffers runtime library
628e06
Group:   Development/Languages
628e06
BuildRequires:    java-devel >= 1.6
628e06
BuildRequires:    jpackage-utils
628e06
BuildRequires:    maven-local
628e06
BuildRequires:    maven-compiler-plugin
628e06
BuildRequires:    maven-install-plugin
628e06
BuildRequires:    maven-jar-plugin
628e06
BuildRequires:    maven-javadoc-plugin
628e06
BuildRequires:    maven-resources-plugin
628e06
BuildRequires:    maven-surefire-plugin
628e06
BuildRequires:    maven-antrun-plugin
628e06
Conflicts:        %{name}-compiler > %{version}
628e06
Conflicts:        %{name}-compiler < %{version}
628e06
628e06
%description java
628e06
This package contains Java Protocol Buffers runtime library.
628e06
628e06
%package javadoc
628e06
Summary: Javadocs for %{name}-java
628e06
Group:   Documentation
628e06
Requires: %{name}-java = %{version}-%{release}
628e06
628e06
%description javadoc
628e06
This package contains the API documentation for %{name}-java.
628e06
628e06
%endif
628e06
628e06
%prep
628e06
%setup -q
628e06
%if %{with gtest}
628e06
rm -rf gtest
628e06
%patch1 -p1 -b .gtest
628e06
%endif
628e06
chmod 644 examples/*
628e06
%if %{with java}
628e06
%patch2 -p1 -b .java-fixes
628e06
rm -rf java/src/test
628e06
%endif
628e06
628e06
%patch3 -p1 -b .generic-atomics
628e06
%patch4 -p1 -b .generic-atomics-makefile
628e06
628e06
%build
628e06
iconv -f iso8859-1 -t utf-8 CONTRIBUTORS.txt > CONTRIBUTORS.txt.utf8
628e06
mv CONTRIBUTORS.txt.utf8 CONTRIBUTORS.txt
628e06
export PTHREAD_LIBS="-lpthread"
628e06
./autogen.sh
628e06
%configure
628e06
628e06
make %{?_smp_mflags}
628e06
628e06
%if %{with python}
628e06
pushd python
628e06
python ./setup.py build
628e06
sed -i -e 1d build/lib/google/protobuf/descriptor_pb2.py
628e06
popd
628e06
%endif
628e06
628e06
%if %{with java}
628e06
pushd java
628e06
%mvn_file : %{name}
628e06
%mvn_build
628e06
popd
628e06
%endif
628e06
628e06
emacs -batch -f batch-byte-compile editors/protobuf-mode.el
628e06
628e06
%check
628e06
#make %{?_smp_mflags} check
628e06
628e06
%install
628e06
rm -rf %{buildroot}
628e06
make %{?_smp_mflags} install DESTDIR=%{buildroot} STRIPBINARIES=no INSTALL="%{__install} -p" CPPROG="cp -p"
628e06
find %{buildroot} -type f -name "*.la" -exec rm -f {} \;
628e06
628e06
%if %{with python}
628e06
pushd python
628e06
python ./setup.py install --root=%{buildroot} --single-version-externally-managed --record=INSTALLED_FILES --optimize=1
628e06
popd
628e06
%endif
628e06
install -p -m 644 -D %{SOURCE1} %{buildroot}%{_datadir}/vim/vimfiles/ftdetect/proto.vim
628e06
install -p -m 644 -D editors/proto.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax/proto.vim
628e06
628e06
%if %{with java}
628e06
pushd java
628e06
%mvn_install
628e06
popd
628e06
%endif
628e06
628e06
mkdir -p $RPM_BUILD_ROOT%{emacs_lispdir}
628e06
mkdir -p $RPM_BUILD_ROOT%{emacs_startdir}
628e06
install -p -m 0644 editors/protobuf-mode.el $RPM_BUILD_ROOT%{emacs_lispdir}
628e06
install -p -m 0644 editors/protobuf-mode.elc $RPM_BUILD_ROOT%{emacs_lispdir}
628e06
install -p -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{emacs_startdir}
628e06
628e06
628e06
%post -p /sbin/ldconfig
628e06
%postun -p /sbin/ldconfig
628e06
628e06
%post lite -p /sbin/ldconfig
628e06
%postun lite -p /sbin/ldconfig
628e06
628e06
%post compiler -p /sbin/ldconfig
628e06
%postun compiler -p /sbin/ldconfig
628e06
628e06
%files
628e06
%defattr(-, root, root, -)
628e06
%{_libdir}/libprotobuf.so.*
628e06
%doc CHANGES.txt CONTRIBUTORS.txt COPYING.txt README.txt
628e06
628e06
%files compiler
628e06
%defattr(-, root, root, -)
628e06
%{_bindir}/protoc
628e06
%{_libdir}/libprotoc.so.*
628e06
%doc COPYING.txt README.txt
628e06
628e06
%files devel
628e06
%defattr(-, root, root, -)
628e06
%dir %{_includedir}/google
628e06
%{_includedir}/google/protobuf/
628e06
%{_libdir}/libprotobuf.so
628e06
%{_libdir}/libprotoc.so
628e06
%{_libdir}/pkgconfig/protobuf.pc
628e06
%doc examples/add_person.cc examples/addressbook.proto examples/list_people.cc examples/Makefile examples/README.txt
628e06
628e06
%files static
628e06
%defattr(-, root, root, -)
628e06
%{_libdir}/libprotobuf.a
628e06
%{_libdir}/libprotoc.a
628e06
628e06
%files lite
628e06
%defattr(-, root, root, -)
628e06
%{_libdir}/libprotobuf-lite.so.*
628e06
628e06
%files lite-devel
628e06
%defattr(-, root, root, -)
628e06
%{_libdir}/libprotobuf-lite.so
628e06
%{_libdir}/pkgconfig/protobuf-lite.pc
628e06
628e06
%files lite-static
628e06
%defattr(-, root, root, -)
628e06
%{_libdir}/libprotobuf-lite.a
628e06
628e06
%if %{with python}
628e06
%files python
628e06
%defattr(-, root, root, -)
628e06
%dir %{python_sitelib}/google
628e06
%{python_sitelib}/google/protobuf/
628e06
%{python_sitelib}/protobuf-%{version}-py2.?.egg-info/
628e06
%{python_sitelib}/protobuf-%{version}-py2.?-nspkg.pth
628e06
%doc python/README.txt
628e06
%doc examples/add_person.py examples/list_people.py examples/addressbook.proto
628e06
%endif
628e06
628e06
%files vim
628e06
%defattr(-, root, root, -)
628e06
%{_datadir}/vim/vimfiles/ftdetect/proto.vim
628e06
%{_datadir}/vim/vimfiles/syntax/proto.vim
628e06
628e06
%files emacs
628e06
%defattr(-,root,root,-)
628e06
%{emacs_startdir}/protobuf-init.el
628e06
%{emacs_lispdir}/protobuf-mode.elc
628e06
628e06
%files emacs-el
628e06
%defattr(-,root,root,-)
628e06
%{emacs_lispdir}/protobuf-mode.el
628e06
628e06
%if %{with java}
628e06
%files java -f java/.mfiles
628e06
%doc examples/AddPerson.java examples/ListPeople.java
628e06
628e06
%files javadoc -f java/.mfiles-javadoc
628e06
%endif
628e06
628e06
%changelog
628e06
* Mon Jul 27 2015 Adrian Reber <areber@redhat.com> - 2.5.0-8
628e06
- Merge specfiles
628e06
628e06
* Wed Dec 17 2014 Peter Lemenkov <lemenkov@gmail.com> - 2.5.0-7
628e06
- Added missing Requires zlib-devel to protobuf-devel (see rhbz #1173343). See
628e06
  also rhbz #732087.
628e06
628e06
* Thu Dec 12 2013 Conrad Meyer <cemeyer@uw.edu> - 2.5.0-6.1
628e06
- BR python-setuptools-devel -> python-setuptools
628e06
628e06
* Mon Aug 26 2013 Michal Srb <msrb@redhat.com> - 2.5.0-6
628e06
- Migrate away from mvn-rpmbuild (Resolves: #997515)
628e06
628e06
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.5.0-5.1
628e06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
628e06
628e06
* Fri Jun 28 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.5.0-5
628e06
- Rebuild to regenerate API documentation
628e06
- Resolv: CVE-2013-1571
628e06
628e06
* Thu May 16 2013 Dan Horák <dan[at]danny.cz> - 2.5.0-4
628e06
- export the new generic atomics header (rh #926374)
628e06
628e06
* Mon May 6 2013 Stanislav Ochotnicky <sochotnicky@redhat.com> - 2.5.0-3
628e06
- Add support for generic gcc atomic operations (rh #926374)
628e06
628e06
* Sat Apr 27 2013 Conrad Meyer <cemeyer@uw.edu> - 2.5.0-2
628e06
- Remove changelog history from before 2010
628e06
- This spec already runs autoreconf -fi during %%build, but bump build for
628e06
  rhbz #926374
628e06
628e06
* Sat Mar 9 2013 Conrad Meyer <cemeyer@uw.edu> - 2.5.0-1
628e06
- Bump to latest upstream (#883822)
628e06
- Rebase gtest, maven patches on 2.5.0
628e06
628e06
* Tue Feb 26 2013 Conrad Meyer <cemeyer@uw.edu> - 2.4.1-12
628e06
- Nuke BR on maven-doxia, maven-doxia-sitetools (#915620)
628e06
628e06
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-11
628e06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
628e06
628e06
* Wed Feb 06 2013 Java SIG <java-devel@lists.fedoraproject.org> - 2.4.1-10
628e06
- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild
628e06
- Replace maven BuildRequires with maven-local
628e06
628e06
* Sun Jan 20 2013 Conrad Meyer <konrad@tylerc.org> - 2.4.1-9
628e06
- Fix packaging bug, -emacs-el subpackage should depend on -emacs subpackage of
628e06
  the same version (%%version), not the emacs version number...
628e06
628e06
* Thu Jan 17 2013 Tim Niemueller <tim@niemueller.de> - 2.4.1-8
628e06
- Added sub-package for Emacs editing mode
628e06
628e06
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-7
628e06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
628e06
628e06
* Mon Mar 19 2012 Dan Horák <dan[at]danny.cz> - 2.4.1-6
628e06
- disable test-suite until g++ 4.7 issues are resolved
628e06
628e06
* Mon Mar 19 2012 Stanislav Ochotnicky <sochotnicky@redhat.com> - 2.4.1-5
628e06
- Update to latest java packaging guidelines
628e06
628e06
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-4
628e06
- Rebuilt for c++ ABI breakage
628e06
628e06
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-3
628e06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
628e06
628e06
* Tue Sep 27 2011 Pierre-Yves Chibon <pingou@pingoured.fr> - 2.4.1-2
628e06
- Adding zlib-devel as BR (rhbz: #732087)
628e06
628e06
* Thu Jun 09 2011 BJ Dierkes <wdierkes@rackspace.com> - 2.4.1-1
628e06
- Latest sources from upstream.
628e06
- Rewrote Patch2 as protobuf-2.4.1-java-fixes.patch
628e06
628e06
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.0-7
628e06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
628e06
628e06
* Thu Jan 13 2011 Stanislav Ochotnicky <sochotnicky@redhat.com> - 2.3.0-6
628e06
- Fix java subpackage bugs #669345 and #669346
628e06
- Use new maven plugin names
628e06
- Use mavenpomdir macro for pom installation
628e06
628e06
* Mon Jul 26 2010 David Malcolm <dmalcolm@redhat.com> - 2.3.0-5
628e06
- generalize hardcoded reference to 2.6 in python subpackage %%files manifest
628e06
628e06
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 2.3.0-4
628e06
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
628e06
628e06
* Thu Jul 15 2010 James Laska <jlaska@redhat.com> - 2.3.0-3
628e06
- Correct use of %bcond macros
628e06
628e06
* Wed Jul 14 2010 James Laska <jlaska@redhat.com> - 2.3.0-2
628e06
- Enable python and java sub-packages
628e06
628e06
* Tue May 4 2010 Conrad Meyer <konrad@tylerc.org> - 2.3.0-1
628e06
- bump to 2.3.0