From da692ee0eaa2ab4498ab86d6ad984c6c8bf327a1 Mon Sep 17 00:00:00 2001 From: Oneirical Date: Tue, 23 Jul 2024 11:24:05 -0400 Subject: [PATCH 1/3] rewrite extern-diff-internal-name to rmake --- .../tidy/src/allowed_run_make_makefiles.txt | 1 - .../run-make/extern-diff-internal-name/Makefile | 6 ------ .../run-make/extern-diff-internal-name/rmake.rs | 17 +++++++++++++++++ 3 files changed, 17 insertions(+), 7 deletions(-) delete mode 100644 tests/run-make/extern-diff-internal-name/Makefile create mode 100644 tests/run-make/extern-diff-internal-name/rmake.rs diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index 158d5cc8aded5..09ee4d0707ba4 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -15,7 +15,6 @@ run-make/dep-info/Makefile run-make/dump-ice-to-disk/Makefile run-make/emit-to-stdout/Makefile run-make/export-executable-symbols/Makefile -run-make/extern-diff-internal-name/Makefile run-make/extern-flag-disambiguates/Makefile run-make/extern-fn-reachable/Makefile run-make/extern-multiple-copies/Makefile diff --git a/tests/run-make/extern-diff-internal-name/Makefile b/tests/run-make/extern-diff-internal-name/Makefile deleted file mode 100644 index 250f82dfac08e..0000000000000 --- a/tests/run-make/extern-diff-internal-name/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# ignore-cross-compile -include ../tools.mk - -all: - $(RUSTC) lib.rs - $(RUSTC) test.rs --extern foo=$(TMPDIR)/libbar.rlib diff --git a/tests/run-make/extern-diff-internal-name/rmake.rs b/tests/run-make/extern-diff-internal-name/rmake.rs new file mode 100644 index 0000000000000..13aec894472e2 --- /dev/null +++ b/tests/run-make/extern-diff-internal-name/rmake.rs @@ -0,0 +1,17 @@ +// In the following scenario: +// 1. The crate foo, is referenced multiple times +// 2. --extern foo=./path/to/libbar.rlib is specified to rustc +// 3. The internal crate name of libbar.rlib is not foo +// Compilation fails with the "multiple crate versions" error message. +// As this was fixed in #17189, this regression test ensures this bug does not +// make a resurgence. +// See https://github.com/rust-lang/rust/pull/17189 + +//FIXME(Oneirical): test-various + +use run_make_support::{rust_lib_name, rustc}; + +fn main() { + rustc().input("lib.rs").run(); + rustc().input("test.rs").extern_("foo", rust_lib_name("bar")).run(); +} From 4332f5d81afa778e7a80e670fc8116474e36ecaa Mon Sep 17 00:00:00 2001 From: Oneirical Date: Tue, 23 Jul 2024 11:54:10 -0400 Subject: [PATCH 2/3] rewrite extern-multiple-copies to rmake --- .../tidy/src/allowed_run_make_makefiles.txt | 1 - tests/run-make/extern-multiple-copies/Makefile | 9 --------- tests/run-make/extern-multiple-copies/rmake.rs | 17 +++++++++++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) delete mode 100644 tests/run-make/extern-multiple-copies/Makefile create mode 100644 tests/run-make/extern-multiple-copies/rmake.rs diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index 09ee4d0707ba4..5df5f844b265c 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -17,7 +17,6 @@ run-make/emit-to-stdout/Makefile run-make/export-executable-symbols/Makefile run-make/extern-flag-disambiguates/Makefile run-make/extern-fn-reachable/Makefile -run-make/extern-multiple-copies/Makefile run-make/extern-multiple-copies2/Makefile run-make/fmt-write-bloat/Makefile run-make/foreign-double-unwind/Makefile diff --git a/tests/run-make/extern-multiple-copies/Makefile b/tests/run-make/extern-multiple-copies/Makefile deleted file mode 100644 index b0b84278edac3..0000000000000 --- a/tests/run-make/extern-multiple-copies/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# ignore-cross-compile -include ../tools.mk - -all: - $(RUSTC) foo1.rs - $(RUSTC) foo2.rs - mkdir $(TMPDIR)/foo - cp $(TMPDIR)/libfoo1.rlib $(TMPDIR)/foo/libfoo1.rlib - $(RUSTC) bar.rs --extern foo1=$(TMPDIR)/libfoo1.rlib -L $(TMPDIR)/foo diff --git a/tests/run-make/extern-multiple-copies/rmake.rs b/tests/run-make/extern-multiple-copies/rmake.rs new file mode 100644 index 0000000000000..94dd26af5e6e9 --- /dev/null +++ b/tests/run-make/extern-multiple-copies/rmake.rs @@ -0,0 +1,17 @@ +// In this test, the rust library foo1 exists in two different locations, but only one +// is required by the --extern flag. This test checks that the copy is ignored (as --extern +// demands fetching only the original instance of foo1) and that no error is emitted, resulting +// in successful compilation. +// https://github.com/rust-lang/rust/pull/29961 + +// FIXME(Oneirical): test-various + +use run_make_support::{path, rfs, rust_lib_name, rustc}; + +fn main() { + rustc().input("foo1.rs").run(); + rustc().input("foo2.rs").run(); + rfs::create_dir("foo"); + rfs::copy(rust_lib_name("foo1"), path("foo").join(rust_lib_name("foo1"))); + rustc().input("bar.rs").extern_("foo1", rust_lib_name("foo1")).library_search_path("foo").run(); +} From 421619da488f2575b8889a5f173a9e81e0fc5826 Mon Sep 17 00:00:00 2001 From: Oneirical Date: Tue, 23 Jul 2024 12:00:46 -0400 Subject: [PATCH 3/3] rewrite extern-multiple-copies2 to rmake --- .../tidy/src/allowed_run_make_makefiles.txt | 1 - .../extern-diff-internal-name/rmake.rs | 2 -- .../run-make/extern-multiple-copies/rmake.rs | 2 -- .../run-make/extern-multiple-copies2/Makefile | 11 ---------- .../run-make/extern-multiple-copies2/rmake.rs | 22 +++++++++++++++++++ 5 files changed, 22 insertions(+), 16 deletions(-) delete mode 100644 tests/run-make/extern-multiple-copies2/Makefile create mode 100644 tests/run-make/extern-multiple-copies2/rmake.rs diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index 5df5f844b265c..65ec470c1707b 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -17,7 +17,6 @@ run-make/emit-to-stdout/Makefile run-make/export-executable-symbols/Makefile run-make/extern-flag-disambiguates/Makefile run-make/extern-fn-reachable/Makefile -run-make/extern-multiple-copies2/Makefile run-make/fmt-write-bloat/Makefile run-make/foreign-double-unwind/Makefile run-make/foreign-exceptions/Makefile diff --git a/tests/run-make/extern-diff-internal-name/rmake.rs b/tests/run-make/extern-diff-internal-name/rmake.rs index 13aec894472e2..1a7f34d65bc2a 100644 --- a/tests/run-make/extern-diff-internal-name/rmake.rs +++ b/tests/run-make/extern-diff-internal-name/rmake.rs @@ -7,8 +7,6 @@ // make a resurgence. // See https://github.com/rust-lang/rust/pull/17189 -//FIXME(Oneirical): test-various - use run_make_support::{rust_lib_name, rustc}; fn main() { diff --git a/tests/run-make/extern-multiple-copies/rmake.rs b/tests/run-make/extern-multiple-copies/rmake.rs index 94dd26af5e6e9..8b67e6d9facfc 100644 --- a/tests/run-make/extern-multiple-copies/rmake.rs +++ b/tests/run-make/extern-multiple-copies/rmake.rs @@ -4,8 +4,6 @@ // in successful compilation. // https://github.com/rust-lang/rust/pull/29961 -// FIXME(Oneirical): test-various - use run_make_support::{path, rfs, rust_lib_name, rustc}; fn main() { diff --git a/tests/run-make/extern-multiple-copies2/Makefile b/tests/run-make/extern-multiple-copies2/Makefile deleted file mode 100644 index 708b1c1b5409f..0000000000000 --- a/tests/run-make/extern-multiple-copies2/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# ignore-cross-compile -include ../tools.mk - -all: - $(RUSTC) foo1.rs - $(RUSTC) foo2.rs - mkdir $(TMPDIR)/foo - cp $(TMPDIR)/libfoo1.rlib $(TMPDIR)/foo/libfoo1.rlib - $(RUSTC) bar.rs \ - --extern foo1=$(TMPDIR)/foo/libfoo1.rlib \ - --extern foo2=$(TMPDIR)/libfoo2.rlib diff --git a/tests/run-make/extern-multiple-copies2/rmake.rs b/tests/run-make/extern-multiple-copies2/rmake.rs new file mode 100644 index 0000000000000..59913bfa42bb5 --- /dev/null +++ b/tests/run-make/extern-multiple-copies2/rmake.rs @@ -0,0 +1,22 @@ +// Almost identical to `extern-multiple-copies`, but with a variation in the --extern calls +// and the addition of #[macro_use] in the rust code files, which used to break --extern +// until #33625. +// In this test, the rust library foo1 exists in two different locations, but only one +// is required by the --extern flag. This test checks that the copy is ignored (as --extern +// demands fetching only the original instance of foo1) and that no error is emitted, resulting +// in successful compilation. +// https://github.com/rust-lang/rust/issues/33762 + +use run_make_support::{path, rfs, rust_lib_name, rustc}; + +fn main() { + rustc().input("foo1.rs").run(); + rustc().input("foo2.rs").run(); + rfs::create_dir("foo"); + rfs::copy(rust_lib_name("foo1"), path("foo").join(rust_lib_name("foo1"))); + rustc() + .input("bar.rs") + .extern_("foo1", path("foo").join(rust_lib_name("foo1"))) + .extern_("foo2", rust_lib_name("foo2")) + .run(); +}