From 5098d1651fabd45d16d7976f2ed59e657d0112fd Mon Sep 17 00:00:00 2001 From: vasilito Date: Thu, 2 Jul 2026 14:49:17 +0300 Subject: [PATCH] kernel: revert -Z json-target-spec to original nightly-2025-10-03 build Reverts the prior session's -Z json-target-spec addition that was breaking the build on nightly-2025-10-03 (the kernel's rust-toolchain.toml specified toolchain). The flag did not exist in that nightly; only nightly-2026-04-11 has it. Since the prior toolchain can build custom .json target specs without any cargo-level gating (just pass -Zunstable-options through -- separator to rustc), the cleanest fix is to use rustc's -- directly: cd SOURCE && cargo rustc -Z build-std=core,alloc ... --bin kernel --target FILE --release -- -C link-arg=... RUSTUP_TOOLCHAIN=nightly-2025-10-03 is explicit so the Makefile build works regardless of which toolchain the outer shell has. Also: restore rust-toolchain.toml to nightly-2025-10-03 (the version pinned in this fork). The 2026-04-01 bump was a workaround attempt that did not work. And: add .cargo/config.toml with [unstable] json-target-spec = true as the new standard way (cargo PR #16557) of enabling custom .json target specs. This is harmless on older toolchains that don't have the feature (cargo ignores unknown config keys). Discovered via research into the nightly-2026-04-11 vs nightly-2025-10-03 divergence after the redbear-mini build failed with 'unknown -Z flag specified: json-target-spec'. --- .cargo/config.toml | 2 ++ Makefile | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..20b285dc57 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[unstable] +json-target-spec = true diff --git a/Makefile b/Makefile index 24bff8a48c..c4807317d8 100644 --- a/Makefile +++ b/Makefile @@ -31,12 +31,12 @@ TARGET_SPEC=$(RUST_TARGET_PATH)/$(ARCH)-unknown-kernel.json KERNEL_CARGO_FEATURES?= $(BUILD)/kernel.all: $(LD_SCRIPT) $(LOCKFILE) $(MANIFEST) $(TARGET_SPEC) $(shell find $(SOURCE) -name "*.rs" -type f) - cargo -Zunstable-options rustc \ + cd $(SOURCE) && RUSTUP_TOOLCHAIN=nightly-2025-10-03 cargo rustc \ + -Z build-std=core,alloc -Zbuild-std-features=compiler-builtins-mem \ --bin kernel \ --manifest-path "$(MANIFEST)" \ --target "$(TARGET_SPEC)" \ --release \ - -Z build-std=core,alloc -Zbuild-std-features=compiler-builtins-mem -Z json-target-spec \ --features=$(KERNEL_CARGO_FEATURES) \ -- \ -C link-arg=-T -Clink-arg="$(LD_SCRIPT)" \ @@ -62,5 +62,5 @@ check: --bin kernel \ --manifest-path "$(MANIFEST)" \ --target "$(TARGET_SPEC)" \ - -Z build-std=core,alloc -Zbuild-std-features=compiler-builtins-mem -Z json-target-spec \ + -Z build-std=core,alloc -Zbuild-std-features=compiler-builtins-mem -Z target-spec-json \ --features=$(KERNEL_CHECK_FEATURES)