SHA256
1
0
forked from pool/grpc

Accepting request 841067 from devel:tools

OBS-URL: https://build.opensuse.org/request/show/841067
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grpc?expand=0&rev=24
This commit is contained in:
Dominique Leuenberger 2020-10-14 13:36:49 +00:00 committed by Git OBS Bridge
commit 705f0882e3
6 changed files with 295 additions and 57 deletions

View File

@ -0,0 +1,13 @@
Index: grpc-1.32.0/CMakeLists.txt
===================================================================
--- grpc-1.32.0.orig/CMakeLists.txt
+++ grpc-1.32.0/CMakeLists.txt
@@ -15667,7 +15667,7 @@ function(generate_pkgconfig name descrip
"${output_filepath}"
@ONLY)
install(FILES "${output_filepath}"
- DESTINATION "lib/pkgconfig/")
+ DESTINATION "${gRPC_INSTALL_LIBDIR}/pkgconfig/")
endfunction()
# gpr .pc file

View File

@ -0,0 +1,120 @@
From 45e413d2520795e7281e9a592af81620349bc186 Mon Sep 17 00:00:00 2001
From: Paul Wankadia <junyer@google.com>
Date: Wed, 9 Sep 2020 04:26:36 -0700
Subject: [PATCH] Attempt to find RE2 via CMake and via pkg-config.
---
CMakeLists.txt | 1 +
cmake/modules/Findre2.cmake | 58 +++++++++++++++++++++++++++++++
cmake/re2.cmake | 6 +---
templates/CMakeLists.txt.template | 1 +
4 files changed, 61 insertions(+), 5 deletions(-)
create mode 100644 cmake/modules/Findre2.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4b04d25ac50..cecb4396c57 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15624,6 +15624,7 @@ install(FILES
)
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/Findc-ares.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/Findre2.cmake
DESTINATION ${gRPC_INSTALL_CMAKEDIR}/modules
)
diff --git a/cmake/modules/Findre2.cmake b/cmake/modules/Findre2.cmake
new file mode 100644
index 00000000000..41df4547138
--- /dev/null
+++ b/cmake/modules/Findre2.cmake
@@ -0,0 +1,58 @@
+# Copyright 2017 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+find_package(re2 QUIET CONFIG)
+if(re2_FOUND)
+ message(STATUS "Found RE2 via CMake.")
+ return()
+endif()
+
+find_package(PkgConfig REQUIRED)
+# TODO(junyer): Use the IMPORTED_TARGET option whenever CMake 3.6 (or newer)
+# becomes the minimum required: that will take care of the add_library() and
+# set_property() calls; then we can simply alias PkgConfig::RE2 as re2::re2.
+# For now, we can only set INTERFACE_* properties that existed in CMake 3.5.
+pkg_check_modules(RE2 QUIET re2)
+if(RE2_FOUND)
+ set(re2_FOUND "${RE2_FOUND}")
+ add_library(re2::re2 INTERFACE IMPORTED)
+ if(RE2_INCLUDE_DIRS)
+ set_property(TARGET re2::re2 PROPERTY
+ INTERFACE_INCLUDE_DIRECTORIES "${RE2_INCLUDE_DIRS}")
+ endif()
+ if(RE2_CFLAGS_OTHER)
+ # Filter out the -std flag, which is handled by CMAKE_CXX_STANDARD.
+ # TODO(junyer): Use the FILTER option whenever CMake 3.6 (or newer)
+ # becomes the minimum required: that will allow this to be concise.
+ foreach(flag IN LISTS RE2_CFLAGS_OTHER)
+ if("${flag}" MATCHES "^-std=")
+ list(REMOVE_ITEM RE2_CFLAGS_OTHER "${flag}")
+ endif()
+ endforeach()
+ set_property(TARGET re2::re2 PROPERTY
+ INTERFACE_COMPILE_OPTIONS "${RE2_CFLAGS_OTHER}")
+ endif()
+ if(RE2_LDFLAGS)
+ set_property(TARGET re2::re2 PROPERTY
+ INTERFACE_LINK_LIBRARIES "${RE2_LDFLAGS}")
+ endif()
+ message(STATUS "Found RE2 via pkg-config.")
+ return()
+endif()
+
+if(re2_FIND_REQUIRED)
+ message(FATAL_ERROR "Failed to find RE2.")
+elseif(NOT re2_FIND_QUIETLY)
+ message(WARNING "Failed to find RE2.")
+endif()
diff --git a/cmake/re2.cmake b/cmake/re2.cmake
index 3e83aae6910..974b0a436e2 100644
--- a/cmake/re2.cmake
+++ b/cmake/re2.cmake
@@ -45,13 +45,9 @@ if(gRPC_RE2_PROVIDER STREQUAL "module")
set(gRPC_INSTALL FALSE)
endif()
elseif(gRPC_RE2_PROVIDER STREQUAL "package")
- find_package(re2 REQUIRED CONFIG)
-
+ find_package(re2 REQUIRED)
if(TARGET re2::re2)
set(_gRPC_RE2_LIBRARIES re2::re2)
- else()
- set(_gRPC_RE2_LIBRARIES ${RE2_LIBRARIES})
endif()
- set(_gRPC_RE2_INCLUDE_DIR ${RE2_INCLUDE_DIRS})
set(_gRPC_FIND_RE2 "if(NOT re2_FOUND)\n find_package(re2)\nendif()")
endif()
diff --git a/templates/CMakeLists.txt.template b/templates/CMakeLists.txt.template
index c7f2556dc92..f7db0fd2d0c 100644
--- a/templates/CMakeLists.txt.template
+++ b/templates/CMakeLists.txt.template
@@ -706,6 +706,7 @@
)
install(FILES
<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/cmake/modules/Findc-ares.cmake
+ <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/cmake/modules/Findre2.cmake
DESTINATION <%text>${gRPC_INSTALL_CMAKEDIR}</%text>/modules
)

