rewrite and rename issue-85019-moved-src-dir to rmake
This commit is contained in:
parent
cef8a044ea
commit
c6cdbe635b
@ -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
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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)
|
38
tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs
Normal file
38
tests/run-make/moved-src-dir-fingerprint-ice/rmake.rs
Normal file
@ -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();
|
||||
}
|
Loading…
Reference in New Issue
Block a user