forked from pool/protobuf
- Update to version 3.11.4; notable changes since 3.9.2: * C++: Make serialization method naming consistent * C++: Moved ShutdownProtobufLibrary() to message_lite.h. For backward compatibility a declaration is still available in stubs/common.h, but users should prefer message_lite.h * C++: Removed non-namespace macro EXPECT_OK() * C++: Removed mathlimits.h from stubs in favor of using std::numeric_limits from C++11 * C++: Support direct pickling of nested messages * C++: Disable extension code gen for C# * C++: Switch the proto parser to the faster MOMI parser * C++: Unused imports of files defining descriptor extensions will now be reported * C++: Add proto2::util::RemoveSubranges to remove multiple subranges in linear time * C++: Support 32 bit values for ProtoStreamObjectWriter to Struct * C++: Removed the internal-only header coded_stream_inl.h and the internal-only methods defined there * C++: Enforced no SWIG wrapping of descriptor_database.h (other headers already had this restriction) * C++: Implementation of the equivalent of the MOMI parser for serialization. This removes one of the two serialization routines, by making the fast array serialization routine completely general. SerializeToCodedStream can now be implemented in terms of the much much faster array serialization. The array serialization regresses slightly, but when array serialization is not possible this wins big * C++: Add move constructor for Reflection's SetString * Java: Remove the usage of MethodHandle, so that Android users prior to API version 26 can use protobuf-java * Java: Publish ProGuard config for javalite * Java: Include unknown fields when merging proto3 messages in Java lite builders * Java: Have oneof enums implement a separate interface (other than EnumLite) for clarity * Java: Opensource Android Memory Accessors * Java: Change ProtobufArrayList to use Object[] instead of ArrayList for 5-10% faster parsing * Java: Make a copy of JsonFormat.TypeRegistry at the protobuf top level package. This will eventually replace JsonFormat.TypeRegistry * Java: Add Automatic-Module-Name entries to the Manifest * Python: Add float_precision option in json format printer * Python: Optionally print bytes fields as messages in unknown fields, if possible * Python: Experimental code gen (fast import protobuf module) which only work with cpp generated code linked in * Python: Add descriptor methods in descriptor_pool are deprecated * Python: Added delitem for Python extension dict * JavaScript: Remove guard for Symbol iterator for jspb.Map * JavaScript: Remove deprecated boolean option to getResultBase64String() * JavaScript: Change the parameter types of binaryReaderFn in ExtensionFieldBinaryInfo to (number, ?, ?) * JavaScript: Create dates.ts and time_of_days.ts to mirror Java versions. This is a near-identical conversion of c.g.type.util.{Dates,TimeOfDays} respectively * JavaScript: Migrate moneys to TypeScript * PHP: Increase php7.4 compatibility * PHP: Implement lazy loading of php class for proto messages * Ruby: Support hashes for struct initializers * C#: Experimental proto2 support is now officially available * C#: Change _Extensions property to normal body rather than expression * Objective C: Remove OSReadLittle* due to alignment requirements * Other: Override CocoaPods module to lowercase * further bugfixes and optimisations OBS-URL: https://build.opensuse.org/request/show/782071 OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/protobuf?expand=0&rev=86
273 lines
9.1 KiB
RPMSpec
273 lines
9.1 KiB
RPMSpec
#
|
|
# spec file for package protobuf
|
|
#
|
|
# Copyright (c) 2020 SUSE LLC
|
|
#
|
|
# 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/
|
|
#
|
|
|
|
|
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
|
%define sover 22
|
|
%define tarname protobuf
|
|
%define src_install_dir %{_prefix}/src/%{name}
|
|
%define extra_java_flags -source 7 -target 7
|
|
# requires gmock, which is not yet in the distribution
|
|
%bcond_with check
|
|
%bcond_without java
|
|
%bcond_without python2
|
|
%bcond_without python3
|
|
Name: protobuf
|
|
Version: 3.11.4
|
|
Release: 0
|
|
Summary: Protocol Buffers - Google's data interchange format
|
|
License: BSD-3-Clause
|
|
Group: Development/Libraries/C and C++
|
|
URL: https://github.com/google/protobuf/
|
|
Source0: https://github.com/google/protobuf/archive/v%{version}.tar.gz#/%{tarname}-%{version}.tar.gz
|
|
Source1: manifest.txt.in
|
|
Source2: baselibs.conf
|
|
BuildRequires: %{python_module devel}
|
|
BuildRequires: %{python_module python-dateutil}
|
|
BuildRequires: %{python_module python-gflags}
|
|
BuildRequires: %{python_module pytz}
|
|
BuildRequires: %{python_module setuptools}
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
BuildRequires: fdupes
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: libtool
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: python-rpm-macros
|
|
BuildRequires: zlib-devel
|
|
%if %{with check}
|
|
BuildRequires: libgmock-devel >= 1.7.0
|
|
%endif
|
|
%if %{with java}
|
|
BuildRequires: java-devel >= 1.6.0
|
|
BuildRequires: javapackages-local
|
|
%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 -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: gcc-c++
|
|
Requires: libprotobuf%{sover} = %{version}
|
|
Requires: libprotobuf-lite%{sover}
|
|
Requires: zlib-devel
|
|
Conflicts: protobuf2-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.
|
|
|
|
%package source
|
|
Summary: Source code of protobuf
|
|
Group: Development/Sources
|
|
BuildArch: noarch
|
|
|
|
%description source
|
|
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 source code for Protocol Buffers.
|
|
|
|
%package -n %{name}-java
|
|
Summary: Java Bindings for Google Protocol Buffers
|
|
Group: Development/Libraries/Java
|
|
Requires: java >= 1.6.0
|
|
|
|
%description -n %{name}-java
|
|
This package contains the Java bindings for Google Protocol Buffers.
|
|
|
|
%package -n python2-%{name}
|
|
Summary: Python2 Bindings for Google Protocol Buffers
|
|
Group: Development/Libraries/Python
|
|
Provides: python-%{name} = %{version}
|
|
Obsoletes: python-%{name} < %{version}
|
|
|
|
%description -n python2-%{name}
|
|
This package contains the Python bindings for Google Protocol Buffers.
|
|
|
|
%package -n python3-%{name}
|
|
Summary: Python3 Bindings for Google Protocol Buffers
|
|
Group: Development/Libraries/Python
|
|
|
|
%description -n python3-%{name}
|
|
This package contains the Python bindings for Google Protocol Buffers.
|
|
|
|
%prep
|
|
%autosetup -n %{tarname}-%{version}
|
|
mkdir gmock
|
|
|
|
%if %{with python2} || %{with python3}
|
|
# only needed for test suite which we don't call anyways.
|
|
# googleapis is broken on sle12
|
|
sed -i '/apputils/d' python/setup.py
|
|
sed -i '/google_test_dir/d' python/setup.py
|
|
%endif
|
|
# kill shebang that we do not really want
|
|
sed -i -e '/env python/d' python/google/protobuf/internal/*.py
|
|
|
|
%build
|
|
%define _lto_cflags %{nil}
|
|
autoreconf -fvi
|
|
%configure \
|
|
--disable-static
|
|
|
|
make %{?_smp_mflags}
|
|
|
|
%if %{with java}
|
|
pushd java
|
|
../src/protoc --java_out=core/src/main/java -I../src ../src/google/protobuf/descriptor.proto
|
|
mkdir classes
|
|
javac %{extra_java_flags} -d classes core/src/main/java/com/google/protobuf/*.java
|
|
sed -e 's/@VERSION@/%{version}/' < %{SOURCE1} > manifest.txt
|
|
jar cfm %{name}-java-%{version}.jar manifest.txt -C classes com
|
|
popd
|
|
%endif
|
|
|
|
pushd python
|
|
%python_build
|
|
popd
|
|
|
|
%if %{with check}
|
|
%check
|
|
make %{?_smp_mflags} check
|
|
%endif
|
|
|
|
%install
|
|
%make_install
|
|
install -Dm 0644 editors/proto.vim %{buildroot}%{_datadir}/vim/site/syntax/proto.vim
|
|
# no need for that
|
|
find %{buildroot} -type f -name "*.la" -delete -print
|
|
|
|
%if %{with java}
|
|
pushd java
|
|
install -D -m 0644 %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java.jar
|
|
ln -s %{name}-java.jar %{buildroot}%{_javadir}/%{name}.jar
|
|
install -D -m 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}-parent.pom
|
|
%add_maven_depmap %{name}-parent.pom
|
|
install -D -m 0644 bom/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-bom.pom
|
|
%add_maven_depmap %{name}-bom.pom
|
|
install -D -m 0644 core/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-java.pom
|
|
%add_maven_depmap %{name}-java.pom %{name}-java.jar
|
|
popd
|
|
%endif
|
|
|
|
pushd python
|
|
%python_install
|
|
popd
|
|
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
|
|
|
mkdir -p %{buildroot}%{src_install_dir}
|
|
tar -xzf %{SOURCE0} --strip-components=1 -C %{buildroot}%{src_install_dir}
|
|
%fdupes %{buildroot}%{src_install_dir}
|
|
# Fix env-script-interpreter rpmlint error
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.js" -exec sed -i 's|#!.*%{_bindir}/env node|#!%{_bindir}/node|' "{}" +
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.py" -exec sed -i 's|#!.*%{_bindir}/env python2.7|#!%{_bindir}/python2.7|' "{}" +
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.py" -exec sed -i 's|#!.*%{_bindir}/env python|#!%{_bindir}/python|' "{}" +
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.rb" -exec sed -i 's|#!.*%{_bindir}/env ruby|#!%{_bindir}/ruby|' "{}" +
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.sh" -exec sed -i 's|#!.*%{_bindir}/env bash|#!/bin/bash|' "{}" +
|
|
# And stop requiring ridiculously old Python version
|
|
find %{buildroot}%{src_install_dir} -type f -name "*.py" -exec sed -i 's|#!%{_bindir}/python2.4|#!%{_bindir}/python2.7|' "{}" +
|
|
# Fix spurious-executable-perm rpmlint error
|
|
chmod -x %{buildroot}%{src_install_dir}/src/google/protobuf/arenastring.h
|
|
chmod -x %{buildroot}%{src_install_dir}/src/google/protobuf/compiler/js/js_generator.h
|
|
chmod -x %{buildroot}%{src_install_dir}/src/google/protobuf/reflection.h
|
|
# Fix version-control-internal-file rpmlint warning
|
|
find %{buildroot}%{src_install_dir} -type f -name ".gitignore" -exec rm -f "{}" +
|
|
|
|
%fdupes %{buildroot}%{_prefix}
|
|
|
|
%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
|
|
|
|
%files -n libprotobuf%{sover}
|
|
%license LICENSE
|
|
%{_libdir}/libprotobuf.so.%{sover}*
|
|
|
|
%files -n libprotoc%{sover}
|
|
%{_libdir}/libprotoc.so.%{sover}*
|
|
|
|
%files -n libprotobuf-lite%{sover}
|
|
%{_libdir}/libprotobuf-lite.so.%{sover}*
|
|
|
|
%files devel
|
|
%doc CHANGES.txt CONTRIBUTORS.txt README.md
|
|
%{_bindir}/protoc
|
|
%{_includedir}/google
|
|
%{_libdir}/*.so
|
|
%{_libdir}/pkgconfig/*
|
|
%{_datadir}/vim
|
|
|
|
%files source
|
|
%{src_install_dir}
|
|
|
|
%if %{with java}
|
|
%files -n %{name}-java -f java/.mfiles
|
|
%{_javadir}/%{name}.jar
|
|
%endif
|
|
|
|
%if %{with python2}
|
|
%files -n python2-%{name}
|
|
%license LICENSE
|
|
%{python2_sitelib}/*
|
|
%endif
|
|
|
|
%if %{with python3}
|
|
%files -n python3-%{name}
|
|
%license LICENSE
|
|
%{python3_sitelib}/*
|
|
%endif
|
|
|
|
%changelog
|