Accepting request 1219411 from devel:tools:building

OBS-URL: https://build.opensuse.org/request/show/1219411
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/protobuf?expand=0&rev=83
This commit is contained in:
Dominique Leuenberger 2024-10-30 16:33:47 +00:00 committed by Git OBS Bridge
commit 986b9a034c
17 changed files with 4913 additions and 149 deletions

5
_multibuild Normal file
View File

@ -0,0 +1,5 @@
<multibuild>
<package>python-protobuf</package>
<package>protobuf-java</package>
</multibuild>

View File

@ -1,3 +1,4 @@
libprotobuf25_4_0
libprotoc25_4_0
libprotobuf-lite25_4_0
libprotobuf28_3_0
libprotoc28_3_0
libprotobuf-lite28_3_0
libutf8_range-28_3_0

View File

@ -1,9 +0,0 @@
Manifest-Version: 1.0
Created-By: stick@gk2.sk
Name: com/google/protobuf/
Specification-Title: Google Protocol Buffers
Specification-Version: @VERSION@
Specification-Vendor: stick@gk2.sk
Implementation-Title: com.google.protobuf
Implementation-Version: @VERSION@
Implementation-Vendor: stick@gk2.sk

5
pre_checkin.sh Normal file
View File

@ -0,0 +1,5 @@
#!/bin/sh
cp protobuf.changes protobuf-java.changes
cp protobuf.changes python-protobuf.changes
osc service runall format_spec_file

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:af9236a5b5b0f641b20f5511c1e4527efa981ac91d7342c6b1033f4f03bc5d21
size 5878444

3
protobuf-28.3.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7c3ebd7aaedd86fa5dc479a0fda803f602caaf78d8aff7ce83b89e1b8ae7442a
size 9256608

3
protobuf-5.28.3.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b
size 422479

41
protobuf-java-4.28.3.pom Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-parent</artifactId>
<version>4.28.3</version>
</parent>
<artifactId>protobuf-java</artifactId>
<packaging>jar</packaging>
<name>Protocol Buffers [Core]</name>
<description>
Core Protocol Buffers library. Protocol Buffers are a way of encoding structured data in an
efficient yet extensible format.
</description>
<dependencies>
</dependencies>
<build>
<plugins>
<!-- OSGI bundle configuration -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Automatic-Module-Name>com.google.protobuf</Automatic-Module-Name> <!-- Java9+ Jigsaw module name -->
<Bundle-DocURL>https://developers.google.com/protocol-buffers/</Bundle-DocURL>
<Bundle-SymbolicName>com.google.protobuf</Bundle-SymbolicName>
<Export-Package>com.google.protobuf;version=${project.version}</Export-Package>
<Import-Package>sun.misc;resolution:=optional,*</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-parent</artifactId>
<version>4.28.3</version>
</parent>
<artifactId>protobuf-java-util</artifactId>
<packaging>jar</packaging>
<name>Protocol Buffers [Util]</name>
<description>Utilities for Protocol Buffers</description>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.28.3</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>2.18.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-jre</version>
</dependency>
<dependency>
<groupId>com.google.j2objc</groupId>
<artifactId>j2objc-annotations</artifactId>
<version>2.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- OSGI bundle configuration -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Automatic-Module-Name>com.google.protobuf.util</Automatic-Module-Name> <!-- Java9+ Jigsaw module name -->
<Bundle-DocURL>https://developers.google.com/protocol-buffers/</Bundle-DocURL>
<Bundle-SymbolicName>com.google.protobuf.util</Bundle-SymbolicName>
<Export-Package>com.google.protobuf.util;version=${project.version}</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

2075
protobuf-java.changes Normal file

File diff suppressed because it is too large Load Diff

283
protobuf-java.spec Normal file
View File

