gnu: rust-analyzer: Make it work out of the box.
* gnu/packages/rust.scm (rust-src): New variable. * gnu/packages/rust-apps.scm (rust-analyzer): [native-inputs]: Add rust-src. [arguments]: <#:phases>: Add wrap-program phase. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
This commit is contained in:
parent
1c79490804
commit
d96f47f012
2 changed files with 45 additions and 0 deletions
|
@ -1492,6 +1492,30 @@ (define-public rust-analyzer
|
|||
(add-before 'install 'chdir
|
||||
(lambda _
|
||||
(chdir "crates/rust-analyzer")))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(rust-src-path (search-input-directory
|
||||
inputs "/lib/rustlib/src/rust/library")))
|
||||
;; if environment variable RUST_SRC_PATH is not set, set it,
|
||||
;; make rust-analyzer work out of box.
|
||||
(with-directory-excursion bin
|
||||
(let* ((prog "rust-analyzer")
|
||||
(wrapped-file (string-append (dirname prog)
|
||||
"/." (basename prog) "-real"))
|
||||
(prog-tmp (string-append wrapped-file "-tmp")))
|
||||
(link prog wrapped-file)
|
||||
(call-with-output-file prog-tmp
|
||||
(lambda (port)
|
||||
(format port "#!~a
|
||||
if test -z \"${RUST_SRC_PATH}\";then export RUST_SRC_PATH=~S;fi;
|
||||
exec -a \"$0\" \"~a\" \"$@\""
|
||||
(which "bash")
|
||||
rust-src-path
|
||||
(canonicalize-path wrapped-file))))
|
||||
(chmod prog-tmp #o755)
|
||||
(rename-file prog-tmp prog))))))
|
||||
(replace 'install-license-files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
|
@ -1500,6 +1524,7 @@ (define-public rust-analyzer
|
|||
(chdir "../..")
|
||||
(install-file "LICENSE-MIT" doc)
|
||||
(install-file "LICENSE-APACHE" doc)))))))
|
||||
(native-inputs (list rust-src))
|
||||
(home-page "https://rust-analyzer.github.io/")
|
||||
(synopsis "Experimental Rust compiler front-end for IDEs")
|
||||
(description "Rust-analyzer is a modular compiler frontend for the Rust
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2021 (unmatched parenthesis <paren@disroot.org>
|
||||
;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -49,6 +50,7 @@ (define-module (gnu packages rust)
|
|||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (guix build-system cargo)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix download)
|
||||
|
@ -787,3 +789,21 @@ (define rust-1.57
|
|||
;;; be relied upon. This is to ease maintenance and reduce the time
|
||||
;;; required to build the full Rust bootstrap chain.
|
||||
(define-public rust rust-1.57)
|
||||
|
||||
(define-public rust-src
|
||||
(hidden-package
|
||||
(package
|
||||
(inherit rust)
|
||||
(name "rust-src")
|
||||
(build-system copy-build-system)
|
||||
(native-inputs '())
|
||||
(inputs '())
|
||||
(native-search-paths '())
|
||||
(outputs '("out"))
|
||||
(arguments
|
||||
`(#:install-plan
|
||||
'(("library" "lib/rustlib/src/rust/library")
|
||||
("src" "lib/rustlib/src/rust/src"))))
|
||||
(synopsis "Source code for the Rust standard library")
|
||||
(description "This package provide source code for the Rust standard
|
||||
library, only use by rust-analyzer, make rust-analyzer out of the box."))))
|
||||
|
|
Loading…
Reference in a new issue