# Build -python subpackage %bcond_without python %if 0%{?fedora} || 0%{?rhel} > 7 %bcond_without python3 %bcond_without java %else # Do not build python3 subpackage on EL7 %bcond_with python3 # Do not build -java subpackage on EL7 %bcond_with java %endif #global rcver rc2 Summary: Protocol Buffers - Google's data interchange format Name: protobuf Version: 3.6.1 Release: 4%{?dist} License: BSD URL: https://github.com/protocolbuffers/protobuf Source: https://github.com/protocolbuffers/protobuf/archive/v%{version}%{?rcver}/%{name}-%{version}%{?rcver}-all.tar.gz Source1: ftdetect-proto.vim Source2: protobuf-init.el # For tests Source3: https://github.com/google/googletest/archive/release-1.8.1.tar.gz#/googletest-1.8.1.tar.gz BuildRequires: autoconf BuildRequires: automake BuildRequires: emacs BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: zlib-devel Requires: emacs-filesystem >= %{_emacs_version} %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 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. %package compiler Summary: Protocol Buffers compiler Requires: %{name} = %{version}-%{release} Obsoletes: protobuf-emacs < 3.6.1-4 Obsoletes: protobuf-emacs-el < 3.6.1-4 %description compiler This package contains Protocol Buffers compiler for all programming languages %package devel Summary: Protocol Buffers C++ headers and libraries Requires: %{name} = %{version}-%{release} Requires: %{name}-compiler = %{version}-%{release} Requires: zlib-devel Requires: pkgconfig %description devel This package contains Protocol Buffers compiler for all languages and C++ headers and libraries %package static Summary: Static development files for %{name} Requires: %{name}-devel = %{version}-%{release} %description static Static libraries for Protocol Buffers %package lite Summary: Protocol Buffers LITE_RUNTIME libraries %description lite Protocol Buffers 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. %package lite-devel Summary: Protocol Buffers LITE_RUNTIME development libraries Requires: %{name}-devel = %{version}-%{release} Requires: %{name}-lite = %{version}-%{release} %description lite-devel This package contains development libraries 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. %package lite-static Summary: Static development files for %{name}-lite Requires: %{name}-devel = %{version}-%{release} %description lite-static This package contains static development libraries 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. %if %{with python} %package -n python2-%{name} Summary: Python 2 bindings for Google Protocol Buffers BuildArch: noarch BuildRequires: python2-devel BuildRequires: python2-setuptools Requires: python2-six >= 1.9 Conflicts: %{name}-compiler > %{version} Conflicts: %{name}-compiler < %{version} Obsoletes: %{name}-python < 3.1.0-4 Provides: %{name}-python = %{version}-%{release} %{?python_provide:%python_provide python2-%{name}} %description -n python2-%{name} This package contains Python 2 libraries for Google Protocol Buffers %if %{with python3} %package -n python%{python3_pkgversion}-%{name} Summary: Python 3 bindings for Google Protocol Buffers BuildArch: noarch BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools Requires: python%{python3_pkgversion}-six >= 1.9 Conflicts: %{name}-compiler > %{version} Conflicts: %{name}-compiler < %{version} Provides: %{name}-python3 = %{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}} %description -n python%{python3_pkgversion}-%{name} This package contains Python 3 libraries for Google Protocol Buffers %endif %endif %package vim Summary: Vim syntax highlighting for Google Protocol Buffers descriptions BuildArch: noarch Requires: vim-enhanced %description vim This package contains syntax highlighting for Google Protocol Buffers descriptions in Vim editor %if %{with java} %package java Summary: Java Protocol Buffers runtime library BuildArch: noarch BuildRequires: maven-local BuildRequires: mvn(com.google.code.gson:gson) BuildRequires: mvn(com.google.guava:guava) BuildRequires: mvn(junit:junit) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-source-plugin) BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) BuildRequires: mvn(org.easymock:easymock) Conflicts: %{name}-compiler > %{version} Conflicts: %{name}-compiler < %{version} Obsoletes: %{name}-javanano < 3.6.0 %description java This package contains Java Protocol Buffers runtime library. %package java-util Summary: Utilities for Protocol Buffers BuildArch: noarch %description java-util Utilities to work with protos. It contains JSON support as well as utilities to work with proto3 well-known types. %package javadoc Summary: Javadoc for %{name}-java BuildArch: noarch %description javadoc This package contains the API documentation for %{name}-java. %package parent Summary: Protocol Buffer Parent POM BuildArch: noarch %description parent Protocol Buffer Parent POM. %endif %prep %setup -q -n %{name}-%{version}%{?rcver} -a 3 %autopatch -p1 mv googletest-release-1.8.1/* third_party/googletest/ find -name \*.cc -o -name \*.h | xargs chmod -x chmod 644 examples/* %if %{with java} %pom_remove_parent java/pom.xml %pom_remove_dep org.easymock:easymockclassextension java/pom.xml java/*/pom.xml # These use easymockclassextension rm java/core/src/test/java/com/google/protobuf/ServiceTest.java #rm -r java/core/src/test # Make OSGi dependency on sun.misc package optional %pom_xpath_inject "pom:configuration/pom:instructions" "sun.misc;resolution:=optional,*" java/core # Backward compatibility symlink %mvn_file :protobuf-java:jar: %{name}/%{name}-java %{name} # This test is incredibly slow on arm # https://github.com/google/protobuf/issues/2389 %ifarch %{arm} mv java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java.slow %endif %endif rm -f src/solaris/libstdc++.la %build iconv -f iso8859-1 -t utf-8 CONTRIBUTORS.txt > CONTRIBUTORS.txt.utf8 mv CONTRIBUTORS.txt.utf8 CONTRIBUTORS.txt export PTHREAD_LIBS="-lpthread" ./autogen.sh %configure %make_build %if %{with python} pushd python %py2_build %if %{with python3} %py3_build %endif popd %endif %if %{with java} %mvn_build -s -- -f java/pom.xml %endif %{_emacs_bytecompile} editors/protobuf-mode.el %check # Java tests fail on s390x %ifarch s390x fail=0 %else fail=1 %endif make %{?_smp_mflags} check || exit $fail %install %make_install %{?_smp_mflags} STRIPBINARIES=no INSTALL="%{__install} -p" CPPROG="cp -p" find %{buildroot} -type f -name "*.la" -exec rm -f {} \; %if %{with python} pushd python #python ./setup.py install --root=%{buildroot} --single-version-externally-managed --record=INSTALLED_FILES --optimize=1 %py2_install find %{buildroot}%{python2_sitelib} -name \*.py | xargs sed -i -e '1{\@^#!@d}' %if %{with python3} %py3_install find %{buildroot}%{python3_sitelib} -name \*.py | xargs sed -i -e '1{\@^#!@d}' %endif popd %endif install -p -m 644 -D %{SOURCE1} %{buildroot}%{_datadir}/vim/vimfiles/ftdetect/proto.vim install -p -m 644 -D editors/proto.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax/proto.vim %if %{with java} %mvn_install %endif mkdir -p %{buildroot}%{_emacs_sitelispdir}/%{name} install -p -m 0644 editors/protobuf-mode.el %{buildroot}%{_emacs_sitelispdir}/%{name} install -p -m 0644 editors/protobuf-mode.elc %{buildroot}%{_emacs_sitelispdir}/%{name} mkdir -p %{buildroot}%{_emacs_sitestartdir} install -p -m 0644 %{SOURCE2} %{buildroot}%{_emacs_sitestartdir} %if 0%{?fedora} || 0%{?rhel} > 7 %ldconfig_scriptlets %ldconfig_scriptlets lite %ldconfig_scriptlets compiler %else %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %post lite -p /sbin/ldconfig %postun lite -p /sbin/ldconfig %post compiler -p /sbin/ldconfig %postun compiler -p /sbin/ldconfig %endif %files %doc CHANGES.txt CONTRIBUTORS.txt README.md %license LICENSE %{_libdir}/libprotobuf.so.17* %files compiler %doc README.md %license LICENSE %{_bindir}/protoc %{_libdir}/libprotoc.so.17* %{_emacs_sitelispdir}/%{name}/ %{_emacs_sitestartdir}/protobuf-init.el %files devel %dir %{_includedir}/google %{_includedir}/google/protobuf/ %{_libdir}/libprotobuf.so %{_libdir}/libprotoc.so %{_libdir}/pkgconfig/protobuf.pc %doc examples/add_person.cc examples/addressbook.proto examples/list_people.cc examples/Makefile examples/README.md %files static %{_libdir}/libprotobuf.a %{_libdir}/libprotoc.a %files lite %{_libdir}/libprotobuf-lite.so.17* %files lite-devel %{_libdir}/libprotobuf-lite.so %{_libdir}/pkgconfig/protobuf-lite.pc %files lite-static %{_libdir}/libprotobuf-lite.a %if %{with python} %files -n python2-protobuf %dir %{python2_sitelib}/google %{python2_sitelib}/google/protobuf/ %{python2_sitelib}/protobuf-%{version}%{?rcver}-py2.?.egg-info/ %{python2_sitelib}/protobuf-%{version}%{?rcver}-py2.?-nspkg.pth %doc python/README.md %doc examples/add_person.py examples/list_people.py examples/addressbook.proto %if %{with python3} %files -n python%{python3_pkgversion}-protobuf %dir %{python3_sitelib}/google %{python3_sitelib}/google/protobuf/ %{python3_sitelib}/protobuf-%{version}%{?rcver}-py3.?.egg-info/ %{python3_sitelib}/protobuf-%{version}%{?rcver}-py3.?-nspkg.pth %doc python/README.md %doc examples/add_person.py examples/list_people.py examples/addressbook.proto %endif %endif %files vim %{_datadir}/vim/vimfiles/ftdetect/proto.vim %{_datadir}/vim/vimfiles/syntax/proto.vim %if %{with java} %files java -f .mfiles-protobuf-java %doc examples/AddPerson.java examples/ListPeople.java %doc java/README.md %license LICENSE %files java-util -f .mfiles-protobuf-java-util %files javadoc -f .mfiles-javadoc %license LICENSE %files parent -f .mfiles-protobuf-parent %license LICENSE %endif %changelog * Wed May 8 2019 Orion Poplawski - 3.6.1-4 - Update emacs packaging to comply with guidelines * Wed Feb 27 2019 Orion Poplawski - 3.6.1-3 - Update googletest to 1.8.1 to re-enable tests * Sat Feb 02 2019 Fedora Release Engineering - 3.6.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Tue Oct 23 2018 Felix Kaechele - 3.6.1-1 - update to 3.6.1 - obsolete javanano subpackage; discontinued upstream * Fri Jul 27 2018 Igor Gnatenko - 3.5.0-8 - Rebuild for new binutils * Fri Jul 13 2018 Fedora Release Engineering - 3.5.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Tue Jun 19 2018 Miro Hrončok - 3.5.0-6 - Rebuilt for Python 3.7 * Wed Feb 21 2018 Iryna Shcherbina - 3.5.0-5 - Update Python 2 dependency declarations to new packaging standards (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) * Fri Feb 09 2018 Igor Gnatenko - 3.5.0-4 - Escape macros in %%changelog * Fri Feb 09 2018 Fedora Release Engineering - 3.5.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild * Fri Feb 02 2018 Igor Gnatenko - 3.5.0-2 - Switch to %%ldconfig_scriptlets * Thu Nov 23 2017 Igor Gnatenko - 3.5.0-1 - Update to 3.5.0 * Mon Nov 13 2017 Igor Gnatenko - 3.4.1-1 - Update to 3.4.1 * Thu Aug 03 2017 Fedora Release Engineering - 3.3.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Thu Jul 27 2017 Fedora Release Engineering - 3.3.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Tue Jun 27 2017 Mat Booth - 3.3.1-2 - Make OSGi dependency on sun.misc package optional. This package is not available in all execution environments and will not be available in Java 9. * Mon Jun 12 2017 Orion Poplawski - 3.3.1-1 - Update to 3.3.1 * Mon May 15 2017 Fedora Release Engineering - 3.2.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild * Sat Feb 11 2017 Fedora Release Engineering - 3.2.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Fri Jan 27 2017 Orion Poplawski - 3.2.0-1 - Update to 3.2.0 final * Mon Jan 23 2017 Orion Poplawski - 3.2.0-0.1.rc2 - Update to 3.2.0rc2 * Mon Dec 19 2016 Miro Hrončok - 3.1.0-6 - Rebuild for Python 3.6 * Sat Nov 19 2016 Orion Poplawski - 3.1.0-5 - Disable slow test on arm * Fri Nov 18 2016 Orion Poplawski - 3.1.0-4 - Ship python 3 module * Fri Nov 18 2016 Orion Poplawski - 3.1.0-3 - Fix jar file compat symlink * Fri Nov 18 2016 Orion Poplawski - 3.1.0-2 - Add needed python requirement * Fri Nov 04 2016 Orion Poplawski - 3.1.0-2 - Make various sub-packages noarch * Fri Nov 04 2016 gil cattaneo 3.1.0-2 - enable javanano - minor changes to adapt to current guidelines * Fri Nov 04 2016 Orion Poplawski - 3.1.0-1 - Update to 3.1.0 * Tue Jul 19 2016 Fedora Release Engineering - 2.6.1-5 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Thu Feb 04 2016 Fedora Release Engineering - 2.6.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Wed Jan 20 2016 Orion Poplawski - 2.6.1-3 - Tests no longer segfaulting on arm * Thu Jun 18 2015 Fedora Release Engineering - 2.6.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Mon Apr 6 2015 Orion Poplawski - 2.6.1-1 - Update to 2.6.1 - New URL - Cleanup spec - Add patch to fix emacs compilation with emacs 24.4 - Drop java-fixes patch, use pom macros instead - Add BR on python-google-apputils and mvn(org.easymock:easymock) - Run make check - Make -static require -devel (bug #1067475) * Thu Mar 26 2015 Kalev Lember - 2.6.0-4 - Rebuilt for GCC 5 ABI change * Sat Feb 21 2015 Till Maas - 2.6.0-3 - Rebuilt for Fedora 23 Change https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code * Wed Dec 17 2014 Peter Lemenkov - 2.6.0-2 - Added missing Requires zlib-devel to protobuf-devel (see rhbz #1173343). See also rhbz #732087. * Sun Oct 19 2014 Conrad Meyer - 2.6.0-1 - Bump to upstream release 2.6.0 (rh# 1154474). - Rebase 'java fixes' patch on 2.6.0 pom.xml. - Drop patch #3 (fall back to generic GCC atomics if no specialized atomics exist, e.g. AArch64 GCC); this has been upstreamed. * Sun Oct 19 2014 Conrad Meyer - 2.5.0-11 - protobuf-emacs requires emacs(bin), not emacs (rh# 1154456) * Sun Aug 17 2014 Fedora Release Engineering - 2.5.0-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Mon Jun 16 2014 Mikolaj Izdebski - 2.5.0-9 - Update to current Java packaging guidelines * Sat Jun 07 2014 Fedora Release Engineering - 2.5.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Tue Mar 04 2014 Stanislav Ochotnicky - 2.5.0-7 - Use Requires: java-headless rebuild (#1067528) * Thu Dec 12 2013 Conrad Meyer - 2.5.0-6 - BR python-setuptools-devel -> python-setuptools * Sun Aug 04 2013 Fedora Release Engineering - 2.5.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Thu May 16 2013 Dan Horák - 2.5.0-4 - export the new generic atomics header (rh #926374) * Mon May 6 2013 Stanislav Ochotnicky - 2.5.0-3 - Add support for generic gcc atomic operations (rh #926374) * Sat Apr 27 2013 Conrad Meyer - 2.5.0-2 - Remove changelog history from before 2010 - This spec already runs autoreconf -fi during %%build, but bump build for rhbz #926374 * Sat Mar 9 2013 Conrad Meyer - 2.5.0-1 - Bump to latest upstream (#883822) - Rebase gtest, maven patches on 2.5.0 * Tue Feb 26 2013 Conrad Meyer - 2.4.1-12 - Nuke BR on maven-doxia, maven-doxia-sitetools (#915620) * Thu Feb 14 2013 Fedora Release Engineering - 2.4.1-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Wed Feb 06 2013 Java SIG - 2.4.1-10 - Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild - Replace maven BuildRequires with maven-local * Sun Jan 20 2013 Conrad Meyer - 2.4.1-9 - Fix packaging bug, -emacs-el subpackage should depend on -emacs subpackage of the same version (%%version), not the emacs version number... * Thu Jan 17 2013 Tim Niemueller - 2.4.1-8 - Added sub-package for Emacs editing mode * Sat Jul 21 2012 Fedora Release Engineering - 2.4.1-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Mon Mar 19 2012 Dan Horák - 2.4.1-6 - disable test-suite until g++ 4.7 issues are resolved * Mon Mar 19 2012 Stanislav Ochotnicky - 2.4.1-5 - Update to latest java packaging guidelines * Tue Feb 28 2012 Fedora Release Engineering - 2.4.1-4 - Rebuilt for c++ ABI breakage * Sat Jan 14 2012 Fedora Release Engineering - 2.4.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild * Tue Sep 27 2011 Pierre-Yves Chibon - 2.4.1-2 - Adding zlib-devel as BR (rhbz: #732087) * Thu Jun 09 2011 BJ Dierkes - 2.4.1-1 - Latest sources from upstream. - Rewrote Patch2 as protobuf-2.4.1-java-fixes.patch * Wed Feb 09 2011 Fedora Release Engineering - 2.3.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Thu Jan 13 2011 Stanislav Ochotnicky - 2.3.0-6 - Fix java subpackage bugs #669345 and #669346 - Use new maven plugin names - Use mavenpomdir macro for pom installation * Mon Jul 26 2010 David Malcolm - 2.3.0-5 - generalize hardcoded reference to 2.6 in python subpackage %%files manifest * Wed Jul 21 2010 David Malcolm - 2.3.0-4 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild * Thu Jul 15 2010 James Laska - 2.3.0-3 - Correct use of %%bcond macros * Wed Jul 14 2010 James Laska - 2.3.0-2 - Enable python and java sub-packages * Tue May 4 2010 Conrad Meyer - 2.3.0-1 - bump to 2.3.0