summaryrefslogtreecommitdiff
path: root/protobuf.spec
diff options
context:
space:
mode:
Diffstat (limited to 'protobuf.spec')
-rw-r--r--protobuf.spec582
1 files changed, 582 insertions, 0 deletions
diff --git a/protobuf.spec b/protobuf.spec
new file mode 100644
index 0000000..b50239b
--- /dev/null
+++ b/protobuf.spec
@@ -0,0 +1,582 @@
+#needsrootforbuild
+%undefine __cmake_in_source_build
+
+%define _lto_cflags %{nil}
+
+# Build -python subpackage
+%bcond_without python
+# Build -java subpackage
+%ifarch loongarch64
+%bcond_with java
+%else
+%bcond_without java
+%endif
+
+Summary: Protocol Buffers - Google's data interchange format
+Name: protobuf
+Version: 32.1
+Release: 12
+License: BSD-3-Clause
+URL: https://github.com/protocolbuffers/protobuf
+Source: https://github.com/protocolbuffers/protobuf/releases/download/v%{version}%{?rcver}/%{name}-%{version}%{?rcver}.tar.gz
+Source1: protobuf-init.el
+%global so_version 32.1
+
+Patch9000: 0001-add-secure-compile-option.patch
+Patch9001: 0002-Fix-CC-compiler-support.patch
+Patch9002: 0003-protobuf-add-coverage-compile-option.patch
+
+BuildRequires: cmake gcc-c++ emacs zlib-devel gmock-devel gtest-devel jsoncpp-devel
+BuildRequires: fdupes pkgconfig python-rpm-macros pkgconfig(zlib) ninja-build
+BuildRequires: abseil-cpp-devel >= 20230802
+
+%description
+
+Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,
+platform-neutral, extensible mechanism for serializing structured data.
+You can find protobuf's documentation on the Google Developers site.
+
+%package compiler
+Summary: Protocol Buffers compiler
+Requires: %{name} = %{version}-%{release}
+Obsoletes: protobuf-emacs < %{version}
+Obsoletes: protobuf-emacs-el < %{version}
+Obsoletes: protobuf2-compiler
+Requires: emacs-filesystem >= %{_emacs_version}
+
+%description compiler
+This package containers 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 pkgconfig vim-enhanced
+Requires: abseil-cpp-devel >= 20230802
+Provides: %{name}-static
+Provides: %{name}-vim
+Obsoletes: %{name}-static < %{version}
+Obsoletes: %{name}-vim < %{version}
+Obsoletes: protobuf2-devel
+Obsoletes: protobuf2-vim
+Obsoletes: protobuf2-static
+
+
+%description devel
+This package contains Protocol Buffers compiler for all languages and
+C++ headers and libraries
+
+%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}
+Provides: %{name}-lite-static
+Obsoletes: %{name}-lite-static < %{version}
+Obsoletes: protobuf2-lite-devel
+Obsoletes: protobuf2-lite-static
+
+%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.
+
+%if %{with python}
+%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
+BuildRequires: python%{python3_pkgversion}-wheel
+Requires: python%{python3_pkgversion}-six >= 1.9
+Conflicts: %{name}-compiler > %{version}-%{release}
+Conflicts: %{name}-compiler < %{version}-%{release}
+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
+
+
+%if %{with java}
+%package java
+Summary: Java Protocol Buffers runtime library
+BuildArch: noarch
+BuildRequires: java-devel >= 1.6
+BuildRequires: jpackage-utils
+BuildRequires: maven-local
+BuildRequires: mvn(com.google.code.gson:gson)
+BuildRequires: mvn(com.google.guava:guava)
+BuildRequires: mvn(junit:junit)
+BuildRequires: mvn(org.easymock:easymock)
+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: maven-compiler-plugin
+BuildRequires: maven-install-plugin
+BuildRequires: maven-jar-plugin
+BuildRequires: maven-javadoc-plugin
+BuildRequires: maven-release-plugin
+BuildRequires: maven-resources-plugin
+BuildRequires: maven-surefire-plugin
+BuildRequires: maven-antrun-plugin
+Obsoletes: %{name}-javanano < 3.6.0
+
+%description java
+This package contains Java Protocol Buffers runtime library.
+
+%package javalite
+Summary: Java Protocol Buffers lite runtime library
+BuildArch: noarch
+
+%description javalite
+This package contains Java Protocol Buffers lite 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.
+
+%package bom
+Summary: Protocol Buffer BOM POM
+BuildArch: noarch
+
+%description bom
+Protocol Buffer BOM POM.
+
+%endif
+
+%prep
+%setup -q -n %{name}-%{version}%{?rcver}
+%autopatch -p1
+find -name \*.cc -o -name \*.h | xargs chmod -x
+find examples -type f | xargs chmod 644
+%if %{with java}
+#%pom_remove_dep com.google.truth:truth java/pom.xml
+#%pom_remove_dep org.easymock:easymockclassextension java/pom.xml java/*/pom.xml
+#%pom_remove_dep org.easymock:easymockclassextension java/pom.xml java/core/pom.xml java/lite/pom.xml java/util/pom.xml
+%pom_remove_dep com.google.truth:truth java/pom.xml java/util/pom.xml java/lite/pom.xml java/core/pom.xml
+%pom_remove_dep com.google.errorprone:error_prone_annotations java/util/pom.xml
+%pom_remove_dep com.google.guava:guava-testlib java/pom.xml java/util/pom.xml
+%pom_remove_dep com.google.j2objc:j2objc-annotations java/util/pom.xml
+
+%pom_remove_plugin org.codehaus.mojo:animal-sniffer-maven-plugin java/pom.xml java/util/pom.xml
+%pom_remove_dep org.mockito:mockito-core java/pom.xml java/core/pom.xml java/lite/pom.xml java/util/pom.xml
+
+# These use easymockclassextension
+rm java/core/src/test/java/com/google/protobuf/ServiceTest.java
+
+#rm -r java/core/src/test
+
+# These use truth or error_prone_annotations or guava-testlib
+rm java/core/src/test/java/com/google/protobuf/LiteralByteStringTest.java
+rm java/core/src/test/java/com/google/protobuf/BoundedByteStringTest.java
+rm java/core/src/test/java/com/google/protobuf/RopeByteStringTest.java
+rm java/core/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java
+rm java/core/src/test/java/com/google/protobuf/TextFormatTest.java
+rm java/core/src/test/java/com/google/protobuf/UnknownFieldSetTest.java
+rm java/core/src/test/java/com/google/protobuf/UnknownFieldSetPerformanceTest.java
+rm -r java/util/src/test/java/com/google/protobuf/util
+rm -r java/util/src/main/java/com/google/protobuf/util
+
+# Make OSGi dependency on sun.misc package optional
+%pom_xpath_inject "pom:configuration/pom:instructions" "<Import-Package>sun.misc;resolution:=optional,*</Import-Package>" java/core
+
+# Backward compatibility symlink
+%mvn_file :protobuf-java:jar: %{name}/%{name}-java %{name}
+
+# This test is incredibly slow on arm
+# https://github.com/protocolbuffers/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
+mv java/core/src/test/java/com/google/protobuf/DecodeUtf8Test.java \
+ java/core/src/test/java/com/google/protobuf/DecodeUtf8Test.java.slow
+%endif
+%endif
+
+rm -f src/solaris/libstdc++.la
+
+%build
+%cmake \
+ -B build \
+ -Dprotobuf_BUILD_EXAMPLES:BOOL=OFF \
+ -Dprotobuf_BUILD_LIBPROTOC:BOOL=ON \
+ -Dprotobuf_BUILD_SHARED_LIBS:BOOL=ON \
+ -Dprotobuf_USE_EXTERNAL_GTEST:BOOL=ON \
+ -Dprotobuf_ABSL_PROVIDER=package \
+ -Dprotobuf_BUILD_TESTS:BOOL=OFF \
+ -DCMAKE_EXE_LINKER_FLAGS="%{build_ldflags}" \
+ -DCMAKE_SHARED_LINKER_FLAGS="%{build_ldflags}" \
+ -DCMAKE_CXX_FLAGS="%{build_cxxflags} %{?_ld_as_needed_flags}" \
+ -DCMAKE_C_COMPILER=%{__cc} \
+ -DCMAKE_CXX_COMPILER=%{__cxx} \
+ -DCMAKE_SKIP_RPATH=TRUE \
+ -G Ninja
+
+%ninja_build -C build
+
+%cmake \
+ -B build-static \
+ -Dprotobuf_BUILD_EXAMPLES:BOOL=OFF \
+ -Dprotobuf_BUILD_LIBPROTOC:BOOL=ON \
+ -Dprotobuf_BUILD_SHARED_LIBS:BOOL=OFF \
+ -Dprotobuf_USE_EXTERNAL_GTEST:BOOL=ON \
+ -Dprotobuf_ABSL_PROVIDER=package \
+ -Dprotobuf_BUILD_TESTS:BOOL=OFF \
+ -DCMAKE_CXX_FLAGS="-fPIC" \
+ -DCMAKE_C_COMPILER=%{__cc} \
+ -DCMAKE_CXX_COMPILER=%{__cxx} \
+ -DCMAKE_SKIP_RPATH=TRUE \
+ -G Ninja
+
+%ninja_build -C build-static
+
+# we have to override LD_LIBRARY_PATH because we eliminated rpath
+export LD_LIBRARY_PATH="${PWD}/build":$LD_LIBRARY_PATH
+
+%if %{with python}
+# Use the just built protoc instead of any
+# system version for python and/or java bindings
+export PROTOC=../build/protoc
+pushd python
+CXXFLAGS="%{build_cxxflags}" \
+LDFLAGS="-L../%{_vpath_builddir} -L../%{_vpath_builddir}/third_party/utf8_range %{build_ldflags}" \
+%py3_build
+popd
+%endif
+
+%if %{with java}
+cp build/protoc ./
+%pom_disable_module kotlin java/pom.xml
+%pom_disable_module kotlin-lite java/pom.xml
+%mvn_build -s -- -Dmaven.test.skip=true -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
+
+
+%install
+%ninja_install -C build-static
+%ninja_install -C build
+
+%if %{with python}
+pushd python
+CXXFLAGS="%{build_cxxflags}" \
+LDFLAGS="-L../%{_vpath_builddir} -L../%{_vpath_builddir}/third_party/utf8_range %{build_ldflags}" \
+#python ./setup.py install --root=%{buildroot} --single-version-externally-managed --record=INSTALLED_FILES --optimize=1
+%py3_install
+find %{buildroot}%{python3_sitelib} -name \*.py |
+ xargs sed -i -e '1{\@^#!@d}'
+popd
+%endif
+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 %{SOURCE1} %{buildroot}%{_emacs_sitestartdir}
+
+%files
+%doc CONTRIBUTORS.txt README.md
+%license LICENSE
+%{_libdir}/libprotobuf.so.%{so_version}{,.*}
+
+%files compiler
+%{_bindir}/protoc*
+%{_libdir}/libprotoc.so.%{so_version}{,.*}
+%{_emacs_sitelispdir}/%{name}/
+%{_emacs_sitestartdir}/protobuf-init.el
+%license LICENSE
+%doc README.md
+
+%files devel
+%dir %{_includedir}/google
+%{_includedir}/google/protobuf/
+%{_includedir}/utf8_range.h
+%{_includedir}/utf8_validity.h
+%{_libdir}/libprotobuf.so
+%{_libdir}/libprotoc.so
+%{_libdir}/pkgconfig/protobuf.pc
+%{_libdir}/pkgconfig/utf8_range.pc
+%doc examples/add_person.cc examples/addressbook.proto examples/list_people.cc examples/Makefile examples/README.md
+%{_libdir}/libprotobuf.a
+%{_libdir}/libprotoc.a
+%{_datadir}/vim/vimfiles/syntax/proto.vim
+%{_libdir}/cmake/utf8_range
+%{_libdir}/cmake/protobuf
+%{_libdir}/libutf8_range.a
+%{_libdir}/libutf8_validity.a
+%{_includedir}/java/core/src/main/java/com/google/protobuf/java_features.proto
+
+%files lite
+%{_libdir}/libprotobuf-lite.so.%{so_version}{,.*}
+
+%files lite-devel
+%{_libdir}/libprotobuf-lite.so
+%{_libdir}/pkgconfig/protobuf-lite.pc
+%{_libdir}/libprotobuf-lite.a
+
+%if %{with python}
+%files -n python%{python3_pkgversion}-protobuf
+%dir %{python3_sitelib}/google
+%{python3_sitelib}/google/protobuf/
+%{python3_sitelib}/%{name}-*-py3.*.egg-info/
+%{python3_sitelib}/%{name}-*-py3.*-nspkg.pth
+%doc python/README.md
+%doc examples/add_person.py examples/list_people.py examples/addressbook.proto
+%endif
+
+%if %{with java}
+%files java -f .mfiles-protobuf-java
+%doc examples/AddPerson.java examples/ListPeople.java
+%doc java/README.md
+%license LICENSE
+%{_includedir}/java/core/src/main/java/com/google/protobuf/java_features.proto
+
+%files java-util -f .mfiles-protobuf-java-util
+
+%files javadoc -f .mfiles-javadoc
+%license LICENSE
+
+%files parent -f .mfiles-protobuf-parent
+%license LICENSE
+
+%files bom -f .mfiles-protobuf-bom
+%license LICENSE
+
+%files javalite -f .mfiles-protobuf-javalite
+%license LICENSE
+%endif
+
+%changelog
+* Thu June 26 2025 zhongtao <zhongtao17@huawei.com> - 25.1-12
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: append fix CVE-2025-4565
+
+* Wed Jun 11 2025 Dongxing Wang <dongxing.wang_a@thundersoft.com> - 25.1-11
+- Type:bugfix
+- CVE:NA
+- SUG:NA
+- DESC: revert:distinguish between statically and dynamically compiled cmake dir to prevent BEP binary differences
+
+* Thu May 15 2025 zhongtao <zhongtao17@huawei.com> - 25.1-10
+- Type:bugfix
+- CVE:NA
+- SUG:NA
+- DESC: distinguish between statically and dynamically compiled cmake dir to prevent BEP binary differences
+
+* Fri May 09 2025 zhongtao <zhongtao17@huawei.com> - 25.1-9
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: distinguish between statically and dynamically compiled pc files to prevent BEP binary differences
+
+* Thu Nov 14 2024 Funda Wang <fundawang@yeah.net> - 25.1-8
+- adopt to new cmake macro
+
+* Wed Sep 25 2024 zhangxianting <zhangxianting@uniontech.com> - 25.1-7
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: append fix CVE-2024-7254
+
+* Thu Sep 19 2024 zhangxianting <zhangxianting@uniontech.com> - 25.1-6
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: fix CVE-2024-7254
+
+* Mon Aug 05 2024 zhongtao <zhongtao17@huawei.com> - 25.1-5
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: bugfix for devel package packaging file differences
+
+* Thu Jul 25 2024 zhongtao <zhongtao17@huawei.com> - 25.1-4
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: add coverage compile option
+
+* Mon Apr 15 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 25.1-4
+- disable java for loongarch64
+
+* Tue Apr 09 2024 zhongtao <zhongtao17@huawei.com> - 25.1-3
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: add secure complie option and code improve
+
+* Wed Mar 20 2024 wangqiang <wangqiang1@kylinos.cn> - 25.1-2
+- Support package build with clang
+
+* Wed Jan 10 2024 zhongtao <zhongtao17@huawei.com> - 25.1-1
+- Type:upgrade
+- ID:NA
+- SUG:NA
+- DESC: update to 25.1
+
+* Wed Dec 06 2023 konglidong <konglidong@uniontech.com> - 3.19.6-2
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: obsolets protobuf2 for fix install conflict
+
+* Mon Jul 17 2023 zhongtao <zhongtao17@huawei.com> - 3.19.6-1
+- Type:upgrade
+- ID:NA
+- SUG:NA
+- DESC: update to 3.19.6
+
+* Tue Oct 18 2022 chengzeruizhi <chengzeruizhi@huawei.com> - 3.14.0-6
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: fix CVE-2022-3171
+
+* Tue Oct 11 2022 chengzeruizhi <chengzeruizhi@huawei.com> - 3.14.0-5
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: fix CVE-2022-1941
+
+* Wed Apr 27 2022 wangxiaochao <wangxiaochao2@huawei.com> - 3.14.0-4
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: Improve performance of parsing unknown fields in Java
+
+* Fri Mar 18 2022 wangxiaochao <wangxiaochao2@huawei.com> - 3.14.0-3
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: fix CVE-2021-22570
+
+* Thu Mar 10 2022 wangxiaochao <wangxiaochao2@huawei.com> - 3.14.0-2
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: fix mainline compile failed
+
+* Fri Jul 30 2021 liyanan <liyanan32@huawei.com> - 3.14.0-1
+- update to 3.14.0
+
+* Mon Apr 26 2021 haozi007 <liuhao27@huawei.com> - 3.12.3-16
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: split compiler from devel
+
+* Sat Feb 20 2021 haozi007 <liuhao27@huawei.com> - 3.12.3-15
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: add fstack check
+
+* Tue Sep 1 2020 wutao <wutao61@huawei.com> - 3.12.3-14
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: enhance java function and fix build errors
+
+* Sat Aug 29 2020 openEuler Buildteam <buildteam@openeuler.org> - 3.12.3-13
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: remove Conflicts
+
+* Fri Aug 28 2020 openEuler Buildteam <buildteam@openeuler.org> - 3.12.3-12
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC: invalid version of Conflicts
+
+* Thu Jul 23 2020 openEuler Buildteam <buildteam@openeuler.org> - 3.12.3-11
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: drop python2-protobuf and refactor .spec file
+
+* Thu Jul 16 2020 openEuler Buildteam <buildteam@openeuler.org> - 3.12.3-10
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC:upgrade from 3.9.0 to 3.12.3
+
+* Wed Apr 08 2020 openEuler Buildteam <buildteam@openeuler.org> - 3.9.0-9
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC: remove unnecessary files
+
+* Thu Dec 12 2019 openEuler Buildteam <buildteam@openeuler.org> - 3.9.0-8.h3
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC:add bind now secure compile option
+
+* Wed Nov 27 2019 openEuler Buildteam <buildteam@openeuler.org> - 3.9.0-8.h2
+- Type:enhancement
+- ID:NA
+- SUG:NA
+- DESC:compatible to centos 7.5
+
+* Tue Nov 26 2019 openEuler Buildteam <buildteam@openeuler.org> - 3.9.0-8.h1
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC:upgrade from 3.5.0 to 3.9.0
+
+* Fri Nov 01 2019 openEuler Buildteam <buildteam@openeuler.org> - 3.5.0-8.h1
+- Type:bugfix
+- ID:NA
+- SUG:NA
+- DESC:change patch's names according to new rules