@ -0,0 +1,283 @@
#
# spec file for package protobuf-java
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# 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
Name: protobuf-java
Version: 28.3
Release: 0
Summary: Java Bindings for Google Protocol Buffers
License: BSD-3-Clause
Group: Development/Libraries/Java
URL: https://github.com/protocolbuffers/protobuf
Source0: https://github.com/protocolbuffers/protobuf/releases/download/v%{version}/%{tarname}-%{version}.tar.gz
Source1: https://repo1.maven.org/maven2/com/google/protobuf/%{name}/4.%{version}/%{name}-4.%{version}.pom
Source2: https://repo1.maven.org/maven2/com/google/protobuf/%{name}lite/4.%{version}/%{name}lite-4.%{version}.pom
Source3: https://repo1.maven.org/maven2/com/google/protobuf/%{name}-util/4.%{version}/%{name}-util-4.%{version}.pom
BuildRequires: fdupes
BuildRequires: java-devel >= 1.8
BuildRequires: maven-local
BuildRequires: protobuf-devel >= %{version}
BuildRequires: mvn(com.google.code.findbugs:jsr305)
BuildRequires: mvn(com.google.code.gson:gson)
BuildRequires: mvn(com.google.errorprone:error_prone_annotations)
BuildRequires: mvn(com.google.guava:guava)
BuildRequires: mvn(com.google.j2objc:j2objc-annotations)
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
Requires: java >= 1.8
BuildArch: noarch
%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.
This package contains the Java bindings.
%package parent
Summary: Java Bindings for Google Protocol Buffers (parent pom)
%description parent
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 the parent pom of the Java bindings.
%package bom
Summary: Java Bindings for Google Protocol Buffers (bom)
%description bom
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 the bill-of-materials pom of the Java bindings.
%package javadoc
Summary: Javadoc for %{name}
Group: Documentation/HTML
%description javadoc
This package contains the API documentation for %{name}.
%prep
%autosetup -p1 -n %{tarname}-%{version}
# The previous blank line is crucial for older system being able
# to use the autosetup macro
pushd java
cp %{SOURCE1} core/pom.xml
cp %{SOURCE2} lite/pom.xml
cp %{SOURCE3} util/pom.xml
%pom_disable_module kotlin
%pom_disable_module kotlin-lite
%pom_remove_plugin :animal-sniffer-maven-plugin
%pom_xpath_set "pom:plugin[pom:artifactId[text()='maven-compiler-plugin']]/pom:configuration/pom:source" "1.8"
%pom_xpath_set "pom:plugin[pom:artifactId[text()='maven-compiler-plugin']]/pom:configuration/pom:target" "1.8"
%{mvn_package} :{*}-parent parent
%{mvn_package} :{*}-bom bom
%{mvn_file} :{*} @1
%{mvn_file} :%{name} %{tarname}
popd
%build
pushd java
# Core build
protoc \
--java_out=core/src/main/java \
--proto_path=../src \
--proto_path=core/src/main/resources/google/protobuf \
core/src/main/resources/google/protobuf/java_features.proto \
../src/google/protobuf/any.proto \
../src/google/protobuf/api.proto \
../src/google/protobuf/descriptor.proto \
../src/google/protobuf/duration.proto \
../src/google/protobuf/empty.proto \
../src/google/protobuf/field_mask.proto \
../src/google/protobuf/source_context.proto \
../src/google/protobuf/struct.proto \
../src/google/protobuf/timestamp.proto \
../src/google/protobuf/type.proto \
../src/google/protobuf/wrappers.proto \
../src/google/protobuf/compiler/plugin.proto
cp \
../src/google/protobuf/any.proto \
../src/google/protobuf/api.proto \
../src/google/protobuf/descriptor.proto \
../src/google/protobuf/duration.proto \
../src/google/protobuf/empty.proto \
../src/google/protobuf/field_mask.proto \
../src/google/protobuf/source_context.proto \
../src/google/protobuf/struct.proto \
../src/google/protobuf/timestamp.proto \
../src/google/protobuf/type.proto \
../src/google/protobuf/wrappers.proto \
../src/google/protobuf/compiler/plugin.proto \
core/src/main/resources/google/protobuf/
# Lite build
mkdir -p lite/src/main/resources/google/protobuf
mkdir -p lite/src/main/java/com/google/protobuf
# lite sources from lite/BUILD.bazel
cp \
core/src/main/java/com/google/protobuf/AbstractMessageLite.java \
core/src/main/java/com/google/protobuf/AbstractParser.java \
core/src/main/java/com/google/protobuf/AbstractProtobufList.java \
core/src/main/java/com/google/protobuf/AllocatedBuffer.java \
core/src/main/java/com/google/protobuf/Android.java \
core/src/main/java/com/google/protobuf/ArrayDecoders.java \
core/src/main/java/com/google/protobuf/BinaryReader.java \
core/src/main/java/com/google/protobuf/BinaryWriter.java \
core/src/main/java/com/google/protobuf/BooleanArrayList.java \
core/src/main/java/com/google/protobuf/BufferAllocator.java \
core/src/main/java/com/google/protobuf/ByteBufferWriter.java \
core/src/main/java/com/google/protobuf/ByteOutput.java \
core/src/main/java/com/google/protobuf/ByteString.java \
core/src/main/java/com/google/protobuf/CanIgnoreReturnValue.java \
core/src/main/java/com/google/protobuf/CheckReturnValue.java \
core/src/main/java/com/google/protobuf/CodedInputStream.java \
core/src/main/java/com/google/protobuf/CodedInputStreamReader.java \
core/src/main/java/com/google/protobuf/CodedOutputStream.java \
core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java \
core/src/main/java/com/google/protobuf/CompileTimeConstant.java \
core/src/main/java/com/google/protobuf/DoubleArrayList.java \
core/src/main/java/com/google/protobuf/ExperimentalApi.java \
core/src/main/java/com/google/protobuf/ExtensionLite.java \
core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java \
core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java \
core/src/main/java/com/google/protobuf/ExtensionSchema.java \
core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java \
core/src/main/java/com/google/protobuf/ExtensionSchemas.java \
core/src/main/java/com/google/protobuf/FieldInfo.java \
core/src/main/java/com/google/protobuf/FieldSet.java \
core/src/main/java/com/google/protobuf/FieldType.java \
core/src/main/java/com/google/protobuf/FloatArrayList.java \
core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java \
core/src/main/java/com/google/protobuf/GeneratedMessageLite.java \
core/src/main/java/com/google/protobuf/InlineMe.java \
core/src/main/java/com/google/protobuf/IntArrayList.java \
core/src/main/java/com/google/protobuf/Internal.java \
core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \
core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java \
core/src/main/java/com/google/protobuf/Java8Compatibility.java \
core/src/main/java/com/google/protobuf/JavaType.java \
core/src/main/java/com/google/protobuf/LazyField.java \
core/src/main/java/com/google/protobuf/LazyFieldLite.java \
core/src/main/java/com/google/protobuf/LazyStringArrayList.java \
core/src/main/java/com/google/protobuf/LazyStringList.java \
core/src/main/java/com/google/protobuf/ListFieldSchema.java \
core/src/main/java/com/google/protobuf/ListFieldSchemaLite.java \
core/src/main/java/com/google/protobuf/ListFieldSchemas.java \
core/src/main/java/com/google/protobuf/LongArrayList.java \
core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java \
core/src/main/java/com/google/protobuf/MapEntryLite.java \
core/src/main/java/com/google/protobuf/MapFieldLite.java \
core/src/main/java/com/google/protobuf/MapFieldSchema.java \
core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java \
core/src/main/java/com/google/protobuf/MapFieldSchemas.java \
core/src/main/java/com/google/protobuf/MessageInfo.java \
core/src/main/java/com/google/protobuf/MessageInfoFactory.java \
core/src/main/java/com/google/protobuf/MessageLite.java \
core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \
core/src/main/java/com/google/protobuf/MessageLiteToString.java \
core/src/main/java/com/google/protobuf/MessageSchema.java \
core/src/main/java/com/google/protobuf/MessageSetSchema.java \
core/src/main/java/com/google/protobuf/MutabilityOracle.java \
core/src/main/java/com/google/protobuf/NewInstanceSchema.java \
core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java \
core/src/main/java/com/google/protobuf/NewInstanceSchemas.java \
core/src/main/java/com/google/protobuf/OneofInfo.java \
core/src/main/java/com/google/protobuf/Parser.java \
core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java \
core/src/main/java/com/google/protobuf/ProtoSyntax.java \
core/src/main/java/com/google/protobuf/Protobuf.java \
core/src/main/java/com/google/protobuf/ProtobufArrayList.java \
core/src/main/java/com/google/protobuf/ProtocolStringList.java \
core/src/main/java/com/google/protobuf/RawMessageInfo.java \
core/src/main/java/com/google/protobuf/Reader.java \
core/src/main/java/com/google/protobuf/RopeByteString.java \
core/src/main/java/com/google/protobuf/RuntimeVersion.java \
core/src/main/java/com/google/protobuf/Schema.java \
core/src/main/java/com/google/protobuf/SchemaFactory.java \
core/src/main/java/com/google/protobuf/SchemaUtil.java \
core/src/main/java/com/google/protobuf/SmallSortedMap.java \
core/src/main/java/com/google/protobuf/StructuralMessageInfo.java \
core/src/main/java/com/google/protobuf/TextFormatEscaper.java \
core/src/main/java/com/google/protobuf/UninitializedMessageException.java \
core/src/main/java/com/google/protobuf/UnknownFieldSchema.java \
core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java \
core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java \
core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \
core/src/main/java/com/google/protobuf/UnsafeByteOperations.java \
core/src/main/java/com/google/protobuf/UnsafeUtil.java \
core/src/main/java/com/google/protobuf/Utf8.java \
core/src/main/java/com/google/protobuf/WireFormat.java \
core/src/main/java/com/google/protobuf/Writer.java \
lite/src/main/java/com/google/protobuf/
protoc \
--java_out=lite:lite/src/main/java \
--proto_path=../src \
--proto_path=core/src/main/resources/google/protobuf \
../src/google/protobuf/any.proto \
../src/google/protobuf/api.proto \
../src/google/protobuf/descriptor.proto \
../src/google/protobuf/duration.proto \
../src/google/protobuf/empty.proto \
../src/google/protobuf/field_mask.proto \
../src/google/protobuf/source_context.proto \
../src/google/protobuf/struct.proto \
../src/google/protobuf/timestamp.proto \
../src/google/protobuf/type.proto \
../src/google/protobuf/wrappers.proto
cp \
../src/google/protobuf/any.proto \
../src/google/protobuf/api.proto \
../src/google/protobuf/descriptor.proto \
../src/google/protobuf/duration.proto \
../src/google/protobuf/empty.proto \
../src/google/protobuf/field_mask.proto \
../src/google/protobuf/source_context.proto \
../src/google/protobuf/struct.proto \
../src/google/protobuf/timestamp.proto \
../src/google/protobuf/type.proto \
../src/google/protobuf/wrappers.proto \
lite/src/main/resources/google/protobuf/
%{mvn_build} -f -- -Dprotoc=$(type -p protoc)
popd
%install
pushd java
%mvn_install
%fdupes -s %{buildroot}%{_javadocdir}
%files -f java/.mfiles
%license LICENSE
%files bom -f java/.mfiles-bom
%files parent -f java/.mfiles-parent
%files javadoc -f java/.mfiles-javadoc
%license LICENSE
%changelog

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-parent</artifactId>
<version>4.28.3</version>
</parent>
<artifactId>protobuf-javalite</artifactId>
<packaging>jar</packaging>
<name>Protocol Buffers [Lite]</name>
<description>
Lite version of Protocol Buffers library. This version is optimized for code size, but does
not guarantee API/ABI stability.
</description>
<dependencies>
</dependencies>
<build>
<plugins>
<!-- OSGI bundle configuration -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Automatic-Module-Name>com.google.protobuf</Automatic-Module-Name> <!-- Java9+ Jigsaw module name -->
<Bundle-DocURL>https://developers.google.com/protocol-buffers/</Bundle-DocURL>
<Bundle-SymbolicName>com.google.protobuf</Bundle-SymbolicName>
<Export-Package>com.google.protobuf;version=${project.version}</Export-Package>
<Import-Package>sun.misc;resolution:=optional,*</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,3 +1,92 @@
-------------------------------------------------------------------
Mon Oct 28 08:20:17 UTC 2024 - Dirk Müller <dmueller@suse.com>
- python: switch to pypi package to get the cythonized component
- drop python-protobuf-setup_py.patch (obsolete)
-------------------------------------------------------------------
Sat Oct 26 08:40:48 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Add versionize-shlibs.patch, delete static-utf8-ranges.patch
* Build the libutf8_range and libutf8_validity as shared library
to conform to SLPP
-------------------------------------------------------------------
Fri Oct 25 15:24:11 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 28.3:
* Fix packed reflection handling bug in edition 2023.
* Mute the minor version warning
* Populate Kotlin Manifest Files
* Re-export includingDefaultValueFields in deprecated state for
important Cloud customer. (https://github.com/protocolbuffers
/protobuf/commit/3b62d78dc70d2b43af5998d427452246279363c7)
* Cherrypick restoration of mutableCopy helpers (https://github
.com/protocolbuffers/protobuf/commit/3ea568a9b6107ebf0d617c47
6f53a31490fd3182)
* Mute the minor version warning
-------------------------------------------------------------------
Thu Oct 24 20:56:51 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Added patch: static-utf8-ranges.patch
* Build the libutf8_range and libutf8_validity as static library
to avoid installcheck failures
-------------------------------------------------------------------
Wed Oct 23 08:44:06 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Java: fix generating proper maven descriptor for protoc on aarch64
- Java: rename global variable buildarch -> protoc_arch to avoid
name clash on sle15
-------------------------------------------------------------------
Mon Oct 21 20:55:21 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Java: mimic the bazel build and build also the protobuf-javalite
artifact
-------------------------------------------------------------------
Mon Oct 21 13:27:27 UTC 2024 - Dirk Müller <dmueller@suse.com>
- Python: keep building for 15.4+
-------------------------------------------------------------------
Mon Oct 21 11:34:51 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Java: add maven artifact metadata for the protoc binary
* make the main package archful, since the protoc artifact
metadata declares the architecture of the binary
-------------------------------------------------------------------
Sat Oct 19 17:03:05 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Python: Generate the headers that the Cython native library needs
to build
- Added patch:
* python-protobuf-setup_py.patch
+ make the bitrotten setup.py find the source files for the
C native library
+ Modify the code so that the build works on python 3.6 too
-------------------------------------------------------------------
Tue Oct 15 13:49:20 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- Splitting the java and python parts into separate packages
* allows much more readable and simple spec files
* allows disabling bindings separately from the main package
- Build protobuf-java with the upstream version that is currently
4.28.2
- Add a pre_checkin.sh script to synchronize the changes files
-------------------------------------------------------------------
Mon Oct 7 10:46:17 UTC 2024 - Adrian Schröter <adrian@suse.de>
- update to 28.2
C++: Fix cord handling in DynamicMessage and oneofs
Java: Add recursion check when parsing unknown fields
- python packages became arch dependend
-------------------------------------------------------------------
Sun Aug 11 09:49:53 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
@ -14,8 +103,8 @@ Fri Aug 2 16:42:09 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
bytes in StreamDecoder
* Java: Add Automatic-Module-Name
* PHP: Regen stale files
* Ruby C-Extension: Regen stale files
* Ruby C-Extension: Regen stale files
-------------------------------------------------------------------
Sat Mar 9 20:36:14 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>

