summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2024-01-12 12:57:30 +0200
committerEfraim Flashner <efraim@flashner.co.il>2024-02-20 13:57:41 +0200
commitd3f4df4be93ce5c28f7b40a3a91aeb6a86284e80 (patch)
tree8706a242fe9ffea6458486203a6f3f17721638c1
parentf3b13d4e0e19ffa7bc9ef4de6df2059479e99156 (diff)
gnu: rust: Use more system libraries.
* gnu/packages/rust.scm (rust)[source]: Adjust inherited source to also unbundle curl, libffi, nghttp2 and zlib. [inputs]: Add libffi, nghttp2:lib, zlib. Change-Id: I97932b9afda507a4c655027df494a70cf8c11509
-rw-r--r--gnu/packages/rust.scm36
1 files changed, 35 insertions, 1 deletions
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index b873437458b..25e843dba64 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -46,6 +46,7 @@
46 #:use-module (gnu packages flex) 46 #:use-module (gnu packages flex)
47 #:use-module (gnu packages gcc) 47 #:use-module (gnu packages gcc)
48 #:use-module (gnu packages gdb) 48 #:use-module (gnu packages gdb)
49 #:use-module (gnu packages libffi)
49 #:use-module (gnu packages linux) 50 #:use-module (gnu packages linux)
50 #:use-module (gnu packages llvm) 51 #:use-module (gnu packages llvm)
51 #:use-module (gnu packages mingw) 52 #:use-module (gnu packages mingw)
@@ -53,6 +54,7 @@
53 #:use-module (gnu packages python) 54 #:use-module (gnu packages python)
54 #:use-module (gnu packages ssh) 55 #:use-module (gnu packages ssh)
55 #:use-module (gnu packages tls) 56 #:use-module (gnu packages tls)
57 #:use-module (gnu packages web)
56 #:use-module (gnu packages) 58 #:use-module (gnu packages)
57 #:use-module (guix build-system cargo) 59 #:use-module (guix build-system cargo)
58 #:use-module (guix build-system gnu) 60 #:use-module (guix build-system gnu)
@@ -833,6 +835,38 @@ safety and thread safety guarantees.")
833 (inherit base-rust) 835 (inherit base-rust)
834 (properties (alist-delete 'hidden? (package-properties base-rust))) 836 (properties (alist-delete 'hidden? (package-properties base-rust)))
835 (outputs (cons* "rust-src" "tools" (package-outputs base-rust))) 837 (outputs (cons* "rust-src" "tools" (package-outputs base-rust)))
838 (source
839 (origin
840 (inherit (package-source base-rust))
841 (snippet
842 '(begin
843 (for-each delete-file-recursively
844 '("src/llvm-project"
845 "vendor/openssl-src/openssl"
846 "vendor/tikv-jemalloc-sys/jemalloc"
847 ;; These are referenced by the cargo output
848 ;; so we unbundle them.
849 "vendor/curl-sys/curl"
850 "vendor/curl-sys-0.4.63+curl-8.1.2/curl"
851 "vendor/libffi-sys/libffi"
852 "vendor/libnghttp2-sys/nghttp2"
853 "vendor/libz-sys/src/zlib"))
854 ;; Use the packaged nghttp2
855 (delete-file "vendor/libnghttp2-sys/build.rs")
856 (with-output-to-file "vendor/libnghttp2-sys/build.rs"
857 (lambda _
858 (format #t "fn main() {~@
859 println!(\"cargo:rustc-link-lib=nghttp2\");~@
860 }~%")))
861 ;; Remove vendored dynamically linked libraries.
862 ;; find . -not -type d -executable -exec file {} \+ | grep ELF
863 ;; Also remove the bundled (mostly Windows) libraries.
864 (for-each delete-file
865 (find-files "vendor" "\\.(a|dll|exe|lib)$"))
866 ;; Adjust vendored dependency to explicitly use rustix with libc backend.
867 (substitute* "vendor/tempfile/Cargo.toml"
868 (("features = \\[\"fs\"" all)
869 (string-append all ", \"use-libc\"")))))))
836 (arguments 870 (arguments
837 (substitute-keyword-arguments 871 (substitute-keyword-arguments
838 (strip-keyword-arguments '(#:tests?) 872 (strip-keyword-arguments '(#:tests?)
@@ -1054,7 +1088,7 @@ exec -a \"$0\" \"~a\" \"$@\""
1054 (chmod (string-append bin "/rust-analyzer") #o755)))))))) 1088 (chmod (string-append bin "/rust-analyzer") #o755))))))))
1055 (inputs 1089 (inputs
1056 (modify-inputs (package-inputs base-rust) 1090 (modify-inputs (package-inputs base-rust)
1057 (prepend curl))) 1091 (prepend curl libffi `(,nghttp2 "lib") zlib)))
1058 ;; Add test inputs. 1092 ;; Add test inputs.
1059 (native-inputs (cons* `("gdb" ,gdb/pinned) 1093 (native-inputs (cons* `("gdb" ,gdb/pinned)
1060 `("procps" ,procps) 1094 `("procps" ,procps)