gnu: grpc: Build shared libraries.

* gnu/packages/machine-learning.scm (grpc)[outputs]: Add static.
[arguments]: Copy configure-flags from cmake-build-system. Add custom
phases 'configure-shared, 'install-shared-libraries and 'move-static-libs
to build shared libs and move static libs to their own output.
(tensorflow)[native-inputs]: Add grpc:static.
This commit is contained in:
Efraim Flashner 2020-03-09 17:30:31 +02:00
parent b0aa58d8f1
commit d56d3ae704
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@ -1285,6 +1285,7 @@ (define-public grpc
(package
(name "grpc")
(version "1.16.1")
(outputs '("out" "static"))
(source (origin
(method git-fetch)
(uri (git-reference
@ -1301,7 +1302,42 @@ (define-public grpc
(list "-DgRPC_ZLIB_PROVIDER=package"
"-DgRPC_CARES_PROVIDER=package"
"-DgRPC_SSL_PROVIDER=package"
"-DgRPC_PROTOBUF_PROVIDER=package")))
"-DgRPC_PROTOBUF_PROVIDER=package"
(string-append "-DCMAKE_INSTALL_PREFIX="
(assoc-ref %outputs "out"))
"-DCMAKE_INSTALL_LIBDIR=lib"
(string-append "-DCMAKE_INSTALL_RPATH="
(assoc-ref %outputs "out") "/lib")
"-DCMAKE_VERBOSE_MAKEFILE=ON")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'configure-shared
(lambda* (#:key (configure-flags '()) #:allow-other-keys)
(mkdir "../build-shared")
(with-directory-excursion "../build-shared"
(apply invoke
"cmake" "../source"
"-DBUILD_SHARED_LIBS=ON"
configure-flags)
(apply invoke "make"
`("-j" ,(number->string (parallel-job-count)))))))
(add-after 'install 'install-shared-libraries
(lambda _
(with-directory-excursion "../build-shared"
(invoke "make" "install"))))
(add-before 'strip 'move-static-libs
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(static (assoc-ref outputs "static")))
(mkdir-p (string-append static "/lib"))
(with-directory-excursion
(string-append out "/lib")
(for-each
(lambda (file)
(rename-file file
(string-append static "/lib/" file)))
(find-files "." "\\.a$"))))
#t)))))
(inputs
`(("c-ares" ,c-ares/cmake)
("openssl" ,openssl)
@ -1731,6 +1767,7 @@ (define-public tensorflow
(sha256
(base32
"161g9841rjfsy5pn52fcis0s9hdr7rxvb06pad38j5rppfihvign")))))
("grpc" ,grpc "static")
("googletest" ,googletest)
("swig" ,swig)
("unzip" ,unzip)))
@ -1752,7 +1789,7 @@ (define-public tensorflow
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("giflib" ,giflib)
("grpc" ,grpc)
("grpc:bin" ,grpc)
("jsoncpp" ,jsoncpp-for-tensorflow)
("snappy" ,snappy)
("sqlite" ,sqlite)