View File

@ -18,32 +18,66 @@
%define tarname protobuf
%define extra_java_flags -source 8 -target 8
# see cmake/abseil-cpp.cmake and src/google/protobuf/port_def.inc
%define abseil_min_version 20230125.3
%global sover 28_3_0
%if 0%{?gcc_version} < 11
%define with_gcc 11
%endif
# requires gmock, which is not yet in the distribution
%bcond_with check
%bcond_without java
%bcond_without python3
%{?sle15_python_module_pythons}
%global protoc_arch %{_arch}
%ifarch x86_64 %{?x86_64}
%global protoc_arch x86_64
%endif
%ifarch ppc
%global protoc_arch ppc_32
%endif
%ifarch ppc64
%global protoc_arch ppc_64
%endif
%ifarch ppc64le
%global protoc_arch ppcle_64
%endif
%ifarch %{ix86}
%global protoc_arch x86_32
%endif
%ifarch ia64
%global protoc_arch itanium_64
%endif
%ifarch s390
%global protoc_arch s390_32
%endif
%ifarch s390x
%global protoc_arch s390_64
%endif
%ifarch %{arm}
%global protoc_arch arm_32
%endif
%ifarch aarch64 %{arm64}
%global protoc_arch aarch_64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global protoc_arch sparc_32
%endif
# 64 bit sparc
%ifarch sparc64
%global protoc_arch sparc_64
%endif
Name: protobuf
Version: 25.4
%global sover 25_4_0
Version: 28.3
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: manifest.txt.in
Source2: baselibs.conf
BuildRequires: %{python_module abseil}
BuildRequires: %{python_module devel >= 3.7}
BuildRequires: %{python_module python-dateutil}
BuildRequires: %{python_module setuptools}
BuildRequires: c++_compiler
Source1: baselibs.conf
Patch1: versionize-shlibs.patch
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc%{?with_gcc}-c++
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
# see cmake/abseil-cpp.cmake
@ -85,20 +119,6 @@ BuildRequires: pkgconfig(zlib)
%if %{with check}
BuildRequires: libgmock-devel >= 1.7.0
%endif
%if %{with java}
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local >= 6
%endif
%if 0%{?suse_version} >= 1500
# generate subpackages for every python3 flavor
%define python_subpackage_only 1
%python_subpackages
%else
# same "defaults" for all distributions, used in files section
%define python_files() -n python3-%{**}
%define python_sitelib %{python3_sitelib}
%endif
%description
Protocol Buffers are a way of encoding structured data in an efficient yet
@ -132,94 +152,49 @@ 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 libutf8_range-%{sover}
Summary: UTF-8 validation libraries from Protobuf
Group: System/Libraries
%description -n libutf8_range-%{sover}
UTF-8 string validation library with optional SIMD acceleration (armv8a NEON,
SSE4 and AVX2).
%package devel
Summary: Header files, libraries and development documentation for %{name}
Group: Development/Libraries/C and C++
Requires: libprotobuf%{sover} = %{VERSION}
Requires: libprotobuf-lite%{sover}
Requires: libprotobuf%{sover} = %{version}
Requires: libprotobuf-lite%{sover} = %{version}
Requires: libutf8_range-%{sover} = %{version}
Conflicts: protobuf2-devel
Conflicts: protobuf21-devel
Provides: libprotobuf-devel = %{VERSION}
Provides: libprotobuf-devel = %{version}
# Not generated automatically without javapackages-local as dependency
Provides: mvn(com.google.protobuf:protoc:exe:linux-%{protoc_arch}:)
%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.
%if 0%{?python_subpackage_only}
%package -n python-%{name}
Version: 4.%{VERSION}
Summary: Python Bindings for Google Protocol Buffers
Group: Development/Libraries/Python
BuildArch: noarch
%description -n python-%{name}
This package contains the Python bindings for Google Protocol Buffers.
%else
%package -n python3-%{name}
Version: 4.%{VERSION}
Summary: Python3 Bindings for Google Protocol Buffers
Group: Development/Libraries/Python
BuildArch: noarch
%description -n python3-%{name}
This package contains the Python bindings for Google Protocol Buffers.
%endif
%package -n %{name}-java
Summary: Java Bindings for Google Protocol Buffers
Group: Development/Libraries/Java
Requires: java >= 1.6.0
BuildArch: noarch
%description -n %{name}-java
This package contains the Java bindings for Google Protocol Buffers.
%prep
%autosetup -p1 -n %{tarname}-%{VERSION}
%autosetup -p1 -n %{tarname}-%{version}
# python module have their own version specified in python/google/protobuf/__init__.py
grep -qF "'4.%{VERSION}'" python/google/protobuf/__init__.py
# The previous blank line is crucial for older system being able
# to use the autosetup macro
mkdir gmock
%if %{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
%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 java}
pushd ../java
../build/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
export PROTOC=../build/protoc
%python_build
popd
%if %{with check}
%check
%make_build check
@ -228,41 +203,62 @@ popd
%install
%cmake_install
install -Dm 0644 editors/proto.vim %{buildroot}%{_datadir}/vim/site/syntax/proto.vim
# manual ln that we could not manage to get into versionize-shlibs.patch
ln -s libutf8_range-%{version}.0.so %{buildroot}/%{_libdir}/libutf8_range.so
ln -s libutf8_validity-%{version}.0.so %{buildroot}/%{_libdir}/libutf8_validity.so
%if %{with java}
pushd java
install -d -m 0755 %{buildroot}%{_javadir}
install -p -m 0644 %{name}-java-%{version}.jar %{buildroot}%{_javadir}/%{name}-java.jar
ln -s %{name}-java.jar %{buildroot}%{_javadir}/%{name}.jar
install -d -m 0755 %{buildroot}%{_mavenpomdir}
%{mvn_install_pom} core/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-java.pom
%add_maven_depmap %{name}-java.pom %{name}-java.jar
popd
%endif
pushd python
export PROTOC=../build/protoc
%python_install
popd
%python_expand %fdupes %{buildroot}%{$python_sitelib}
# create maven metadata for the protoc executable
install -dm 0755 %{buildroot}%{_datadir}/maven-metadata
cat <<__PROTOBUF__ >>%{buildroot}%{_datadir}/maven-metadata/%{name}-protoc.xml
<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/2.3.0">
<artifacts>
<artifact>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<extension>exe</extension>
<classifier>linux-%{protoc_arch}</classifier>
<version>4.%{version}</version>
<path>%{_bindir}/protoc</path>
</artifact>
</artifacts>
</metadata>
__PROTOBUF__
%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
%post -n libutf8_range-%{sover} -p /sbin/ldconfig
%postun -n libutf8_range-%{sover} -p /sbin/ldconfig
%else
%ldconfig_scriptlets -n libprotobuf%{sover}
%ldconfig_scriptlets -n libprotoc%{sover}
%ldconfig_scriptlets -n libprotobuf-lite%{sover}
%ldconfig_scriptlets -n libutf8_range-%{sover}
%endif
%files -n libprotobuf%{sover}
%license LICENSE
%{_libdir}/libprotobuf.so.%{VERSION}.0
%{_libdir}/libprotobuf.so.%{version}.0
%files -n libprotoc%{sover}
%license LICENSE
%{_libdir}/libprotoc.so.%{VERSION}.0
%{_libdir}/libprotoc.so.%{version}.0
%files -n libprotobuf-lite%{sover}
%license LICENSE
%{_libdir}/libprotobuf-lite.so.%{VERSION}.0
%{_libdir}/libprotobuf-lite.so.%{version}.0
%files -n libutf8_range-%{sover}
%license LICENSE
%{_libdir}/libutf8_range-%{version}.0.so
%{_libdir}/libutf8_validity-%{version}.0.so
%files devel
%license LICENSE
@ -273,11 +269,13 @@ popd
%dir %{_includedir}/java/core
%dir %{_includedir}/java/core/src
%dir %{_includedir}/java/core/src/main
%dir %{_includedir}/java/core/src/main/java
%dir %{_includedir}/java/core/src/main/java/com
%dir %{_includedir}/java/core/src/main/java/com/google
%dir %{_includedir}/java/core/src/main/java/com/google/protobuf
%{_includedir}/java/core/src/main/java/com/google/protobuf/java_features.proto
%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
@ -285,23 +283,10 @@ popd
%{_libdir}/libprotobuf-lite.so
%{_libdir}/libprotobuf.so
%{_libdir}/libprotoc.so
%{_libdir}/libutf8_range.a
%{_libdir}/libutf8_validity.a
%{_libdir}/libupb.a
%{_libdir}/libutf8_range.so
%{_libdir}/libutf8_validity.so
%{_datadir}/vim
%if %{with java}
%files -n %{name}-java -f java/.mfiles
%license LICENSE
%{_javadir}/%{name}.jar
%endif
%if %{with python3}
%files %{python_files %{name}}
%license LICENSE
%dir %{python_sitelib}/google
%{python_sitelib}/google/protobuf
%{python_sitelib}/protobuf*nspkg.pth
%{python_sitelib}/protobuf*info
%endif
%{_datadir}/maven-metadata
%changelog

