mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Rollup merge of #63505 - jgalenson:sysroot-hash, r=alexcrichton
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 #34902, although it does not fix it by itself.
This commit is contained in:
commit
5e597875b7
@ -395,7 +395,7 @@ top_level_options!(
|
||||
output_types: OutputTypes [TRACKED],
|
||||
search_paths: Vec<SearchPath> [UNTRACKED],
|
||||
libs: Vec<(String, Option<String>, Option<cstore::NativeLibraryKind>)> [TRACKED],
|
||||
maybe_sysroot: Option<PathBuf> [TRACKED],
|
||||
maybe_sysroot: Option<PathBuf> [UNTRACKED],
|
||||
|
||||
target_triple: TargetTriple [TRACKED],
|
||||
|
||||
|
@ -5,7 +5,8 @@
|
||||
# Objects are reproducible but their path is not.
|
||||
|
||||
all: \
|
||||
fat_lto
|
||||
fat_lto \
|
||||
sysroot
|
||||
|
||||
fat_lto:
|
||||
rm -rf $(TMPDIR) && mkdir $(TMPDIR)
|
||||
@ -14,3 +15,12 @@ fat_lto:
|
||||
cp $(TMPDIR)/reproducible-build $(TMPDIR)/reproducible-build-a
|
||||
$(RUSTC) reproducible-build.rs -C lto=fat
|
||||
cmp "$(TMPDIR)/reproducible-build-a" "$(TMPDIR)/reproducible-build" || exit 1
|
||||
|
||||
sysroot:
|
||||
rm -rf $(TMPDIR) && mkdir $(TMPDIR)
|
||||
$(RUSTC) reproducible-build-aux.rs
|
||||
$(RUSTC) reproducible-build.rs --crate-type rlib --sysroot $(shell $(RUSTC) --print sysroot) --remap-path-prefix=$(shell $(RUSTC) --print sysroot)=/sysroot
|
||||
cp -r $(shell $(RUSTC) --print sysroot) $(TMPDIR)/sysroot
|
||||
cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfoo.rlib
|
||||
$(RUSTC) reproducible-build.rs --crate-type rlib --sysroot $(TMPDIR)/sysroot --remap-path-prefix=$(TMPDIR)/sysroot=/sysroot
|
||||
cmp "$(TMPDIR)/libreproducible_build.rlib" "$(TMPDIR)/libfoo.rlib" || exit 1
|
||||
|
Loading…
Reference in New Issue
Block a user