GNU bug report logs -
#77212
[PATCH] gnu: rust: install stdlib manifest with original checksums
Previous Next
Full log
View this message in rfc822 format
Efraim Flashner <efraim <at> flashner.co.il> writes:
> Does it have to be the original checksums or will correct checksums
> work? Currently to save time we set all the checksums to
> e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (an
> empty file).
Yes, sorry for being imprecise -- it needs to be the correct checksums,
which in the case of the stdlib seems to be the same as the original
checksums. I suppose if that ever changes we would need to change this
to actually apply re-checksum everything.
>
> What changed in rust-analyzer 1.82 that made it change? Or was that part
> of the error message?
Before 1.82, rust-analyzer analyzed the stdlib in a different way, which
didn't require it to run `cargo metadata`, which is the step that fails
here (because cargo bails out with an error if the checksums are wrong).
>
> On Sun, Mar 23, 2025 at 10:41:23AM -0700, Brennan Vincent wrote:
>> * 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
>>
>>
>
> --
> Efraim Flashner <efraim <at> flashner.co.il> אפרים פלשנר
> GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
> Confidentiality cannot be guaranteed on emails sent or received unencrypted
This bug report was last modified 73 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.