2075
python-protobuf.changes Normal file

File diff suppressed because it is too large Load Diff

71
python-protobuf.spec Normal file
View File

@ -0,0 +1,71 @@
#
# spec file for package python-protobuf
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# 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 baseversion 28.3
%{?sle15_python_module_pythons}
Name: python-protobuf
Version: 5.%{baseversion}
Release: 0
Summary: Python Bindings for Google Protocol Buffers
License: BSD-3-Clause
Group: Development/Libraries/Python
URL: https://github.com/protocolbuffers/protobuf
Source0: https://files.pythonhosted.org/packages/source/p/protobuf/protobuf-%{version}.tar.gz
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module python-dateutil}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
%python_subpackages
%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.
This package contains the Python bindings for Google Protocol Buffers.
%prep
%autosetup -p1 -n protobuf-%{version}
# The previous blank line is crucial for older system being able
# to use the autosetup macro
grep -qF "'%{version}'" google/protobuf/__init__.py
# kill shebang that we do not really want
sed -i -e '/env python/d' google/protobuf/internal/*.py
%build
%pyproject_wheel
%install
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%fdupes %{buildroot}%{_prefix}
%files %{python_files}
%license LICENSE
%{python_sitearch}/google
%{python_sitearch}/protobuf*nspkg.pth
%{python_sitearch}/protobuf-%{version}.dist-info
%changelog

32
versionize-shlibs.patch Normal file
View File

@ -0,0 +1,32 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2024-10-28 10:10:20.918922623 +0100
References: https://github.com/protocolbuffers/protobuf/pull/19009
Unversioned libraries are strongly discouraged. Use
https://en.opensuse.org/openSUSE:Shared_library_packaging_policy#When_there_is_no_versioning
method 1 to remedy. Though utf8_range has a version of its own ("1.0"
visible through the .pc file) and gets third_party/-like treatment,
protobuf is the authoritative repository for it, using the protobuf
version for our SONAME seems acceptable.
This openSUSE patch follows SLPP's naming provisions and so is
slightly different from PR19009 while the PR is unmerged.
---
third_party/utf8_range/CMakeLists.txt | 8 ++++++++
1 file changed, 8 insertions(+)
Index: protobuf-28.3/third_party/utf8_range/CMakeLists.txt
===================================================================
--- protobuf-28.3.orig/third_party/utf8_range/CMakeLists.txt
+++ protobuf-28.3/third_party/utf8_range/CMakeLists.txt
@@ -19,6 +19,9 @@ add_library (utf8_range
# A heavier-weight C++ wrapper that supports Abseil.
add_library (utf8_validity utf8_validity.cc utf8_range.c)
+set_target_properties(utf8_range PROPERTIES OUTPUT_NAME ${LIB_PREFIX}utf8_range-${protobuf_VERSION})
+set_target_properties(utf8_validity PROPERTIES OUTPUT_NAME ${LIB_PREFIX}utf8_validity-${protobuf_VERSION})
+
# Load Abseil dependency.
if (NOT TARGET absl::strings)
if (NOT ABSL_ROOT_DIR)