Subject: bug#77212: closed (Re: [bug#77212] [PATCH] gnu: rust: install stdlib manifest with original checksums)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 05 May 2025 06:04:02 +0000

Your bug report

#77212: [PATCH] gnu: rust: install stdlib manifest with original checksums

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
77212: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=77212
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#77212] [PATCH] gnu: rust: install stdlib manifest with original checksums
From: Efraim Flashner <[email-masked]>
To: Brennan Vincent <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked]
Date: Mon, 5 May 2025 09:03:16 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

On Fri, Apr 04, 2025 at 12:25:50PM -0700, Brennan Vincent wrote:
> Ping.
> 
> Efraim, any thoughts on this?
> 

Sorry, I was away visiting family for most of April and just recently
got back.  Patch pushed to the rust-team branch.  Hopefully it makes
Doing Rust Things™ better for everyone.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

Subject: [PATCH] gnu: rust: install stdlib manifest with original checksums
From: Brennan Vincent <[email-masked]>
To: [email-masked], [email-masked]
Date: Sun, 23 Mar 2025 10:41:23 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/rust.scm (rust): install stdlib manifest with original checksums

Change-Id: I1100ffe4ff67c8e2026e802fc3902ec218e2efee
---
 gnu/packages/rust.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 3fd7fc3433..04d88f6a82 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1476,12 +1476,28 @@ (define-public rust
                  (invoke "./x.py" "install" "clippy")
                  (invoke "./x.py" "install" "rust-analyzer")
                  (invoke "./x.py" "install" "rustfmt")))
+             (add-before 'patch-cargo-checksums 'save-old-library-manifest
+               (lambda _
+                 (copy-file "library/Cargo.lock" ".old-library-manifest")))
              (add-after 'install 'install-rust-src
                (lambda* (#:key outputs #:allow-other-keys)
                  (let ((out (assoc-ref outputs "rust-src"))
                        (dest "/lib/rustlib/src/rust"))
                    (mkdir-p (string-append out dest))
                    (copy-recursively "library" (string-append out dest "/library"))
+                   ;; rust-analyzer needs the original checksums; otherwise,
+                   ;; it fails to cargo manifest in the stdlib, and then
+                   ;; analysis/inference involving stdlib structs doesn't work.
+                   ;;
+                   ;; For example, in the following trivial program:
+                   ;; 
+                   ;; fn main() {
+                   ;;     let x = Vec::<usize>::new();
+                   ;; }
+                   ;;
+                   ;; rust-analyzer since versino 1.82
+                   ;; can't infer the type of x unless the following line is present.
+                   (copy-file ".old-library-manifest" (string-append out dest "/library/Cargo.lock"))
                    (copy-recursively "src" (string-append out dest "/src")))))
              (add-before 'install 'remove-uninstall-script
                (lambda _

base-commit: b54a9ca849f013300c633fb79d80bc754f6b28a2
prerequisite-patch-id: 2b36f42a4b79ce79d12ce58a03de81902054f2a1
-- 
2.49.0