Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 4 pull requests #63655

Merged
merged 9 commits into from
Aug 17, 2019
Merged

Rollup of 4 pull requests #63655

merged 9 commits into from
Aug 17, 2019

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Aug 17, 2019

Successful merges:

Failed merges:

r? @ghost

timvermeulen and others added 9 commits July 17, 2019 01:16
This will help reproducible builds, as the sysroot depends on the
working directory.
As suggested by @alexcrichton, the sysroot only loads libraries that
are themselves tracked.
Currently, librustc_llvm builds are not reproducible because the LLVM
files it compiles use the debug version of llvm_unreachable, which
uses __FILE__.  To fix this, we propagate NDEBUG from bootstrap if
applicable and use it when compiling librustc_llvm.
…tmcm

Override Cycle::try_fold

It's not very pretty, but I believe this is the simplest way to correctly implement `Cycle::try_fold`. The following may seem correct:
```rust
loop {
    acc = self.iter.try_fold(acc, &mut f)?;
    self.iter = self.orig.clone();
}
```
...but this loops infinitely in case `self.orig` is empty, as opposed to returning `acc`. So we first have to fully iterate `self.orig` to check whether it is empty or not, and before _that_, we have to iterate the remaining elements of `self.iter`.

This should always call `self.orig.clone()` the same amount of times as repeated `next()` calls would.

r? @scottmcm
Hash the remapped sysroot instead of the original.

One of the reasons that rustc builds are not reproducible is because the --sysroot path is dependent on the current directory.  We can fix this by hashing the remapped sysroot instead of the original when applicable.

Note that with this patch, the hash will stay the same if both the sysroot and the remapped path change.  However, given that if the contents of the sysroot change the hash will also stay the same, this might be acceptable.  I would appreciate feedback on the best way to do this.

This helps rust-lang#34902, although it does not fix it by itself.
rustc_codegen_utils: account for 1-indexed anonymous lifetimes in v0 mangling.

I don't really understand why `anonymize_late_bound_regions` starts with `BrAnon(1)` instead of `BrAnon(0)`, but it does (maybe @nikomatsakis knows?): https://github.com/rust-lang/rust/blob/c43d03a19f326f4a323569328cc501e86eb6d22e/src/librustc/ty/fold.rs#L696-L712

Thankfully, the mangling format and demangler implementations are fine, and I just needed to offset the anonymized lifetime indices by `1` to get the correct mangling.

cc @alexcrichton @michaelwoerister
Modify librustc_llvm to pass -DNDEBUG while compiling.

Currently, librustc_llvm builds are not reproducible because the LLVM files it compiles use the debug version of llvm_unreachable, which uses __FILE__.  To fix this, we propagate NDEBUG from bootstrap if applicable and use it when compiling librustc_llvm.

r? @alexcrichton
@Centril
Copy link
Contributor Author

Centril commented Aug 17, 2019

@bors r+ p=4 rollup=never

@bors
Copy link
Contributor

bors commented Aug 17, 2019

📌 Commit 6bce50f has been approved by Centril

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Aug 17, 2019
@bors
Copy link
Contributor

bors commented Aug 17, 2019

⌛ Testing commit 6bce50f with merge ac60ca0...

bors added a commit that referenced this pull request Aug 17, 2019
Rollup of 4 pull requests

Successful merges:

 - #62737 (Override Cycle::try_fold)
 - #63505 (Hash the remapped sysroot instead of the original.)
 - #63559 (rustc_codegen_utils: account for 1-indexed anonymous lifetimes in v0 mangling.)
 - #63621 (Modify librustc_llvm to pass -DNDEBUG while compiling.)

Failed merges:

r? @ghost
@bors
Copy link
Contributor

bors commented Aug 17, 2019

☀️ Test successful - checks-azure
Approved by: Centril
Pushing ac60ca0 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Aug 17, 2019
@bors bors merged commit 6bce50f into rust-lang:master Aug 17, 2019
@Centril Centril deleted the rollup-ty1ot40 branch August 17, 2019 13:54
@Centril Centril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants