unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Ivan Petkov <ivanppetkov@gmail.com>
To: Tobias Geerinckx-Rice <me@tobias.gr>
Cc: 36614-done@debbugs.gnu.org
Subject: bug#36614: rust@1.36's hash is incorrect.
Date: Fri, 12 Jul 2019 09:33:50 -0700	[thread overview]
Message-ID: <B9AB01AB-BC00-44C5-BCD9-17B1E26FEE97@gmail.com> (raw)
In-Reply-To: <87pnmf2y1n.fsf@nckx>

[-- Attachment #1: Type: text/plain, Size: 1401 bytes --]


> On Jul 12, 2019, at 6:16 AM, Tobias Geerinckx-Rice <me@tobias.gr> wrote:
> 
> Since release archives are signed that would imply some horrible things about their key management, so I doubt it very much.  I guess we'll find out.
> 
> I've gone ahead and pushed a fix since the signature checked out. I'm closing this bug for now...
> 
> However, I'd be interested to know what the previous hash described.  Do you still have that file around, Ivan?

My apologies, this was all partly my fault. I do have the old source lying
around, diffing the two (attached) reveals that the changelog and one source
file actually changed.

A bit more detailed context:
The rust project makes pre-release sources available for testing ahead of
the formal release, and the process is meant to shake out any potential bugs.
I tested with the prerelease build originally, and after the real release
came out I updated the package URL to the formal release and immediately
rebuilt successfully.

I'm not 100% sure if maybe guix reused the cached tarball I had from earlier,
or whether the prerelease source was immediately upgraded to the formal release
and fixed shortly after. (I did try rebuilding right before pushing the change
out which succeeded with no changes, which I'm guessing is because guix did
not redownload the tarball and why I didn't notice the hash mismatch).

—Ivan


[-- Attachment #2: rust-src.diff --]
[-- Type: application/octet-stream, Size: 9659 bytes --]

--- rustc-1.36.0-src-old/
+++ rustc-1.36.0-src/
├── RELEASES.md
│ @@ -1,7 +1,111 @@
│ +Version 1.36.0 (2019-07-04)
│ +==========================
│ +
│ +Language
│ +--------
│ +- [Non-Lexical Lifetimes are now enabled on the 2015 edition.][59114]
│ +- [The order of traits in trait objects no longer affects the semantics of that
│ +  object.][59445] e.g. `dyn Send + fmt::Debug` is now equivalent to
│ +  `dyn fmt::Debug + Send`, where this was previously not the case.
│ +
│ +Libraries
│ +---------
│ +- [`HashMap`'s implementation has been replaced with `hashbrown::HashMap` implementation.][58623]
│ +- [`TryFromSliceError` now implements `From<Infallible>`.][60318]
│ +- [`mem::needs_drop` is now available as a const fn.][60364]
│ +- [`alloc::Layout::from_size_align_unchecked` is now available as a const fn.][60370]
│ +- [`String` now implements `BorrowMut<str>`.][60404]
│ +- [`io::Cursor` now implements `Default`.][60234]
│ +- [Both `NonNull::{dangling, cast}` are now const fns.][60244]
│ +- [The `alloc` crate is now stable.][59675] `alloc` allows you to use a subset
│ +  of `std` (e.g. `Vec`, `Box`, `Arc`) in `#![no_std]` environments if the
│ +  environment has access to heap memory allocation.
│ +- [`String` now implements `From<&String>`.][59825]
│ +- [You can now pass multiple arguments to the `dbg!` macro.][59826] `dbg!` will
│ +  return a tuple of each argument when there is multiple arguments.
│ +- [`Result::{is_err, is_ok}` are now `#[must_use]` and will produce a warning if
│ +  not used.][59648]
│ +
│ +Stabilized APIs
│ +---------------
│ +- [`VecDeque::rotate_left`]
│ +- [`VecDeque::rotate_right`]
│ +- [`Iterator::copied`]
│ +- [`io::IoSlice`]
│ +- [`io::IoSliceMut`]
│ +- [`Read::read_vectored`]
│ +- [`Write::write_vectored`]
│ +- [`str::as_mut_ptr`]
│ +- [`mem::MaybeUninit`]
│ +- [`pointer::align_offset`]
│ +- [`future::Future`]
│ +- [`task::Context`]
│ +- [`task::RawWaker`]
│ +- [`task::RawWakerVTable`]
│ +- [`task::Waker`]
│ +- [`task::Poll`]
│ +
│ +Cargo
│ +-----
│ +- [Cargo will now produce an error if you attempt to use the name of a required dependency as a feature.][cargo/6860]
│ +- [You can now pass the `--offline` flag to run cargo without accessing the network.][cargo/6934]
│ +
│ +You can find further change's in [Cargo's 1.36.0 release notes][cargo-1-36-0].
│ +
│ +Clippy
│ +------
│ +There have been numerous additions and fixes to clippy, see [Clippy's 1.36.0 release notes][clippy-1-36-0] for more details.
│ +
│ +Misc
│ +----
│ +
│ +Compatibility Notes
│ +-------------------
│ +- [`std::arch::x86::_rdtsc` returns `u64` instead of `i64`][stdsimd/559]
│ +- [`std::arch::x86_64::_mm_shuffle_ps` takes an `i32` instead of `u32` for `mask`][stdsimd/522]
│ +- With the stabilisation of `mem::MaybeUninit`, `mem::uninitialized` use is no
│ +  longer recommended, and will be deprecated in 1.38.0.
│ +
│ +[60318]: https://github.com/rust-lang/rust/pull/60318/
│ +[60364]: https://github.com/rust-lang/rust/pull/60364/
│ +[60370]: https://github.com/rust-lang/rust/pull/60370/
│ +[60404]: https://github.com/rust-lang/rust/pull/60404/
│ +[60234]: https://github.com/rust-lang/rust/pull/60234/
│ +[60244]: https://github.com/rust-lang/rust/pull/60244/
│ +[58623]: https://github.com/rust-lang/rust/pull/58623/
│ +[59648]: https://github.com/rust-lang/rust/pull/59648/
│ +[59675]: https://github.com/rust-lang/rust/pull/59675/
│ +[59825]: https://github.com/rust-lang/rust/pull/59825/
│ +[59826]: https://github.com/rust-lang/rust/pull/59826/
│ +[59445]: https://github.com/rust-lang/rust/pull/59445/
│ +[59114]: https://github.com/rust-lang/rust/pull/59114/
│ +[cargo/6860]: https://github.com/rust-lang/cargo/pull/6860/
│ +[cargo/6934]: https://github.com/rust-lang/cargo/pull/6934/
│ +[`VecDeque::rotate_left`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rotate_left
│ +[`VecDeque::rotate_right`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rotate_right
│ +[`Iterator::copied`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#tymethod.copied
│ +[`io::IoSlice`]: https://doc.rust-lang.org/std/io/struct.IoSlice.html
│ +[`io::IoSliceMut`]: https://doc.rust-lang.org/std/io/struct.IoSliceMut.html
│ +[`Read::read_vectored`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_vectored
│ +[`Write::write_vectored`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_vectored
│ +[`str::as_mut_ptr`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_mut_ptr
│ +[`mem::MaybeUninit`]: https://doc.rust-lang.org/std/mem/union.MaybeUninit.html
│ +[`pointer::align_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.align_offset
│ +[`future::Future`]: https://doc.rust-lang.org/std/future/trait.Future.html
│ +[`task::Context`]: https://doc.rust-lang.org/beta/std/task/struct.Context.html
│ +[`task::RawWaker`]: https://doc.rust-lang.org/beta/std/task/struct.RawWaker.html
│ +[`task::RawWakerVTable`]: https://doc.rust-lang.org/beta/std/task/struct.RawWakerVTable.html
│ +[`task::Waker`]: https://doc.rust-lang.org/beta/std/task/struct.Waker.html
│ +[`task::Poll`]: https://doc.rust-lang.org/beta/std/task/enum.Poll.html
│ +[clippy-1-36-0]: https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-136
│ +[cargo-1-36-0]: https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-136-2019-07-04
│ +[stdsimd/522]: https://github.com/rust-lang-nursery/stdsimd/issues/522
│ +[stdsimd/559]: https://github.com/rust-lang-nursery/stdsimd/issues/559
│ +
│  Version 1.35.0 (2019-05-23)
│  ==========================
│  
│  Language
│  --------
│  - [`FnOnce`, `FnMut`, and the `Fn` traits are now implemented for `Box<FnOnce>`,
│    `Box<FnMut>`, and `Box<Fn>` respectively.][59500]
│ @@ -58,15 +162,15 @@
│  - [`Option::copied`]
│  
│  Cargo
│  -----
│  - [You can now set `cargo:rustc-cdylib-link-arg` at build time to pass custom
│    linker arguments when building a `cdylib`.][cargo/6298] Its usage is highly
│    platform specific.
│ -  
│ +
│  Misc
│  ----
│  - [The Rust toolchain is now available natively for musl based distros.][58575]
│  
│  [59460]: https://github.com/rust-lang/rust/pull/59460/
│  [59464]: https://github.com/rust-lang/rust/pull/59464/
│  [59500]: https://github.com/rust-lang/rust/pull/59500/
├── git-commit-hash
│ @@ -1 +1 @@
│ -9d98f8f319eaa1a40f76fb15b52ee2a179e5286a
│ +a53f9df32fbb0b5f4382caaad8f1a46f36ea887c
├── src
│ ├── libstd
│ │ ├── collections
│ │ │ ├── hash
│ │ │ │ ├── map.rs
│ │ │ │ │ @@ -2604,14 +2604,20 @@
│ │ │ │ │      use super::HashMap;
│ │ │ │ │      use super::RandomState;
│ │ │ │ │      use crate::cell::RefCell;
│ │ │ │ │      use rand::{thread_rng, Rng};
│ │ │ │ │      use realstd::collections::CollectionAllocErr::*;
│ │ │ │ │      use realstd::usize;
│ │ │ │ │  
│ │ │ │ │ +    // https://github.com/rust-lang/rust/issues/62301
│ │ │ │ │ +    fn _assert_hashmap_is_unwind_safe() {
│ │ │ │ │ +        fn assert_unwind_safe<T: crate::panic::UnwindSafe>() {}
│ │ │ │ │ +        assert_unwind_safe::<HashMap<(), crate::cell::UnsafeCell<()>>>();
│ │ │ │ │ +    }
│ │ │ │ │ +
│ │ │ │ │      #[test]
│ │ │ │ │      fn test_zero_capacities() {
│ │ │ │ │          type HM = HashMap<i32, i32>;
│ │ │ │ │  
│ │ │ │ │          let m = HM::new();
│ │ │ │ │          assert_eq!(m.capacity(), 0);
│ │ ├── panic.rs
│ │ │ @@ -1,13 +1,14 @@
│ │ │  //! Panic support in the standard library.
│ │ │  
│ │ │  #![stable(feature = "std_panic", since = "1.9.0")]
│ │ │  
│ │ │  use crate::any::Any;
│ │ │  use crate::cell::UnsafeCell;
│ │ │ +use crate::collections;
│ │ │  use crate::fmt;
│ │ │  use crate::future::Future;
│ │ │  use crate::pin::Pin;
│ │ │  use crate::ops::{Deref, DerefMut};
│ │ │  use crate::panicking;
│ │ │  use crate::ptr::{Unique, NonNull};
│ │ │  use crate::rc::Rc;
│ │ │ @@ -281,14 +282,19 @@
│ │ │  #[stable(feature = "unwind_safe_atomic_refs", since = "1.14.0")]
│ │ │  impl RefUnwindSafe for atomic::AtomicBool {}
│ │ │  
│ │ │  #[cfg(target_has_atomic = "ptr")]
│ │ │  #[stable(feature = "unwind_safe_atomic_refs", since = "1.14.0")]
│ │ │  impl<T> RefUnwindSafe for atomic::AtomicPtr<T> {}
│ │ │  
│ │ │ +// https://github.com/rust-lang/rust/issues/62301
│ │ │ +#[stable(feature = "hashbrown", since = "1.36.0")]
│ │ │ +impl<K, V, S> UnwindSafe for collections::HashMap<K, V, S>
│ │ │ +    where K: UnwindSafe, V: UnwindSafe, S: UnwindSafe {}
│ │ │ +
│ │ │  #[stable(feature = "catch_unwind", since = "1.9.0")]
│ │ │  impl<T> Deref for AssertUnwindSafe<T> {
│ │ │      type Target = T;
│ │ │  
│ │ │      fn deref(&self) -> &T {
│ │ │          &self.0
│ │ │      }
├── version
│ @@ -1 +1 @@
│ -1.36.0 (9d98f8f31 2019-06-29)
│ +1.36.0 (a53f9df32 2019-07-03)

  reply	other threads:[~2019-07-12 16:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-12  9:41 bug#36614: rust@1.36's hash is incorrect Pierre Langlois
     [not found] ` <handler.36614.B.156292453627169.ack@debbugs.gnu.org>
2019-07-12 13:11   ` bug#36614: Acknowledgement (rust@1.36's hash is incorrect.) Pierre Langlois
2019-07-12 13:16 ` bug#36614: rust@1.36's hash is incorrect Tobias Geerinckx-Rice
2019-07-12 16:33   ` Ivan Petkov [this message]
2019-07-12 17:23     ` Leo Famulari
2019-07-12 17:26     ` Tobias Geerinckx-Rice
2019-07-13  0:59       ` Ivan Petkov
2019-07-12 17:27     ` Tobias Geerinckx-Rice
2019-07-12 17:34       ` Tobias Geerinckx-Rice

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B9AB01AB-BC00-44C5-BCD9-17B1E26FEE97@gmail.com \
    --to=ivanppetkov@gmail.com \
    --cc=36614-done@debbugs.gnu.org \
    --cc=me@tobias.gr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).