about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt1
-rw-r--r--tests/run-make/extra-filename-with-temp-outputs/rmake.rs2
-rw-r--r--tests/run-make/issue-85019-moved-src-dir/Makefile28
-rw-r--r--tests/run-make/moved-src-dir-fingerprint-ice/main.rs (renamed from tests/run-make/issue-85019-moved-src-dir/main.rs)0
-rw-r--r--tests/run-make/moved-src-dir-fingerprint-ice/my_lib.rs (renamed from tests/run-make/issue-85019-moved-src-dir/my_lib.rs)0
-rw-r--r--tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs38
6 files changed, 38 insertions, 31 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 1879d60e287..07d047a4815 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -59,7 +59,6 @@ run-make/issue-47551/Makefile
 run-make/issue-69368/Makefile
 run-make/issue-83045/Makefile
 run-make/issue-84395-lto-embed-bitcode/Makefile
-run-make/issue-85019-moved-src-dir/Makefile
 run-make/issue-85401-static-mir/Makefile
 run-make/issue-88756-default-output/Makefile
 run-make/issue-97463-abi-param-passing/Makefile
diff --git a/tests/run-make/extra-filename-with-temp-outputs/rmake.rs b/tests/run-make/extra-filename-with-temp-outputs/rmake.rs
index 546e462499f..c39e397a7cb 100644
--- a/tests/run-make/extra-filename-with-temp-outputs/rmake.rs
+++ b/tests/run-make/extra-filename-with-temp-outputs/rmake.rs
@@ -6,8 +6,6 @@
 // are named as expected.
 // See https://github.com/rust-lang/rust/pull/15686
 
-//FIXME(Oneirical): ignore-cross-compile
-
 use run_make_support::{
     bin_name, cwd, fs_wrapper, has_prefix, has_suffix, rustc, shallow_find_files,
 };
diff --git a/tests/run-make/issue-85019-moved-src-dir/Makefile b/tests/run-make/issue-85019-moved-src-dir/Makefile
deleted file mode 100644
index dec289058f9..00000000000
--- a/tests/run-make/issue-85019-moved-src-dir/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-include ../tools.mk
-
-INCR=$(TMPDIR)/incr
-FIRST_SRC=$(TMPDIR)/first_src
-SECOND_SRC=$(TMPDIR)/second_src
-
-# ignore-none no-std is not supported
-# ignore-nvptx64-nvidia-cuda FIXME: can't find crate for 'std'
-
-# Tests that we don't get an ICE when the working directory
-# (but not the build directory!) changes between compilation
-# sessions
-
-all:
-	mkdir $(INCR)
-	# Build from 'FIRST_SRC'
-	mkdir $(FIRST_SRC)
-	cp my_lib.rs $(FIRST_SRC)/my_lib.rs
-	cp main.rs $(FIRST_SRC)/main.rs
-	cd $(FIRST_SRC) && \
-		$(RUSTC) -C incremental=$(INCR) --crate-type lib my_lib.rs --target $(TARGET) && \
-		$(RUSTC) -C incremental=$(INCR) --extern my_lib=$(TMPDIR)/libmy_lib.rlib main.rs --target $(TARGET)
-	# Build from 'SECOND_SRC', keeping the output directory and incremental directory
-	# the same
-	mv $(FIRST_SRC) $(SECOND_SRC)
-	cd $(SECOND_SRC) && \
-		$(RUSTC) -C incremental=$(INCR) --crate-type lib my_lib.rs --target $(TARGET) && \
-		$(RUSTC) -C incremental=$(INCR) --extern my_lib=$(TMPDIR)/libmy_lib.rlib main.rs --target $(TARGET)
diff --git a/tests/run-make/issue-85019-moved-src-dir/main.rs b/tests/run-make/moved-src-dir-fingerprint-ice/main.rs
index 543559a5c53..543559a5c53 100644
--- a/tests/run-make/issue-85019-moved-src-dir/main.rs
+++ b/tests/run-make/moved-src-dir-fingerprint-ice/main.rs
diff --git a/tests/run-make/issue-85019-moved-src-dir/my_lib.rs b/tests/run-make/moved-src-dir-fingerprint-ice/my_lib.rs
index 432875739af..432875739af 100644
--- a/tests/run-make/issue-85019-moved-src-dir/my_lib.rs
+++ b/tests/run-make/moved-src-dir-fingerprint-ice/my_lib.rs
diff --git a/tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs b/tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs
new file mode 100644
index 00000000000..c6426029989
--- /dev/null
+++ b/tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs
@@ -0,0 +1,38 @@
+// A SourceFile created during compilation may have a relative
+// path (e.g. if rustc itself is invoked with a relative path).
+// When we write out crate metadata, we convert all relative paths
+// to absolute paths using the current working directory.
+// However, the working directory was previously not included in the crate hash.
+// This meant that the crate metadata could change while the crate
+// hash remained the same. Among other problems, this could cause a
+// fingerprint mismatch ICE, since incremental compilation uses
+// the crate metadata hash to determine if a foreign query is green.
+// This test checks that we don't get an ICE when the working directory
+// (but not the build directory!) changes between compilation
+// sessions.
+// See https://github.com/rust-lang/rust/issues/85019
+
+//@ ignore-none
+// Reason: no-std is not supported
+//@ ignore-nvptx64-nvidia-cuda
+// FIXME: can't find crate for 'std'
+
+use run_make_support::{fs_wrapper, rust_lib_name, rustc};
+
+fn main() {
+    fs_wrapper::create_dir("incr");
+    fs_wrapper::create_dir("first_src");
+    fs_wrapper::create_dir("output");
+    fs_wrapper::rename("my_lib.rs", "first_src/my_lib.rs");
+    fs_wrapper::rename("main.rs", "first_src/main.rs");
+    // Build from "first_src"
+    std::env::set_current_dir("first_src").unwrap();
+    rustc().input("my_lib.rs").incremental("incr").crate_type("lib").run();
+    rustc().input("main.rs").incremental("incr").extern_("my_lib", rust_lib_name("my_lib")).run();
+    std::env::set_current_dir("..").unwrap();
+    fs_wrapper::rename("first_src", "second_src");
+    std::env::set_current_dir("second_src").unwrap();
+    // Build from "second_src" - the output and incremental directory remain identical
+    rustc().input("my_lib.rs").incremental("incr").crate_type("lib").run();
+    rustc().input("main.rs").incremental("incr").extern_("my_lib", rust_lib_name("my_lib")).run();
+}