[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#53208] [PATCH 39/39] gnu: rust-analyzer: Make it out of box.
From: |
Nicolas Goaziou |
Subject: |
[bug#53208] [PATCH 39/39] gnu: rust-analyzer: Make it out of box. |
Date: |
Fri, 21 Jan 2022 00:23:01 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hello,
Z572 via Guix-patches via <guix-patches@gnu.org> writes:
> +(define-public rust-src
> + (hidden-package
> + (package
> + (inherit rust-1.57)
> + (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
> box."))))
This cannot work, because, AFAIK, you can only inherit packages from the
same module. So rust-src should be moved to rust.scm and made visible.
> + (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 not get environment variable RUST_SRC_PATH, set it,
> + ;; make rust-analyzer 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))))))
I tried to move the rust-src in rust.scm, as explained above, but when
I do, installation of rust-analyzer fails during the `wrap-program'
phases.
> (replace 'install-license-files
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> @@ -1298,6 +1341,7 @@ (define-public rust-analyzer
> (chdir "../..")
> (install-file "LICENSE-MIT" doc)
> (install-file "LICENSE-APACHE" doc)))))))
> + (inputs (list rust-src))
Shouldn't it be a native-input?
Could you have a look at those issues? Thanks!
Regards,
--
Nicolas Goaziou