summaryrefslogtreecommitdiffstats
path: root/tests/run-make/reproducible-build/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-make/reproducible-build/Makefile')
-rw-r--r--tests/run-make/reproducible-build/Makefile140
1 files changed, 140 insertions, 0 deletions
diff --git a/tests/run-make/reproducible-build/Makefile b/tests/run-make/reproducible-build/Makefile
new file mode 100644
index 000000000..f5d17a234
--- /dev/null
+++ b/tests/run-make/reproducible-build/Makefile
@@ -0,0 +1,140 @@
+# ignore-cross-compile
+include ../tools.mk
+
+# ignore-musl
+# Objects are reproducible but their path is not.
+
+all: \
+ smoke \
+ debug \
+ opt \
+ link_paths \
+ remap_paths \
+ different_source_dirs_rlib \
+ remap_cwd_rlib \
+ remap_cwd_to_empty \
+ extern_flags
+
+# TODO: Builds of `bin` crate types are not deterministic with debuginfo=2 on
+# Windows.
+# See: https://github.com/rust-lang/rust/pull/87320#issuecomment-920105533
+# Issue: https://github.com/rust-lang/rust/issues/88982
+#
+# different_source_dirs_bin \
+# remap_cwd_bin \
+
+smoke:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) linker.rs -O
+ $(RUSTC) reproducible-build-aux.rs
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker)
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker)
+ diff -u "$(TMPDIR)/linker-arguments1" "$(TMPDIR)/linker-arguments2"
+
+debug:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) linker.rs -O
+ $(RUSTC) reproducible-build-aux.rs -g
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker) -g
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker) -g
+ diff -u "$(TMPDIR)/linker-arguments1" "$(TMPDIR)/linker-arguments2"
+
+opt:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) linker.rs -O
+ $(RUSTC) reproducible-build-aux.rs -O
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker) -O
+ $(RUSTC) reproducible-build.rs -C linker=$(call RUN_BINFILE,linker) -O
+ diff -u "$(TMPDIR)/linker-arguments1" "$(TMPDIR)/linker-arguments2"
+
+link_paths:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ $(RUSTC) reproducible-build.rs --crate-type rlib -L /b
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfoo.rlib
+ $(RUSTC) reproducible-build.rs --crate-type rlib -L /a
+ cmp "$(TMPDIR)/libreproducible_build.rlib" "$(TMPDIR)/libfoo.rlib" || exit 1
+
+remap_paths:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ $(RUSTC) reproducible-build.rs --crate-type rlib --remap-path-prefix=/a=/c
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfoo.rlib
+ $(RUSTC) reproducible-build.rs --crate-type rlib --remap-path-prefix=/b=/c
+ cmp "$(TMPDIR)/libreproducible_build.rlib" "$(TMPDIR)/libfoo.rlib" || exit 1
+
+different_source_dirs_bin:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ mkdir $(TMPDIR)/test
+ cp reproducible-build.rs $(TMPDIR)/test
+ $(RUSTC) reproducible-build.rs --crate-type bin --remap-path-prefix=$$PWD=/b
+ cp $(TMPDIR)/reproducible-build $(TMPDIR)/foo
+ (cd $(TMPDIR)/test && $(RUSTC) reproducible-build.rs \
+ --remap-path-prefix=$(TMPDIR)/test=/b \
+ --crate-type bin)
+ cmp "$(TMPDIR)/reproducible-build" "$(TMPDIR)/foo" || exit 1
+
+different_source_dirs_rlib:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ mkdir $(TMPDIR)/test
+ cp reproducible-build.rs $(TMPDIR)/test
+ $(RUSTC) reproducible-build.rs --crate-type rlib --remap-path-prefix=$$PWD=/b
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfoo.rlib
+ (cd $(TMPDIR)/test && $(RUSTC) reproducible-build.rs \
+ --remap-path-prefix=$(TMPDIR)/test=/b \
+ --crate-type rlib)
+ cmp "$(TMPDIR)/libreproducible_build.rlib" "$(TMPDIR)/libfoo.rlib" || exit 1
+
+remap_cwd_bin:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ mkdir $(TMPDIR)/test
+ cp reproducible-build.rs $(TMPDIR)/test
+ $(RUSTC) reproducible-build.rs --crate-type bin -C debuginfo=2 \
+ -Z remap-cwd-prefix=.
+ cp $(TMPDIR)/reproducible-build $(TMPDIR)/first
+ (cd $(TMPDIR)/test && \
+ $(RUSTC) reproducible-build.rs --crate-type bin -C debuginfo=2 \
+ -Z remap-cwd-prefix=.)
+ cmp "$(TMPDIR)/first" "$(TMPDIR)/reproducible-build" || exit 1
+
+remap_cwd_rlib:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ mkdir $(TMPDIR)/test
+ cp reproducible-build.rs $(TMPDIR)/test
+ $(RUSTC) reproducible-build.rs --crate-type rlib -C debuginfo=2 \
+ -Z remap-cwd-prefix=.
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfirst.rlib
+ (cd $(TMPDIR)/test && \
+ $(RUSTC) reproducible-build.rs --crate-type rlib -C debuginfo=2 \
+ -Z remap-cwd-prefix=.)
+ cmp "$(TMPDIR)/libfirst.rlib" "$(TMPDIR)/libreproducible_build.rlib" || exit 1
+
+remap_cwd_to_empty:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ mkdir $(TMPDIR)/test
+ cp reproducible-build.rs $(TMPDIR)/test
+ $(RUSTC) reproducible-build.rs --crate-type rlib -C debuginfo=2 \
+ -Z remap-cwd-prefix=
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfirst.rlib
+ (cd $(TMPDIR)/test && \
+ $(RUSTC) reproducible-build.rs --crate-type rlib -C debuginfo=2 \
+ -Z remap-cwd-prefix=)
+ cmp "$(TMPDIR)/libfirst.rlib" "$(TMPDIR)/libreproducible_build.rlib" || exit 1
+
+extern_flags:
+ rm -rf $(TMPDIR) && mkdir $(TMPDIR)
+ $(RUSTC) reproducible-build-aux.rs
+ $(RUSTC) reproducible-build.rs \
+ --extern reproducible_build_aux=$(TMPDIR)/libreproducible_build_aux.rlib \
+ --crate-type rlib
+ cp $(TMPDIR)/libreproducible_build_aux.rlib $(TMPDIR)/libbar.rlib
+ cp $(TMPDIR)/libreproducible_build.rlib $(TMPDIR)/libfoo.rlib
+ $(RUSTC) reproducible-build.rs \
+ --extern reproducible_build_aux=$(TMPDIR)/libbar.rlib \
+ --crate-type rlib
+ cmp "$(TMPDIR)/libreproducible_build.rlib" "$(TMPDIR)/libfoo.rlib" || exit 1