aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2020-03-09 17:30:31 +0200
committerEfraim Flashner <efraim@flashner.co.il>2020-03-12 15:34:28 +0200
commitd56d3ae704a74e592368a7afc69e1d109ea967f4 (patch)
tree66b58c06d399437811a45612dc6cf0dea792c76d
parentb0aa58d8f1d63db2d4444db378e6dd4ee4b9313b (diff)
downloadguix-d56d3ae704a74e592368a7afc69e1d109ea967f4.tar
guix-d56d3ae704a74e592368a7afc69e1d109ea967f4.tar.gz
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.
-rw-r--r--gnu/packages/machine-learning.scm43
1 files changed, 40 insertions, 3 deletions
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 50c41dc113..52e639723b 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -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 @@ Python.")
(package
(name "grpc")
(version "1.16.1")
+ (outputs '("out" "static"))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1301,7 +1302,42 @@ Python.")
(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 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
(sha256
(base32
"161g9841rjfsy5pn52fcis0s9hdr7rxvb06pad38j5rppfihvign")))))
+ ("grpc" ,grpc "static")
("googletest" ,googletest)
("swig" ,swig)
("unzip" ,unzip)))
@@ -1752,7 +1789,7 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("giflib" ,giflib)
- ("grpc" ,grpc)
+ ("grpc:bin" ,grpc)
("jsoncpp" ,jsoncpp-for-tensorflow)
("snappy" ,snappy)
("sqlite" ,sqlite)