View File

@ -1,3 +1,82 @@
-------------------------------------------------------------------
Sun Oct 11 16:14:38 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
- Specify gRPC_INSTALL_LIBDIR and gRPC_INSTALL_CMAKEDIR to
correctly configure install paths for libraries and cmake files
instead of moving them after the installation.
- Add grpc-correct-pkgconfig-path.patch to fix install path for
pkgconfig file relative to gRPC_INSTALL_LIBDIR.
- Add Requires: pkgconfig(libcares) for the -devel pkg.
-------------------------------------------------------------------
Tue Sep 22 16:37:51 UTC 2020 - Michał Rostecki <mrostecki@suse.com>
- Add new subpackages - libupb and upb-devel. Currently, grpc
sources include also upb sources. Before this change, libupb and
upb-devel used to be included in a separate package - upb.
-------------------------------------------------------------------
Fri Sep 18 19:53:23 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
- Add pkgconfig(re2) to list of Requires for grpc-devel package.
-------------------------------------------------------------------
Thu Sep 17 13:14:42 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
- Fixup 1.32.0 update with wrong grpc-devel ->
libgrpc-support-plugin1 require.
-------------------------------------------------------------------
Sat Sep 12 22:11:30 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
- Drop now-obsolescent Conflicts.
-------------------------------------------------------------------
Thu Sep 10 14:33:01 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 1.32.0:
* Core
- Remove stream from stalled lists on remove_stream
(gh#grpc/grpc#23984).
- Do not cancel RPC if send metadata size if larger than
peer's limit (gh#grpc/grpc#23806).
- Don't consider receiving non-OK status as an error for HTTP2
(gh#grpc/grpc#19545).
- Keepalive throttling (gh#grpc/grpc#23313).
- Include the target_uri in "target uri is not valid" error
messages (gh#grpc/grpc#23782).
- Fix "cannot send compressed message large than 1024B" in
cronet_transport (gh#grpc/grpc#23219).
- Receive SETTINGS frame on clients before declaring
subchannel READY (gh#grpc/grpc#23636).
- Enabled GPR_ABSEIL_SYNC (gh#grpc/grpc#23372).
- Experimental xDS v3 support (gh#grpc/grpc#23281).
* C++
- Upgrade bazel used for all tests to 2.2.0
(gh#grpc/grpc#23902).
- Remove test targets and test helper libraries from Makefile
(gh#grpc/grpc#23813).
- Fix repeated builds broken by re2's cmake
(gh#grpc/grpc#23587).
- Log the peer address of grpc_cli CallMethod RPCs to stderr
(gh#grpc/grpc#23557).
- Use cmake to configure and cmake macros to build and install.
- New BuildRequires: abseil-cpp-source and pkgconfig(re2); copy
abseil-cpp-source contents into source's third_party dir and
build it as a module (since we don't have the actual abseil-cpp
library built for openSUSE.
- Add grpc-find-re2-via-pkgconfig.patch to enable finding system
Re2 library via pkg-config; taken from upstream PR
gh#grpc/grpc#24088.
- Split out new shared lib package libgrpc_plugin_support1 for
supporting grpc plugins.
-------------------------------------------------------------------
Wed Sep 9 22:43:27 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
- Drop python modules provided by python-grpcio source package in
openSUSE:Factory.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Mar 12 06:53:27 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com> Thu Mar 12 06:53:27 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>

134
grpc.spec
View File

@ -16,13 +16,12 @@
# #
%define lver 8 %define lver 12
%define lverp 1 %define lverp 1
%define lverplugin 1
%define src_install_dir /usr/src/%name %define src_install_dir /usr/src/%name
%bcond_without python2
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: grpc Name: grpc
Version: 1.25.0 Version: 1.32.0
Release: 0 Release: 0
Summary: HTTP/2-based Remote Procedure Call implementation Summary: HTTP/2-based Remote Procedure Call implementation
License: Apache-2.0 License: Apache-2.0
@ -30,18 +29,20 @@ Group: Development/Tools/Building
URL: https://grpc.io/ URL: https://grpc.io/
Source: https://github.com/grpc/grpc/archive/v%version.tar.gz Source: https://github.com/grpc/grpc/archive/v%version.tar.gz
Source2: %name-rpmlintrc Source2: %name-rpmlintrc
BuildRequires: %{python_module Cython} # PATCH-FIX-UPSTREAM grpc-find-re2-via-pkgconfig.patch gh#grpc/grpc#24088 badshah400@gmail.com -- Attempt to find Re2 library via pkg-config; patch taken from upstream PR
BuildRequires: %{python_module devel} Patch0: grpc-find-re2-via-pkgconfig.patch
BuildRequires: %{python_module setuptools} # PATCH-FIX-UPSTREAM grpc-correct-pkgconfig-path.patch badshah400@gmail.com -- Make path for pkgconfig file installation consistent with gRPC_INSTALL_LIBDIR specification
Patch1: grpc-correct-pkgconfig-path.patch
BuildRequires: abseil-cpp-source
BuildRequires: cmake BuildRequires: cmake
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: pkg-config BuildRequires: pkg-config
BuildRequires: python-rpm-macros
BuildRequires: zypper BuildRequires: zypper
BuildRequires: pkgconfig(libcares) BuildRequires: pkgconfig(libcares)
BuildRequires: pkgconfig(openssl) >= 1.0.1 BuildRequires: pkgconfig(openssl) >= 1.0.1
BuildRequires: pkgconfig(protobuf) >= 3.8.0 BuildRequires: pkgconfig(protobuf) >= 3.8.0
BuildRequires: pkgconfig(re2)
BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib)
%description %description
@ -52,10 +53,6 @@ Protocol Buffers as the Interface Definition Language by default.
%package -n libgrpc%lver %package -n libgrpc%lver
Summary: HTTP/2-based Remote Procedure Call implementation Summary: HTTP/2-based Remote Procedure Call implementation
Group: System/Libraries Group: System/Libraries
%if "%lver" == "7"
# prior error in packaging
Conflicts: libgrpc6
%endif
%description -n libgrpc%lver %description -n libgrpc%lver
The reference implementation of the gRPC protocol, done on top of The reference implementation of the gRPC protocol, done on top of
@ -75,16 +72,55 @@ The reference implementation of the gRPC protocol, done on top of
HTTP/2 with support for synchronous and asynchronous calls. gRPC uses HTTP/2 with support for synchronous and asynchronous calls. gRPC uses
Protocol Buffers as the Interface Definition Language by default. Protocol Buffers as the Interface Definition Language by default.
%package -n libgrpc_plugin_support%lverplugin
Summary: HTTP/2-based Remote Procedure Call implementation - plugin support
Group: System/Libraries
%description -n libgrpc_plugin_support%lverplugin
The reference implementation of the gRPC protocol, done on top of
HTTP/2 with support for synchronous and asynchronous calls. gRPC uses
Protocol Buffers as the Interface Definition Language by default.
This package provides the shared library to support plugins for grpc.
%package -n libupb%lver
Summary: A small protobuf implementation in C
Group: System/Libraries
%description -n libupb%lver
μpb (often written 'upb') is a small protobuf implementation written in C.
upb generates a C API for creating, parsing, and serializing messages as
declared in .proto files. upb is heavily arena-based: all messages always live
in an arena (note: the arena can live in stack or static memory if desired).
%package devel %package devel
Summary: Development files for grpc, a HTTP/2 Remote Procedure Call implementation Summary: Development files for grpc, a HTTP/2 Remote Procedure Call implementation
Group: Development/Tools/Building Group: Development/Tools/Building
Requires: libgrpc%lver = %version Requires: libgrpc%lver = %version
Requires: libgrpc++%lverp = %version Requires: libgrpc++%lverp = %version
Requires: libgrpc_plugin_support%lverplugin = %version
Requires: pkgconfig(libcares)
Requires: pkgconfig(re2)
%description devel %description devel
This subpackage contains libraries and header files for developing This subpackage contains libraries and header files for developing
applications that want to make use of the gRPC reference implementation. applications that want to make use of the gRPC reference implementation.
%package -n upb-devel
Summary: Developmnt files for upb
Group: Development/Tools/Building
Requires: libupb%lver = %version
%description -n upb-devel
μpb (often written 'upb') is a small protobuf implementation written in C.
upb generates a C API for creating, parsing, and serializing messages as
declared in .proto files. upb is heavily arena-based: all messages always live
in an arena (note: the arena can live in stack or static memory if desired).
This package provides development files for upb.
%package source %package source
Summary: Source code of gRPC Summary: Source code of gRPC
Group: Development/Sources Group: Development/Sources
@ -93,24 +129,10 @@ BuildArch: noarch
%description -n grpc-source %description -n grpc-source
This subpackage contains source code of the gRPC reference implementation. This subpackage contains source code of the gRPC reference implementation.
%package -n python2-grpcio
Summary: Python language bindings for grpc, a HTTP/2 Remote Procedure Call implementation
Group: Development/Libraries/Python
Requires: libgrpc%lver = %version-%release
%description -n python2-grpcio
This subpackage contains the python2 bindings.
%package -n python3-grpcio
Summary: Python language bindings for grpc, a HTTP/2 Remote Procedure Call implementation
Group: Development/Libraries/Python
Requires: libgrpc%lver = %version-%release
%description -n python3-grpcio
This subpackage contains the python3 bindings.
%prep %prep
%autosetup -p1 %autosetup -p1
# Copy abseil-cpp source into empty third_party/abseil-cpp dir
cp -r %_prefix/src/abseil-cpp/* third_party/abseil-cpp/
%build %build
%define _lto_cflags %nil %define _lto_cflags %nil
@ -119,36 +141,36 @@ mkdir -p third_party/protobuf/src
export CFLAGS="%optflags -Wno-error" export CFLAGS="%optflags -Wno-error"
export CXXFLAGS="$CFLAGS" export CXXFLAGS="$CFLAGS"
make %{?_smp_mflags} STRIP=/bin/true V=1 VERBOSE=1 %cmake -DgRPC_INSTALL=ON \
-DgRPC_INSTALL_LIBDIR:PATH="%_lib" \
# build python module -DgRPC_INSTALL_CMAKEDIR:PATH="%_libdir"/cmake/grpc \
export GRPC_PYTHON_BUILD_WITH_CYTHON=True -DgRPC_ABSL_PROVIDER=module \
export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True -DgRPC_CARES_PROVIDER=package \
export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=True -DgRPC_PROTOBUF_PROVIDER=package \
export GRPC_PYTHON_BUILD_SYSTEM_CARES=True -DgRPC_RE2_PROVIDER=package \
%python_build -DgRPC_SSL_PROVIDER=package \
-DgRPC_ZLIB_PROVIDER=package
%cmake_build
%install %install
b="%buildroot" b="%buildroot"
# work around "Argument list too long" # work around "Argument list too long"
ln -s "%buildroot" "b" ln -s "%buildroot" "b"
%make_install DESTDIR="b" prefix="b/%_prefix" STRIP=/bin/true V=1 VERBOSE=1 %cmake_install
find "$b/%_includedir" -type f -exec chmod a-x {} +
pushd "$b/usr" pushd "$b/usr"
rm -fv lib/*.a share/grpc/*.pem rm -fv lib/*.a share/grpc/*.pem
perl -i -pe 's{^prefix=.*}{prefix=%_prefix}' lib/pkgconfig/*.pc
perl -i -pe 's{^libdir=.*}{libdir=%_libdir}' lib/pkgconfig/*.pc
if test ! -d lib64 && test "%_lib" = lib64; then
mv lib lib64
fi
popd popd
%python_install
# Install sources # Install sources
pushd %__builddir
make clean make clean
rm -f "b" "a.out" rm -f "b"
find . -type f "(" -name "*.so" -o -name "*.o" -o -name ".git*" ")" -exec rm -rf {} + find . -type f "(" -name "*.so" -o -name "*.o" -o -name ".git*" -o -name "*.bin" -o -name "*.out" ")" -exec rm -rf {} +
popd
# Don't include abseil-cpp in sources
rm -fr third_party/abseil-cpp/*
mkdir -p "%buildroot/%src_install_dir" mkdir -p "%buildroot/%src_install_dir"
cp -r * "%buildroot/%src_install_dir" cp -r * "%buildroot/%src_install_dir"
@ -158,6 +180,8 @@ cp -r * "%buildroot/%src_install_dir"
%postun -n libgrpc%lver -p /sbin/ldconfig %postun -n libgrpc%lver -p /sbin/ldconfig
%post -n libgrpc++%lverp -p /sbin/ldconfig %post -n libgrpc++%lverp -p /sbin/ldconfig
%postun -n libgrpc++%lverp -p /sbin/ldconfig %postun -n libgrpc++%lverp -p /sbin/ldconfig
%post -n libgrpc_plugin_support%lverplugin -p /sbin/ldconfig
%postun -n libgrpc_plugin_support%lverplugin -p /sbin/ldconfig
%files -n libgrpc%lver %files -n libgrpc%lver
%_libdir/libaddress_sorting.so.%{lver}* %_libdir/libaddress_sorting.so.%{lver}*
@ -168,22 +192,24 @@ cp -r * "%buildroot/%src_install_dir"
%_libdir/libgrpc++*.so.%{lverp}* %_libdir/libgrpc++*.so.%{lverp}*
%_libdir/libgrpcpp_channelz.so.%{lverp}* %_libdir/libgrpcpp_channelz.so.%{lverp}*
%files -n libgrpc_plugin_support%lverplugin
%_libdir/libgrpc_plugin_support.so.%{lverplugin}*
%files -n libupb%lver
%_libdir/libupb*.so.%{lver}*
%files devel %files devel
%license LICENSE %license LICENSE
%_bindir/* %_bindir/*
%_includedir/* %_includedir/*
%_libdir/pkgconfig/*.pc %_libdir/pkgconfig/*.pc
%_libdir/*.so %_libdir/*.so
%_libdir/cmake/grpc/
%files -n upb-devel
%_libdir/libupb*.so
%files source %files source
%src_install_dir %src_install_dir
%if %{with python2}
%files -n python2-grpcio
%python2_sitearch/grpc*
%endif
%files -n python3-grpcio
%python3_sitearch/grpc*
%changelog %changelog

View File

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

3
v1.32.0.tar.gz Normal file
View File

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