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:
parent
99cc36b0e3
commit
effca5875f
120
grpc-find-re2-via-pkgconfig.patch
Normal file
120
grpc-find-re2-via-pkgconfig.patch
Normal 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
|
||||||
|
)
|
||||||
|
|
40
grpc.changes
40
grpc.changes
@ -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>
|
Wed Sep 9 22:43:27 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
|
||||||
|
|
||||||
|
53
grpc.spec
53
grpc.spec
@ -16,11 +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
|
||||||
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
|
||||||
@ -28,6 +29,9 @@ 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
|
||||||
|
# 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: cmake
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
@ -36,6 +40,7 @@ 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
|
||||||
@ -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
|
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 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
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
This subpackage contains libraries and header files for developing
|
This subpackage contains libraries and header files for developing
|
||||||
@ -89,6 +106,8 @@ This subpackage contains source code of the gRPC reference implementation.
|
|||||||
|
|
||||||
%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
|
||||||
@ -97,28 +116,37 @@ 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_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
|
%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
|
if test ! -d lib64 && test "%_lib" = lib64; then
|
||||||
mv lib lib64
|
mv lib lib64
|
||||||
fi
|
fi
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# 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"
|
||||||
|
|
||||||
@ -128,22 +156,29 @@ 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}*
|
||||||
%_libdir/libgpr*.so.%{lver}*
|
%_libdir/libgpr*.so.%{lver}*
|
||||||
%_libdir/libgrpc*.so.%{lver}*
|
%_libdir/libgrpc*.so.%{lver}*
|
||||||
|
%_libdir/libupb*.so.%{lver}*
|
||||||
|
|
||||||
%files -n libgrpc++%lverp
|
%files -n libgrpc++%lverp
|
||||||
%_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 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 source
|
%files source
|
||||||
%src_install_dir
|
%src_install_dir
|
||||||
|
@ -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
3
v1.32.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:f880ebeb2ccf0e47721526c10dd97469200e40b5f101a0d9774eb69efa0bd07a
|
||||||
|
size 7174251
|
Loading…
Reference in New Issue
Block a user