git: 9e25c683b8a7 - main - lang/rust-nightly: Update to 1.83.0

From: Mikael Urankar <mikael_at_FreeBSD.org>
Date: Thu, 03 Oct 2024 13:05:46 UTC
The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9e25c683b8a78259e80fc0bacddc5ff9087031b3

commit 9e25c683b8a78259e80fc0bacddc5ff9087031b3
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2024-10-02 08:38:54 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2024-10-03 13:05:35 +0000

    lang/rust-nightly: Update to 1.83.0
---
 lang/rust-nightly/Makefile                         |   6 +-
 lang/rust-nightly/distinfo                         |  18 ++--
 .../files/no-hardlinks/patch-src_bootstrap_lib.rs  |  28 ------
 .../no-hardlinks/patch-src_bootstrap_native.rs     |  39 -------
 ...ompiler_rustc__target_src_abi_call_powerpc64.rs |  11 ++
 ...get_src_spec_targets_i686__unknown__freebsd.rs} |   4 +-
 .../patch-library_backtrace_src_backtrace_mod.rs   |  10 ++
 ...src_tools_cargo_src_cargo_sources_git_source.rs |  10 +-
 lang/rust-nightly/files/patch-vendor_cc.rs         | 112 ++++++---------------
 .../patch-vendor_nix-0.28.0_src_sys_signal.rs      |  20 ++++
 lang/rust-nightly/update.sh                        |   9 +-
 lang/rust/Makefile                                 |  11 +-
 12 files changed, 100 insertions(+), 178 deletions(-)

diff --git a/lang/rust-nightly/Makefile b/lang/rust-nightly/Makefile
index b3b8ab296639..145d7130fb04 100644
--- a/lang/rust-nightly/Makefile
+++ b/lang/rust-nightly/Makefile
@@ -1,5 +1,5 @@
 # Run update.sh to update to the latest nightly
-PORTVERSION=	1.80.0.${NIGHTLY_DATE:C,-,,g}
+PORTVERSION=	1.83.0.${NIGHTLY_DATE:C,-,,g}
 # Always set PORTREVISION explicitly as otherwise it is inherited from lang/rust
 PORTREVISION=	0
 PKGNAMESUFFIX=	-nightly
@@ -14,8 +14,8 @@ MASTERDIR=	${.CURDIR}/../rust
 PATCHDIR=	${.CURDIR}/files
 DISTINFO_FILE=	${.CURDIR}/distinfo
 
-NIGHTLY_DATE=		2024-05-07
-BOOTSTRAPS_DATE=	2024-04-29
+NIGHTLY_DATE=		2024-10-01
+BOOTSTRAPS_DATE=	2024-09-22
 RUST_BOOTSTRAP_VERSION=	beta
 
 .include "${MASTERDIR}/Makefile"
