# # spec file for package protobuf # # Copyright (c) 2024 SUSE LLC # Copyright (c) 2024 Andreas Stieger # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define tarname protobuf # see cmake/abseil-cpp.cmake and src/google/protobuf/port_def.inc %define abseil_min_version 20230125.3 %global sover 28_2_0 %if 0%{?gcc_version} < 11 %define with_gcc 11 %endif # requires gmock, which is not yet in the distribution %bcond_with check Name: protobuf Version: 28.2 Release: 0 Summary: Protocol Buffers - Google's data interchange format License: BSD-3-Clause Group: Development/Libraries/C and C++ URL: https://github.com/protocolbuffers/protobuf Source0: https://github.com/protocolbuffers/protobuf/releases/download/v%{version}/%{tarname}-%{version}.tar.gz Source1: baselibs.conf Patch0: static-utf8-ranges.patch BuildRequires: cmake BuildRequires: fdupes BuildRequires: gcc%{?with_gcc}-c++ BuildRequires: pkgconfig BuildRequires: python-rpm-macros # see cmake/abseil-cpp.cmake BuildRequires: pkgconfig(absl_absl_check) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_absl_log) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_algorithm) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_base) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_bind_front) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_bits) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_btree) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_cleanup) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_cord) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_core_headers) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_debugging) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_die_if_null) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_dynamic_annotations) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_flags) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_flat_hash_map) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_flat_hash_set) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_function_ref) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_hash) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_layout) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_log_initialize) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_log_severity) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_memory) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_node_hash_map) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_node_hash_set) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_optional) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_span) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_status) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_statusor) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_strings) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_synchronization) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_time) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_type_traits) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_utility) >= %{abseil_min_version} BuildRequires: pkgconfig(absl_variant) >= %{abseil_min_version} BuildRequires: pkgconfig(zlib) %if %{with check} BuildRequires: libgmock-devel >= 1.7.0 %endif %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. %package compiler Summary: Protocol Buffers compiler Group: Development/Libraries/C and C++ Provides: protobuf-devel:/usr/bin/protoc Provides: protoc = %{version} Conflicts: mvn(com.google.protobuf:protobuf-java) < 4.%{version} %description compiler 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. This package contains Protocol Buffers compiler for all programming languages %package -n libprotobuf%{sover} Summary: Protocol Buffers - Google's data interchange format Group: System/Libraries %description -n libprotobuf%{sover} 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. %package -n libprotoc%{sover} Summary: Protocol Buffers - Google's data interchange format Group: System/Libraries %description -n libprotoc%{sover} 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. %package -n libprotobuf-lite%{sover} Summary: Protocol Buffers - Google's data interchange format Group: System/Libraries %description -n libprotobuf-lite%{sover} 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. %package devel Summary: Header files, libraries and development documentation for %{name} Group: Development/Libraries/C and C++ Requires: %{name}-compiler = %{version} Requires: libprotobuf%{sover} = %{version} Requires: libprotobuf-lite%{sover} Conflicts: protobuf2-devel Conflicts: protobuf21-devel Provides: libprotobuf-devel = %{version} %description devel 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. %prep %autosetup -p1 -n %{tarname}-%{version} mkdir gmock %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects # tests are not part of offical tar ball %if 0%{?with_gcc} export CXX=g++-%{with_gcc} export CC=gcc-%{with_gcc} %endif %cmake \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package %cmake_build %if %{with check} %check %make_build check %endif %install %cmake_install install -Dm 0644 editors/proto.vim %{buildroot}%{_datadir}/vim/site/syntax/proto.vim %fdupes %{buildroot}%{_prefix} # SLE12 does not define this macro %if %{undefined ldconfig_scriptlets} %post -n libprotobuf%{sover} -p /sbin/ldconfig %postun -n libprotobuf%{sover} -p /sbin/ldconfig %post -n libprotoc%{sover} -p /sbin/ldconfig %postun -n libprotoc%{sover} -p /sbin/ldconfig %post -n libprotobuf-lite%{sover} -p /sbin/ldconfig %postun -n libprotobuf-lite%{sover} -p /sbin/ldconfig %else %ldconfig_scriptlets -n libprotobuf%{sover} %ldconfig_scriptlets -n libprotoc%{sover} %ldconfig_scriptlets -n libprotobuf-lite%{sover} %endif %files compiler %{_bindir}/protoc* %license LICENSE %files -n libprotobuf%{sover} %license LICENSE %{_libdir}/libprotobuf.so.%{version}.0 %files -n libprotoc%{sover} %license LICENSE %{_libdir}/libprotoc.so.%{version}.0 %files -n libprotobuf-lite%{sover} %license LICENSE %{_libdir}/libprotobuf-lite.so.%{version}.0 %files devel %license LICENSE %doc CONTRIBUTORS.txt README.md %{_includedir}/google %dir %{_includedir}/java %dir %{_includedir}/java/core %dir %{_includedir}/java/core/src %dir %{_includedir}/java/core/src/main %dir %{_includedir}/java/core/src/main/resources %dir %{_includedir}/java/core/src/main/resources/ %dir %{_includedir}/java/core/src/main/resources/google %dir %{_includedir}/java/core/src/main/resources/google/protobuf %{_includedir}/java/core/src/main/resources/google/protobuf/java_features.proto %{_includedir}/upb %{_includedir}/upb_generator %{_includedir}/*.h %{_libdir}/cmake/protobuf %{_libdir}/cmake/utf8_range %{_libdir}/pkgconfig/* %{_libdir}/libprotobuf-lite.so %{_libdir}/libprotobuf.so %{_libdir}/libprotoc.so %{_libdir}/libupb.a %{_libdir}/libutf8_range.a %{_libdir}/libutf8_validity.a %{_datadir}/vim %changelog