X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/c61557b1b642b61abdb665527e6a34b97e3d064f..5f6589281f633adf68473d82566945a71f93b728:/gnu/packages/rpc.scm diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm index f37a660fc7..e26170942b 100644 --- a/gnu/packages/rpc.scm +++ b/gnu/packages/rpc.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Ricardo Wurmus ;;; Copyright © 2020 Efraim Flashner +;;; Copyright © 2020 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,32 +22,44 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix git-download) + #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python) #:use-module (gnu packages adns) + #:use-module (gnu packages autotools) + #:use-module (gnu packages bison) + #:use-module (gnu packages boost) #:use-module (gnu packages compression) + #:use-module (gnu packages cpp) + #:use-module (gnu packages flex) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages tls)) (define-public grpc (package (name "grpc") - (version "1.16.1") + (version "1.27.3") (outputs '("out" "static")) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/grpc/grpc.git") + (url "https://github.com/grpc/grpc") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2")))) + "0czmbwnafc7jnrrq2fnac2av83vs2q7q0wy4k11w9zbpld7j5h6d")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no test target #:configure-flags (list "-DgRPC_ZLIB_PROVIDER=package" + "-DgRPC_ABSL_PROVIDER=package" "-DgRPC_CARES_PROVIDER=package" "-DgRPC_SSL_PROVIDER=package" "-DgRPC_PROTOBUF_PROVIDER=package" @@ -86,7 +99,8 @@ (find-files "." "\\.a$")))) #t))))) (inputs - `(("c-ares" ,c-ares/cmake) + `(("abseil-cpp" ,abseil-cpp) + ("c-ares" ,c-ares/cmake) ("openssl" ,openssl) ("zlib" ,zlib))) (native-inputs @@ -101,3 +115,129 @@ tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.") (license license:asl2.0))) + +;; Some packages require this older version. +(define-public grpc-1.16.1 + (package + (inherit grpc) + (version "1.16.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/grpc/grpc") + (commit (string-append "v" version)))) + (file-name (git-file-name "grpc" version)) + (sha256 + (base32 + "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2")))) + (arguments + (substitute-keyword-arguments (package-arguments grpc) + ((#:phases phases) + `(modify-phases ,phases + ;; Note: This would be nicer as a snippet, but that creates a tarball + ;; instead of a checkout and breaks assumptions made by the builder. + (add-after 'unpack 'rename-gettid + (lambda _ + ;; Rename custom gettid() syscall wrapper to avoid conflict + ;; with gettid() from glibc 2.30. + (substitute* '("src/core/lib/gpr/log_linux.cc" + "src/core/lib/gpr/log_posix.cc" + "src/core/lib/iomgr/ev_epollex_linux.cc") + (("gettid\\(") + "sys_gettid(")) + #t)))))))) + +(define-public python-grpcio + (package + (name "python-grpcio") + (version "1.27.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "grpcio" version)) + (sha256 + (base32 + "0zl89jwcff9hkd8mi4yf3qbhns9vbv1s4x4vahm5mkpr7jwk5ras")) + (modules '((guix build utils) (ice-9 ftw))) + (snippet + '(begin + (with-directory-excursion "third_party" + ;; Delete the bundled source code of libraries that are possible + ;; to provide as inputs. + (for-each delete-file-recursively + (scandir "." + (lambda (file) + (not (member file + '("." ".." + "abseil-cpp" + "address_sorting" + "upb"))))))) + #t)))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'build 'use-system-libraries + (lambda _ + (setenv "GRPC_PYTHON_BUILD_SYSTEM_CARES" "1") + (setenv "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL" "1") + (setenv "GRPC_PYTHON_BUILD_SYSTEM_ZLIB" "1") + #t)) + (add-before 'build 'configure-compiler + (lambda _ + (substitute* '("setup.py" "src/python/grpcio/commands.py") + (("'cc'") "'gcc'")) + #t))))) + (inputs + `(("c-ares" ,c-ares) + ("openssl" ,openssl) + ("zlib" ,zlib))) + (propagated-inputs + `(("python-six" ,python-six))) + (home-page "https://grpc.io") + (synopsis "HTTP/2-based RPC framework") + (description "This package provides a Python library for communicating +with the HTTP/2-based RPC framework gRPC.") + (license license:asl2.0))) + +(define-public apache-thrift + (package + (name "apache-thrift") + (version "0.13.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/apache/thrift") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17ckl7p7s3ga33yrjisilsimp80ansqxl54wvpkv0j7vx2zvc13y")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:configure-flags + (list (string-append "--with-boost=" + (assoc-ref %build-inputs "boost"))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("flex" ,flex) + ("bison" ,bison))) + (inputs + `(("boost" ,boost) + ("libressl" ,libressl))) + (outputs '("out" "lib" "include")) + (home-page "https://thrift.apache.org/") + (synopsis + "Lightweight, language-independent software stack for point-to-point +RPC") + (description + "Thrift provides clean abstractions and implementations for data +transport, data serialization, and application level processing. The code +generation system takes a simple definition language as input and generates +code across programming languages that uses the abstracted stack to build +interoperable RPC clients and servers.") + (license license:asl2.0)))