diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 3f6997562db..bca2b27ecc0 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -11,14 +11,13 @@ COMMENT-gdb = Rust debugger through gdb COMMENT-clippy = Rust linter COMMENT-rustfmt = Rust code formatter -V = 1.63.0 -REVISION = 0 +V = 1.64.0 DISTNAME = rustc-${V}-src # rustc bootstrap version -BV-aarch64 = 1.63.0-20220810 -BV-amd64 = 1.63.0-20220809 -BV-i386 = 1.63.0-20220809 +BV-aarch64 = 1.64.0-20220922 +BV-amd64 = 1.64.0-20220920 +BV-i386 = 1.64.0-20220920 BV-powerpc64 = 1.63.0-20220821 BV-riscv64 = 1.63.0-20220821 BV-sparc64 = 1.63.0-20220822 @@ -209,6 +208,8 @@ do-configure: echo 'tools = ["cargo", "clippy", "rustfmt"]' >>${WRKBUILD}/config.toml echo 'docs = false' >>${WRKBUILD}/config.toml echo 'verbose = 2' >>${WRKBUILD}/config.toml + echo 'host = ["${TRIPLE_ARCH}"]' >>${WRKBUILD}/config.toml + echo 'target = ["${TRIPLE_ARCH}"]' >>${WRKBUILD}/config.toml echo '[install]' >>${WRKBUILD}/config.toml echo 'prefix = "${LOCALBASE}"' >>${WRKBUILD}/config.toml diff --git a/lang/rust/distinfo b/lang/rust/distinfo index a8fde2e8aa2..ac0d833002f 100644 --- a/lang/rust/distinfo +++ b/lang/rust/distinfo @@ -1,14 +1,14 @@ -SHA256 (rust/rustc-1.63.0-src.tar.xz) = j0SvbcRMxBRmNKTdXkzFRwswUqIzcBm4cMDgJeiYfgw= -SHA256 (rust/rustc-bootstrap-aarch64-1.63.0-20220810.tar.xz) = WFrqG86jL4STToRQXf0Go1JCMKu1udEU8bCVI8zZGFQ= -SHA256 (rust/rustc-bootstrap-amd64-1.63.0-20220809.tar.xz) = KrVLrREc86Eh5DdYI/m7ApsZ6e80AH85V4qEiAgIY1k= -SHA256 (rust/rustc-bootstrap-i386-1.63.0-20220809.tar.xz) = zbHnn/5SBFsxex31vkEWE4Rim/316/LFqNUJGRyChbc= +SHA256 (rust/rustc-1.64.0-src.tar.xz) = 6BcNMY+snS/BfVw+ZI5waPVujbjSM9hkrv++98ZULqw= +SHA256 (rust/rustc-bootstrap-aarch64-1.64.0-20220922.tar.xz) = 6f3gaB9pPJxet/5UU4F57OlsKSPxzGvoFCx/NzVjTcA= +SHA256 (rust/rustc-bootstrap-amd64-1.64.0-20220920.tar.xz) = UmI+iAqcm9PB1VZSs6qtw4lEZWWFD70batt8f401lrE= +SHA256 (rust/rustc-bootstrap-i386-1.64.0-20220920.tar.xz) = xNe8jVXOVUTHjlFAVDC1JZhJFWekBU+bwk6YIb89hrs= SHA256 (rust/rustc-bootstrap-powerpc64-1.63.0-20220821.tar.xz) = ZvEXosONyhaLpUyQMJsLNLqjwtXdh+ia6mlQUzaf0SI= SHA256 (rust/rustc-bootstrap-riscv64-1.63.0-20220821.tar.xz) = sJT4g1Zsso87s2A/Jagz9pBE2tFSqZ8I1WqRED/DoXk= SHA256 (rust/rustc-bootstrap-sparc64-1.63.0-20220822.tar.xz) = XCpM3Kgy3m4slFP5iYQnQ9Gj0JN/2Pa0c2m7AOa+Rm4= -SIZE (rust/rustc-1.63.0-src.tar.xz) = 136597192 -SIZE (rust/rustc-bootstrap-aarch64-1.63.0-20220810.tar.xz) = 57047168 -SIZE (rust/rustc-bootstrap-amd64-1.63.0-20220809.tar.xz) = 63153000 -SIZE (rust/rustc-bootstrap-i386-1.63.0-20220809.tar.xz) = 64749664 +SIZE (rust/rustc-1.64.0-src.tar.xz) = 137841332 +SIZE (rust/rustc-bootstrap-aarch64-1.64.0-20220922.tar.xz) = 58395760 +SIZE (rust/rustc-bootstrap-amd64-1.64.0-20220920.tar.xz) = 64478412 +SIZE (rust/rustc-bootstrap-i386-1.64.0-20220920.tar.xz) = 65931652 SIZE (rust/rustc-bootstrap-powerpc64-1.63.0-20220821.tar.xz) = 57325328 SIZE (rust/rustc-bootstrap-riscv64-1.63.0-20220821.tar.xz) = 60968848 SIZE (rust/rustc-bootstrap-sparc64-1.63.0-20220822.tar.xz) = 56881288 diff --git a/lang/rust/patches/patch-compiler_rustc_llvm_build_rs b/lang/rust/patches/patch-compiler_rustc_llvm_build_rs index a1e784f69c7..01aa37e3ccc 100644 --- a/lang/rust/patches/patch-compiler_rustc_llvm_build_rs +++ b/lang/rust/patches/patch-compiler_rustc_llvm_build_rs @@ -1,7 +1,7 @@ Index: compiler/rustc_llvm/build.rs --- compiler/rustc_llvm/build.rs.orig +++ compiler/rustc_llvm/build.rs -@@ -339,10 +339,10 @@ fn main() { +@@ -335,10 +335,10 @@ fn main() { }; // RISC-V GCC erroneously requires libatomic for sub-word diff --git a/lang/rust/patches/patch-compiler_rustc_mir_transform_src_abort_unwinding_calls_rs b/lang/rust/patches/patch-compiler_rustc_mir_transform_src_abort_unwinding_calls_rs index 87ccaa3393d..1ad1d9047f1 100644 --- a/lang/rust/patches/patch-compiler_rustc_mir_transform_src_abort_unwinding_calls_rs +++ b/lang/rust/patches/patch-compiler_rustc_mir_transform_src_abort_unwinding_calls_rs @@ -4,7 +4,7 @@ https://github.com/rust-lang/rust/issues/90064 Index: compiler/rustc_mir_transform/src/abort_unwinding_calls.rs --- compiler/rustc_mir_transform/src/abort_unwinding_calls.rs.orig +++ compiler/rustc_mir_transform/src/abort_unwinding_calls.rs -@@ -100,6 +100,7 @@ impl<'tcx> MirPass<'tcx> for AbortUnwindingCalls { +@@ -95,6 +95,7 @@ impl<'tcx> MirPass<'tcx> for AbortUnwindingCalls { // registered for it. if !call_can_unwind { cleanups_to_remove.push(id); diff --git a/lang/rust/patches/patch-compiler_rustc_target_src_spec_i686_unknown_openbsd_rs b/lang/rust/patches/patch-compiler_rustc_target_src_spec_i686_unknown_openbsd_rs index b0bc0b7fbc1..cc564fa79bb 100644 --- a/lang/rust/patches/patch-compiler_rustc_target_src_spec_i686_unknown_openbsd_rs +++ b/lang/rust/patches/patch-compiler_rustc_target_src_spec_i686_unknown_openbsd_rs @@ -4,16 +4,15 @@ pass -znotext to avoid relocation problem with __rust_probestack symbol Index: compiler/rustc_target/src/spec/i686_unknown_openbsd.rs --- compiler/rustc_target/src/spec/i686_unknown_openbsd.rs.orig +++ compiler/rustc_target/src/spec/i686_unknown_openbsd.rs -@@ -2,10 +2,11 @@ use crate::spec::{LinkerFlavor, StackProbeType, Target +@@ -2,9 +2,9 @@ use crate::spec::{LinkerFlavor, StackProbeType, Target pub fn target() -> Target { let mut base = super::openbsd_base::opts(); - base.cpu = "pentium4".into(); + base.cpu = "pentiumpro".into(); base.max_atomic_width = Some(64); - base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m32".into()); - base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-fuse-ld=lld".into()); -+ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,-znotext".into()); +- base.add_pre_link_args(LinkerFlavor::Gcc, &["-m32", "-fuse-ld=lld"]); ++ base.add_pre_link_args(LinkerFlavor::Gcc, &["-m32", "-fuse-ld=lld", "-Wl,-znotext"]); // don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved base.stack_probes = StackProbeType::Call; diff --git a/lang/rust/patches/patch-compiler_rustc_target_src_spec_mod_rs b/lang/rust/patches/patch-compiler_rustc_target_src_spec_mod_rs index 6431d20b232..f304ec988d0 100644 --- a/lang/rust/patches/patch-compiler_rustc_target_src_spec_mod_rs +++ b/lang/rust/patches/patch-compiler_rustc_target_src_spec_mod_rs @@ -3,7 +3,7 @@ Add more openbsd archs Index: compiler/rustc_target/src/spec/mod.rs --- compiler/rustc_target/src/spec/mod.rs.orig +++ compiler/rustc_target/src/spec/mod.rs -@@ -890,9 +890,11 @@ supported_targets! { +@@ -893,9 +893,11 @@ supported_targets! { ("aarch64-unknown-openbsd", aarch64_unknown_openbsd), ("i686-unknown-openbsd", i686_unknown_openbsd), diff --git a/lang/rust/patches/patch-src_bootstrap_bootstrap_py b/lang/rust/patches/patch-src_bootstrap_bootstrap_py index 3c3dc605fce..eddb2a8f7dc 100644 --- a/lang/rust/patches/patch-src_bootstrap_bootstrap_py +++ b/lang/rust/patches/patch-src_bootstrap_bootstrap_py @@ -1,9 +1,10 @@ Workaround for sparc64: bootstrap segfaults without -O3 +Backport of https://github.com/rust-lang/rust/pull/101835 Index: src/bootstrap/bootstrap.py --- src/bootstrap/bootstrap.py.orig +++ src/bootstrap/bootstrap.py -@@ -784,6 +784,9 @@ class RustBuild(object): +@@ -750,6 +750,9 @@ class RustBuild(object): if self.get_toml("deny-warnings", "rust") != "false": env["RUSTFLAGS"] += " -Dwarnings" @@ -13,3 +14,13 @@ Index: src/bootstrap/bootstrap.py env["PATH"] = os.path.join(self.bin_root(), "bin") + \ os.pathsep + env["PATH"] if not os.path.isfile(self.cargo()): +@@ -774,7 +774,8 @@ class RustBuild(object): + elif color == "never": + args.append("--color=never") + +- run(args, env=env, verbose=self.verbose) ++ # Run this from the source directory so cargo finds .cargo/config ++ run(args, env=env, verbose=self.verbose, cwd=self.rust_root) + + def build_triple(self): + """Build triple as in LLVM diff --git a/lang/rust/patches/patch-src_bootstrap_builder_rs b/lang/rust/patches/patch-src_bootstrap_builder_rs new file mode 100644 index 00000000000..ecd67991ad2 --- /dev/null +++ b/lang/rust/patches/patch-src_bootstrap_builder_rs @@ -0,0 +1,15 @@ +Backport of https://github.com/rust-lang/rust/pull/101835 + +Index: src/bootstrap/builder.rs +--- src/bootstrap/builder.rs.orig ++++ src/bootstrap/builder.rs +@@ -1321,6 +1321,9 @@ impl<'a> Builder<'a> { + ) -> Cargo { + let mut cargo = Command::new(&self.initial_cargo); + let out_dir = self.stage_out(compiler, mode); ++ // Run cargo from the source root so it can find .cargo/config. ++ // This matters when using vendoring and the working directory is outside the repository. ++ cargo.current_dir(&self.src); + + // Codegen backends are not yet tracked by -Zbinary-dep-depinfo, + // so we need to explicitly clear out if they've been updated. diff --git a/lang/rust/patches/patch-src_bootstrap_lib_rs b/lang/rust/patches/patch-src_bootstrap_lib_rs index 46fb01d79f1..33c78be8112 100644 --- a/lang/rust/patches/patch-src_bootstrap_lib_rs +++ b/lang/rust/patches/patch-src_bootstrap_lib_rs @@ -4,7 +4,7 @@ https://github.com/rust-lang/rust/issues/39900 Index: src/bootstrap/lib.rs --- src/bootstrap/lib.rs.orig +++ src/bootstrap/lib.rs -@@ -1050,7 +1050,6 @@ impl Build { +@@ -1049,7 +1049,6 @@ impl Build { .args() .iter() .map(|s| s.to_string_lossy().into_owned()) diff --git a/lang/rust/patches/patch-src_bootstrap_native_rs b/lang/rust/patches/patch-src_bootstrap_native_rs index 222fce9e5d6..7bd9a96441d 100644 --- a/lang/rust/patches/patch-src_bootstrap_native_rs +++ b/lang/rust/patches/patch-src_bootstrap_native_rs @@ -1,7 +1,7 @@ Index: src/bootstrap/native.rs --- src/bootstrap/native.rs.orig +++ src/bootstrap/native.rs -@@ -350,12 +350,13 @@ impl Step for Llvm { +@@ -358,12 +358,13 @@ impl Step for Llvm { cfg.define("LLVM_LINK_LLVM_DYLIB", "ON"); } diff --git a/lang/rust/patches/patch-src_bootstrap_test_rs b/lang/rust/patches/patch-src_bootstrap_test_rs index 2d1269e17a3..ff462d28bf2 100644 --- a/lang/rust/patches/patch-src_bootstrap_test_rs +++ b/lang/rust/patches/patch-src_bootstrap_test_rs @@ -3,7 +3,7 @@ Disable "Bootstrap" test by default (it requires network). Index: src/bootstrap/test.rs --- src/bootstrap/test.rs.orig +++ src/bootstrap/test.rs -@@ -2344,7 +2344,7 @@ pub struct Bootstrap; +@@ -2412,7 +2412,7 @@ pub struct Bootstrap; impl Step for Bootstrap { type Output = (); diff --git a/lang/rust/pkg/PLIST-main b/lang/rust/pkg/PLIST-main index cf4be35d722..bebf7bdec83 100644 --- a/lang/rust/pkg/PLIST-main +++ b/lang/rust/pkg/PLIST-main @@ -37,6 +37,7 @@ lib/rustlib/${TRIPLE_ARCH}/lib/libtest-${LIBR_METADATA_test}.rlib lib/rustlib/${TRIPLE_ARCH}/lib/libunicode_width-${LIBR_METADATA_unicode_width}.rlib lib/rustlib/${TRIPLE_ARCH}/lib/libunwind-${LIBR_METADATA_unwind}.rlib @bin libexec/cargo-credential-1password +@bin libexec/rust-analyzer-proc-macro-srv @man man/man1/cargo-add.1 @man man/man1/cargo-bench.1 @man man/man1/cargo-build.1