SHA256
1
0
forked from pool/grpc

Accepting request 833510 from home:badshah400:branches:devel:tools

* Update to version 1.32.0.
* 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.

OBS-URL: https://build.opensuse.org/request/show/833510
OBS-URL: https://build.opensuse.org/package/show/devel:tools/grpc?expand=0&rev=63
This commit is contained in:
Jan Engelhardt 2020-09-10 15:19:49 +00:00 committed by Git OBS Bridge
parent 99cc36b0e3
commit effca5875f
5 changed files with 207 additions and 12 deletions

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,43 @@
-------------------------------------------------------------------
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>

View File

@ -16,11 +16,12 @@
#
%define lver 8
%define lver 12
%define lverp 1
%define lverplugin 1
%define src_install_dir /usr/src/%name
Name: grpc
Version: 1.25.0
Version: 1.32.0
Release: 0
Summary: HTTP/2-based Remote Procedure Call implementation
License: Apache-2.0
@ -28,6 +29,9 @@ Group: Development/Tools/Building
URL: https://grpc.io/
Source: https://github.com/grpc/grpc/archive/v%version.tar.gz
Source2: %name-rpmlintrc
# 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
Patch0: grpc-find-re2-via-pkgconfig.patch
BuildRequires: abseil-cpp-source
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc-c++
@ -36,6 +40,7 @@ BuildRequires: zypper
BuildRequires: pkgconfig(libcares)
BuildRequires: pkgconfig(openssl) >= 1.0.1
BuildRequires: pkgconfig(protobuf) >= 3.8.0
BuildRequires: pkgconfig(re2)
BuildRequires: pkgconfig(zlib)
%description
@ -69,11 +74,23 @@ 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.
%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 devel
Summary: Development files for grpc, a HTTP/2 Remote Procedure Call implementation
Group: Development/Tools/Building
Requires: libgrpc%lver = %version
Requires: libgrpc++%lverp = %version
Requires: libgrpc-plugin-support%lverplugin = %version
%description devel
This subpackage contains libraries and header files for developing
@ -89,6 +106,8 @@ This subpackage contains source code of the gRPC reference implementation.
%prep
%autosetup -p1
# Copy abseil-cpp source into empty third_party/abseil-cpp dir
cp -r %_prefix/src/abseil-cpp/* third_party/abseil-cpp/
%build
%define _lto_cflags %nil
@ -97,28 +116,37 @@ mkdir -p third_party/protobuf/src
export CFLAGS="%optflags -Wno-error"
export CXXFLAGS="$CFLAGS"
make %{?_smp_mflags} STRIP=/bin/true V=1 VERBOSE=1
%cmake -DgRPC_INSTALL=ON \
-DgRPC_ABSL_PROVIDER=module \
-DgRPC_CARES_PROVIDER=package \
-DgRPC_PROTOBUF_PROVIDER=package \
-DgRPC_RE2_PROVIDER=package \
-DgRPC_SSL_PROVIDER=package \
-DgRPC_ZLIB_PROVIDER=package
%cmake_build
%install
b="%buildroot"
# work around "Argument list too long"
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"
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
# Install sources
pushd %__builddir
make clean
rm -f "b" "a.out"
find . -type f "(" -name "*.so" -o -name "*.o" -o -name ".git*" ")" -exec rm -rf {} +
rm -f "b"
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"
cp -r * "%buildroot/%src_install_dir"
@ -128,22 +156,29 @@ cp -r * "%buildroot/%src_install_dir"
%postun -n libgrpc%lver -p /sbin/ldconfig
%post -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
%_libdir/libaddress_sorting.so.%{lver}*
%_libdir/libgpr*.so.%{lver}*
%_libdir/libgrpc*.so.%{lver}*
%_libdir/libupb*.so.%{lver}*
%files -n libgrpc++%lverp
%_libdir/libgrpc++*.so.%{lverp}*
%_libdir/libgrpcpp_channelz.so.%{lverp}*
%files -n libgrpc_plugin_support%lverplugin
%_libdir/libgrpc_plugin_support.so.%{lverplugin}*
%files devel
%license LICENSE
%_bindir/*
%_includedir/*
%_libdir/pkgconfig/*.pc
%_libdir/*.so
%_libdir/cmake/grpc/
%files source
%src_install_dir

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