diff --git a/lang/rust-nightly/distinfo b/lang/rust-nightly/distinfo
index b5947b78c52b..3008e4b71ccc 100644
--- a/lang/rust-nightly/distinfo
+++ b/lang/rust-nightly/distinfo
@@ -1,9 +1,9 @@
-TIMESTAMP = 1715170997
-SHA256 (rust/2024-05-07/rustc-nightly-src.tar.xz) = 980396ea6f15b926155ffaab4d56f70a0729a18a98ed99fe11004b5709855458
-SIZE (rust/2024-05-07/rustc-nightly-src.tar.xz) = 162781340
-SHA256 (rust/2024-04-29/rustc-beta-x86_64-unknown-freebsd.tar.xz) = 786f40030dbe5e6897aafe4bda44770920b2010b93fc5ce86574774e531e2eff
-SIZE (rust/2024-04-29/rustc-beta-x86_64-unknown-freebsd.tar.xz) = 75473648
-SHA256 (rust/2024-04-29/rust-std-beta-x86_64-unknown-freebsd.tar.xz) = 69626178bc5309afc8a02c941bd77e70e1aa6917ffb6bf0d67a57d921b5c664a
-SIZE (rust/2024-04-29/rust-std-beta-x86_64-unknown-freebsd.tar.xz) = 27096208
-SHA256 (rust/2024-04-29/cargo-beta-x86_64-unknown-freebsd.tar.xz) = 7fab806227d1a3be817602abb121ac7e039ba0bbf81e0a1d47bdcccca74203c6
-SIZE (rust/2024-04-29/cargo-beta-x86_64-unknown-freebsd.tar.xz) = 9257888
+TIMESTAMP = 1727858204
+SHA256 (rust/2024-10-01/rustc-nightly-src.tar.xz) = 46c2d963da26229b8cdeed978b5c9affa091486015d474c1f8a754282a332d1a
+SIZE (rust/2024-10-01/rustc-nightly-src.tar.xz) = 353516056
+SHA256 (rust/2024-09-22/rustc-beta-x86_64-unknown-freebsd.tar.xz) = aeabedce922b315fb872127a6102a76e9fe5e1932b14a7210f31191f9a85488b
+SIZE (rust/2024-09-22/rustc-beta-x86_64-unknown-freebsd.tar.xz) = 81004732
+SHA256 (rust/2024-09-22/rust-std-beta-x86_64-unknown-freebsd.tar.xz) = 8749c2ae47644c16f62a310500ab91e5403a25c3e023a2c6e25cfa16217c98e9
+SIZE (rust/2024-09-22/rust-std-beta-x86_64-unknown-freebsd.tar.xz) = 28846744
+SHA256 (rust/2024-09-22/cargo-beta-x86_64-unknown-freebsd.tar.xz) = 7912a49f7a181145b71a197014e3de6594b216959cd7c95a003fcd13854cb056
+SIZE (rust/2024-09-22/cargo-beta-x86_64-unknown-freebsd.tar.xz) = 9536628
diff --git a/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_lib.rs b/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_lib.rs
deleted file mode 100644
index 081c2056ad2c..000000000000
--- a/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_lib.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-Attempt to fix intermittent "can't find crate for `std`" build failures
-
-The location of rustc (found via env::current_exe()) is used to
-find the right libstd.  However it might have been "copied" by
-creating a hard link to the new location instead.  Like /proc/curproc/file,
-KERN_PROC_PATHNAME (used internally by current_exe()) can return
-any of the file's multiple paths.  Most of the time it returns the
-right rustc path and the build will succeed but occasionally it
-will return the "wrong" path and the build fails with:
-
-    error[E0463]: can't find crate for `std`
-
-If this is right a viable workaround should be to never create hard
-links during the build, so let's try that.
-
---- src/bootstrap/lib.rs.orig	2020-07-23 20:16:43 UTC
-+++ src/bootstrap/lib.rs
-@@ -1173,10 +1173,6 @@ impl Build {
-         if metadata.file_type().is_symlink() {
-             let link = t!(fs::read_link(src));
-             t!(symlink_file(link, dst));
--        } else if let Ok(()) = fs::hard_link(src, dst) {
--            // Attempt to "easy copy" by creating a hard link
--            // (symlinks don't work on windows), but if that fails
--            // just fall back to a slow `copy` operation.
-         } else {
-             if let Err(e) = fs::copy(src, dst) {
-                 panic!("failed to copy `{}` to `{}`: {}", src.display(), dst.display(), e)
diff --git a/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_native.rs b/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_native.rs
deleted file mode 100644
index 1484fdeee67e..000000000000
--- a/lang/rust-nightly/files/no-hardlinks/patch-src_bootstrap_native.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-There seems to be some kind of race when using llvm-config-wrapper
-for building rust-lld.  Attempt to improve reliability of the build
-by not using it.  llvm-config-wrapper is a hack in the first place
-that is only really needed on Windows.
-
---- src/bootstrap/native.rs.orig	2022-05-01 20:28:31 UTC
-+++ src/bootstrap/native.rs
-@@ -918,22 +918,6 @@ impl Step for Lld {
-         let mut cfg = cmake::Config::new(builder.src.join("src/llvm-project/lld"));
-         configure_cmake(builder, target, &mut cfg, true, LdFlags::default());
- 
--        // This is an awful, awful hack. Discovered when we migrated to using
--        // clang-cl to compile LLVM/LLD it turns out that LLD, when built out of
--        // tree, will execute `llvm-config --cmakedir` and then tell CMake about
--        // that directory for later processing. Unfortunately if this path has
--        // forward slashes in it (which it basically always does on Windows)
--        // then CMake will hit a syntax error later on as... something isn't
--        // escaped it seems?
--        //
--        // Instead of attempting to fix this problem in upstream CMake and/or
--        // LLVM/LLD we just hack around it here. This thin wrapper will take the
--        // output from llvm-config and replace all instances of `\` with `/` to
--        // ensure we don't hit the same bugs with escaping. It means that you
--        // can't build on a system where your paths require `\` on Windows, but
--        // there's probably a lot of reasons you can't do that other than this.
--        let llvm_config_shim = env::current_exe().unwrap().with_file_name("llvm-config-wrapper");
--
-         // Re-use the same flags as llvm to control the level of debug information
-         // generated for lld.
-         let profile = match (builder.config.llvm_optimize, builder.config.llvm_release_debuginfo) {
-@@ -945,7 +929,7 @@ impl Step for Lld {
-         cfg.out_dir(&out_dir)
-             .profile(profile)
-             .env("LLVM_CONFIG_REAL", &llvm_config)
--            .define("LLVM_CONFIG_PATH", llvm_config_shim)
-+            .define("LLVM_CONFIG_PATH", &llvm_config)
-             .define("LLVM_INCLUDE_TESTS", "OFF");
- 
-         // While we're using this horrible workaround to shim the execution of
diff --git a/lang/rust-nightly/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs b/lang/rust-nightly/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs
new file mode 100644
index 000000000000..2524e1872984
--- /dev/null
+++ b/lang/rust-nightly/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs
@@ -0,0 +1,11 @@
+--- compiler/rustc_target/src/abi/call/powerpc64.rs.orig	2020-03-09 22:11:17 UTC
++++ compiler/rustc_target/src/abi/call/powerpc64.rs
+@@ -123,7 +123,7 @@ where
+         ELFv2
+     } else {
+         match cx.data_layout().endian {
+-            Endian::Big => ELFv1,
++            Endian::Big => ELFv2,
+             Endian::Little => ELFv2,
+         }
+     };
diff --git a/lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_i686__unknown__freebsd.rs b/lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
similarity index 86%
rename from lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_i686__unknown__freebsd.rs
rename to lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
index c1f57467f264..45d479133343 100644
--- a/lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_i686__unknown__freebsd.rs
+++ b/lang/rust-nightly/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
@@ -1,4 +1,6 @@
---- compiler/rustc_target/src/spec/targets/i686_unknown_freebsd.rs.orig	2023-11-27 08:52:00 UTC
+i386 should be pentiumpro (no SSE2, no ...)
+
+--- compiler/rustc_target/src/spec/targets/i686_unknown_freebsd.rs.orig	2023-12-22 11:18:00 UTC
 +++ compiler/rustc_target/src/spec/targets/i686_unknown_freebsd.rs
 @@ -2,7 +2,7 @@ pub fn target() -> Target {
  
diff --git a/lang/rust-nightly/files/patch-library_backtrace_src_backtrace_mod.rs b/lang/rust-nightly/files/patch-library_backtrace_src_backtrace_mod.rs
new file mode 100644
index 000000000000..9731c97fc809
--- /dev/null
+++ b/lang/rust-nightly/files/patch-library_backtrace_src_backtrace_mod.rs
@@ -0,0 +1,10 @@
+--- library/backtrace/src/backtrace/mod.rs.orig	2024-10-02 09:23:54.876659000 +0200
++++ library/backtrace/src/backtrace/mod.rs	2024-10-02 09:23:44.139133000 +0200
+@@ -176,6 +176,7 @@ cfg_if::cfg_if! {
+                 unix,
+                 not(target_os = "emscripten"),
+                 not(all(target_os = "ios", target_arch = "arm")),
++                not(all(target_os = "freebsd", target_arch = "riscv64")),
+             ),
+             all(
+                 target_env = "sgx",
diff --git a/lang/rust-nightly/files/patch-src_tools_cargo_src_cargo_sources_git_source.rs b/lang/rust-nightly/files/patch-src_tools_cargo_src_cargo_sources_git_source.rs
index fc3b22aebde1..3add18d71b22 100644
--- a/lang/rust-nightly/files/patch-src_tools_cargo_src_cargo_sources_git_source.rs
+++ b/lang/rust-nightly/files/patch-src_tools_cargo_src_cargo_sources_git_source.rs
@@ -13,7 +13,7 @@ be stabilized first.  It will be available in Rust 1.56.
 
 --- src/tools/cargo/src/cargo/sources/git/source.rs.orig	2021-10-04 20:59:57 UTC
 +++ src/tools/cargo/src/cargo/sources/git/source.rs
-@@ -195,6 +195,9 @@ impl<'cfg> Source for GitSource<'cfg> {
+@@ -205,6 +205,9 @@ impl<'cfg> Source for GitSource<'cfg> {
          kind: QueryKind,
          f: &mut dyn FnMut(IndexSummary),
      ) -> Poll<CargoResult<()>> {
@@ -23,14 +23,14 @@ be stabilized first.  It will be available in Rust 1.56.
          if let Some(src) = self.path_source.as_mut() {
              src.query(dep, kind, f)
          } else {
-@@ -217,6 +220,10 @@ impl<'cfg> Source for GitSource<'cfg> {
-     fn block_until_ready(&mut self) -> CargoResult<()> {
+@@ -228,6 +231,10 @@ impl<'cfg> Source for GitSource<'cfg> {
          if self.path_source.is_some() {
              self.mark_used(None)?;
-+            return Ok(());
+             return Ok(());
 +        }
 +
 +        if std::env::var("CARGO_FREEBSD_PORTS_SKIP_GIT_UPDATE").is_ok() {
-             return Ok(());
++             return Ok(());
          }
  
+         let git_fs = self.config.git_path();
diff --git a/lang/rust-nightly/files/patch-vendor_cc.rs b/lang/rust-nightly/files/patch-vendor_cc.rs
index 5b6888c4c087..efecd8bd3a76 100644
--- a/lang/rust-nightly/files/patch-vendor_cc.rs
+++ b/lang/rust-nightly/files/patch-vendor_cc.rs
@@ -8,92 +8,24 @@ until LLVM can be updated to use libc++ by default.
 
 https://reviews.llvm.org/D77776
 
---- vendor/cc-1.0.73/src/lib.rs.orig	2021-03-04 20:58:54 UTC
-+++ vendor/cc-1.0.73/src/lib.rs
-@@ -2659,24 +2659,7 @@ impl Tool {
-     }
- 
-     fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self {
--        // Try to detect family of the tool from its name, falling back to Gnu.
--        let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) {
--            if fname.contains("clang-cl") {
--                ToolFamily::Msvc { clang_cl: true }
--            } else if fname.ends_with("cl") || fname == "cl.exe" {
--                ToolFamily::Msvc { clang_cl: false }
--            } else if fname.contains("clang") {
--                match clang_driver {
--                    Some("cl") => ToolFamily::Msvc { clang_cl: true },
--                    _ => ToolFamily::Clang,
--                }
--            } else {
--                ToolFamily::Gnu
--            }
--        } else {
--            ToolFamily::Gnu
--        };
--
-+        let family = ToolFamily::Gnu;
-         Tool {
-             path: path,
-             cc_wrapper_path: None,
+cc-1.1.10/  cc-1.1.22/  
 
---- vendor/cc-1.0.79/src/lib.rs.orig	2021-03-04 20:58:54 UTC
-+++ vendor/cc-1.0.79/src/lib.rs
-@@ -2659,24 +2659,7 @@ impl Tool {
-     }
+--- vendor/cc-1.0.105/src/tool.rs.orig	2024-05-09 18:20:47 UTC
++++ vendor/cc-1.0.105/src/tool.rs
+@@ -151,9 +151,7 @@ impl Tool {
  
-     fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self {
--        // Try to detect family of the tool from its name, falling back to Gnu.
--        let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) {
--            if fname.contains("clang-cl") {
--                ToolFamily::Msvc { clang_cl: true }
--            } else if fname.ends_with("cl") || fname == "cl.exe" {
--                ToolFamily::Msvc { clang_cl: false }
--            } else if fname.contains("clang") {
--                match clang_driver {
--                    Some("cl") => ToolFamily::Msvc { clang_cl: true },
--                    _ => ToolFamily::Clang,
--                }
--            } else {
--                ToolFamily::Gnu
--            }
--        } else {
--            ToolFamily::Gnu
--        };
--
-+        let family = ToolFamily::Gnu;
-         Tool {
-             path: path,
-             cc_wrapper_path: None,
+             match (clang, accepts_cl_style_flags, gcc) {
+                 (clang_cl, true, _) => Ok(ToolFamily::Msvc { clang_cl }),
+-                (true, false, _) => Ok(ToolFamily::Clang {
+-                    zig_cc: is_zig_cc(path, cargo_output),
+-                }),
++                (true, false, _) => Ok(ToolFamily::Gnu),
+                 (false, false, true) => Ok(ToolFamily::Gnu),
+                 (false, false, false) => {
+                     cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
 
---- vendor/cc-1.0.90/src/tool.rs.orig	2024-03-18 11:23:17 UTC
-+++ vendor/cc-1.0.90/src/tool.rs
-@@ -122,22 +122,7 @@ impl Tool {
-         };
- 
-         // Try to detect family of the tool from its name, falling back to Gnu.
--        let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) {
--            if fname.contains("clang-cl") {
--                ToolFamily::Msvc { clang_cl: true }
--            } else if fname.ends_with("cl") || fname == "cl.exe" {
--                ToolFamily::Msvc { clang_cl: false }
--            } else if fname.contains("clang") {
--                match clang_driver {
--                    Some("cl") => ToolFamily::Msvc { clang_cl: true },
--                    _ => ToolFamily::Clang,
--                }
--            } else {
--                detect_family(&path)
--            }
--        } else {
--            detect_family(&path)
--        };
-+        let family = ToolFamily::Gnu;
- 
-         Tool {
-             path,
---- vendor/cc-1.0.92/src/tool.rs.orig	2024-05-09 18:20:47 UTC
-+++ vendor/cc-1.0.92/src/tool.rs
+--- vendor/cc-1.1.10/src/tool.rs.orig	2024-05-09 18:20:47 UTC
++++ vendor/cc-1.1.10/src/tool.rs
 @@ -151,9 +151,7 @@ impl Tool {
  
              match (clang, accepts_cl_style_flags, gcc) {
@@ -105,3 +37,17 @@ https://reviews.llvm.org/D77776
                  (false, false, true) => Ok(ToolFamily::Gnu),
                  (false, false, false) => {
                      cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
+
+--- vendor/cc-1.1.22/src/tool.rs.orig	2024-10-02 09:43:22.970422000 +0200
++++ vendor/cc-1.1.22/src/tool.rs	2024-10-02 09:50:42.836352000 +0200
+@@ -174,9 +174,7 @@ impl Tool {
+ 
+             match (clang, accepts_cl_style_flags, gcc, emscripten, vxworks) {
+                 (clang_cl, true, _, false, false) => Ok(ToolFamily::Msvc { clang_cl }),
+-                (true, _, _, _, false) | (_, _, _, true, false) => Ok(ToolFamily::Clang {
+-                    zig_cc: is_zig_cc(path, cargo_output),
+-                }),
++                (true, _, _, _, false) | (_, _, _, true, false) => Ok(ToolFamily::Gnu),
+                 (false, false, true, _, false) | (_, _, _, _, true) => Ok(ToolFamily::Gnu),
+                 (false, false, false, false, false) => {
+                     cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__`, `__EMSCRIPTEN__` or `__VXWORKS__`, also does not accept cl style flag `-?`, fallback to treating it as GNU");
diff --git a/lang/rust-nightly/files/patch-vendor_nix-0.28.0_src_sys_signal.rs b/lang/rust-nightly/files/patch-vendor_nix-0.28.0_src_sys_signal.rs
new file mode 100644
index 000000000000..fbe6d4e5a216
--- /dev/null
+++ b/lang/rust-nightly/files/patch-vendor_nix-0.28.0_src_sys_signal.rs
@@ -0,0 +1,20 @@
+--- vendor/nix-0.28.0/src/sys/signal.rs.orig	2024-06-14 14:06:00 UTC
++++ vendor/nix-0.28.0/src/sys/signal.rs
+@@ -1099,7 +1099,7 @@ pub type type_of_thread_id = libc::lwpid_t;
+ #[cfg(target_os = "freebsd")]
+ pub type type_of_thread_id = libc::lwpid_t;
+ /// Identifies a thread for [`SigevNotify::SigevThreadId`]
+-#[cfg(all(not(target_os = "hurd"), any(target_env = "gnu", target_env = "uclibc")))]
++#[cfg(all(not(any(target_os = "freebsd", target_os = "hurd")), any(target_env = "gnu", target_env = "uclibc")))]
+ pub type type_of_thread_id = libc::pid_t;
+ 
+ /// Specifies the notification method used by a [`SigEvent`]
+@@ -1349,7 +1349,7 @@ mod sigevent {
+                     sev.sigev_value.sival_ptr = si_value as *mut libc::c_void;
+                     sev._sigev_un._threadid = thread_id;
+                 }
+-                #[cfg(any(target_env = "gnu", target_env = "uclibc"))]
++                #[cfg(all(not(target_os = "freebsd"), any(target_env = "gnu", target_env = "uclibc")))]
+                 SigevNotify::SigevThreadId{signal, thread_id, si_value} => {
+                     sev.sigev_notify = libc::SIGEV_THREAD_ID;
+                     sev.sigev_signo = signal as libc::c_int;
diff --git a/lang/rust-nightly/update.sh b/lang/rust-nightly/update.sh
index 2a8f325ad255..6c8452b92343 100644
--- a/lang/rust-nightly/update.sh
+++ b/lang/rust-nightly/update.sh
@@ -14,10 +14,11 @@ fetch -qo /tmp/channel-rust-nightly.toml https://static.rust-lang.org/dist/chann
 new_commit=$(</tmp/channel-rust-nightly.toml tomlq -r '.pkg.rustc.git_commit_hash')
 rm /tmp/channel-rust-nightly.toml
 
-fetch -qo - https://raw.githubusercontent.com/rust-lang/rust/${new_commit}/src/stage0.json | jq -r '
-	"BOOTSTRAPS_DATE=\(.compiler.date)",
-	"RUST_BOOTSTRAP_VERSION=\(.compiler.version)"
-' | portedit merge -i .
+fetch -qo /tmp/stage0 https://raw.githubusercontent.com/rust-lang/rust/${new_commit}/src/stage0
+BOOTSTRAPS_DATE=$(awk -F "=" /^compiler_date/'{print $2}' /tmp/stage0)
+RUST_BOOTSTRAP_VERSION=$(awk -F "=" /^compiler_version/'{print $2}' /tmp/stage0)
+echo "BOOTSTRAPS_DATE=${BOOTSTRAPS_DATE}" | portedit merge -i .
+echo "RUST_BOOTSTRAP_VERSION=${RUST_BOOTSTRAP_VERSION}" | portedit merge -i .
 
 make makesum
 echo "lang/rust-nightly: Update to $(make -V PORTVERSION)
diff --git a/lang/rust/Makefile b/lang/rust/Makefile
index 5f3a427ae029..295e4b1941c0 100644
--- a/lang/rust/Makefile
+++ b/lang/rust/Makefile
@@ -66,7 +66,7 @@ SOURCES_VARS=		_COMPONENTS+=rust-src-${_PACKAGE_VERS} \
 WASM_VARS=		_COMPONENTS+="rust-analysis-${_PACKAGE_VERS}-wasm32-unknown-unknown rust-std-${_PACKAGE_VERS}-wasm32-unknown-unknown" \
 			_RUST_TARGETS+=wasm32-unknown-unknown
 
-# See WRKSRC/src/stage0.json for the date and version values
+# See WRKSRC/src/stage0 for the date and version values
 BOOTSTRAPS_DATE?=		2024-08-08
 RUST_BOOTSTRAP_VERSION?=	1.80.0
 
@@ -139,7 +139,7 @@ DISTFILES:=	${DISTFILES:M*\:src} \
 post-patch:
 	@${REINPLACE_CMD} 's,gdb,${LOCALBASE}/bin/gdb,' ${WRKSRC}/src/etc/rust-gdb
 .if defined(NIGHTLY_DATE)
-	@${REINPLACE_CMD} 's/"rustfmt"/"nothx"/' ${WRKSRC}/src/stage0.json
+	@${REINPLACE_CMD} 's/rustfmt/nothx/' ${WRKSRC}/src/stage0
 .endif
 # Disable vendor checksums
 	@${REINPLACE_CMD} 's,"files":{[^}]*},"files":{},' \
@@ -193,6 +193,9 @@ do-configure:
 .endif
 	@${ECHO_CMD} 'remap-debuginfo=true' >> ${WRKSRC}/config.toml
 	@${ECHO_CMD} '[llvm]' >> ${WRKSRC}/config.toml
+.if defined(NIGHTLY_DATE)
+	@${ECHO_CMD} 'download-ci-llvm = false' >> ${WRKSRC}/config.toml
+.endif
 .if ${PORT_OPTIONS:MLTO}
 	@${ECHO_CMD} 'thin-lto=true' >> ${WRKSRC}/config.toml
 .endif
@@ -228,10 +231,6 @@ do-configure:
 .endfor
 	@${ECHO_CMD} '[dist]' >> ${WRKSRC}/config.toml
 	@${ECHO_CMD} 'src-tarball=false' >> ${WRKSRC}/config.toml
-.if defined(NIGHTLY_DATE)
-# Don't abort if optional tools fail to build
-	@${ECHO_CMD} 'missing-tools=true' >> ${WRKSRC}/config.toml
-.endif
 
 do-build:
 	@cd ${WRKSRC} && \