From 6724884b930be706f46bfbd6525d211e5f23300d Mon Sep 17 00:00:00 2001 From: chrysn Date: Wed, 31 Jan 2024 12:06:23 +0100 Subject: [PATCH] makefiles/rust: Remove CARGO_CHANNEL special casing Back when specific control of the Rust version used with RIOT was needed, CARGO_CHANNEL was added to explicitly set the Rust version with consideration for CI special cases. Rust's mechansims of selecting a toolchain can be used instead now. --- doc/doxygen/src/using-rust.md | 10 ++++------ examples/rust-gcoap/Makefile | 2 -- examples/rust-hello-world/Makefile | 5 ----- makefiles/cargo-settings.inc.mk | 22 ---------------------- makefiles/cargo-targets.inc.mk | 6 +++--- makefiles/info.inc.mk | 3 +-- tests/rust_libs/Makefile | 4 ---- tests/rust_minimal/Makefile | 4 ---- 8 files changed, 8 insertions(+), 48 deletions(-) diff --git a/doc/doxygen/src/using-rust.md b/doc/doxygen/src/using-rust.md index ca3e11e204..e89b37e5e0 100644 --- a/doc/doxygen/src/using-rust.md +++ b/doc/doxygen/src/using-rust.md @@ -108,19 +108,17 @@ To install the necessary Rust components, it is easiest use [**rustup**, install Using Rust on RIOT needs the latest stable version of Rust. -Make sure you have the stable **toolchain** -and the core library for the CPU (**target**) of your choice available: +Make sure you have the core library for the CPU (**target**) of your choice available: ``` -$ rustup toolchain add stable -$ rustup target add thumbv7m-none-eabi --toolchain stable +$ rustup target add thumbv7m-none-eabi ``` Substitute thumbv7m-none-eabi with the value of `RUST_TARGET` in the output of `make info-build` of an application that has your current board selected (or just add it later whenever the Rust compiler complains about not finding the core library for a given target). -Using a beta or nightly will work just as well, -but you may need to set `CARGO_CHANNEL=nightly` on your shell or in your Makefiles. +Using the beta or nightly toolchains will work just as well +if they are selected through rustup's override mechanism. While Rust comes with its own [cargo] dependency tracker for any Rust code, diff --git a/examples/rust-gcoap/Makefile b/examples/rust-gcoap/Makefile index bc912e5d3f..1cdb347a7a 100644 --- a/examples/rust-gcoap/Makefile +++ b/examples/rust-gcoap/Makefile @@ -41,8 +41,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module FEATURES_REQUIRED += rust_target -CARGO_CHANNEL ?= stable - # Currently unknown, something related to the LED_PORT definition that doesn't # pass C2Rust's transpilation BOARD_BLACKLIST := ek-lm4f120xl diff --git a/examples/rust-hello-world/Makefile b/examples/rust-hello-world/Makefile index b0f4f15ccf..b6d08353e4 100644 --- a/examples/rust-hello-world/Makefile +++ b/examples/rust-hello-world/Makefile @@ -21,11 +21,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module FEATURES_REQUIRED += rust_target -# All Rust components RIOT uses work on stable Rust. If any extra libraries -# were to require a more recent version, switch to `CARGO_CHANNEL = -# $(CARGO_CHANNEL_NIGHTLY)` to use whichever nightly version is available. -CARGO_CHANNEL ?= stable - # Currently unknown, something related to the LED_PORT definition that doesn't # pass C2Rust's transpilation BOARD_BLACKLIST := ek-lm4f120xl diff --git a/makefiles/cargo-settings.inc.mk b/makefiles/cargo-settings.inc.mk index 25ed2b4bb5..c3709a221e 100644 --- a/makefiles/cargo-settings.inc.mk +++ b/makefiles/cargo-settings.inc.mk @@ -4,28 +4,6 @@ # binary is derived from this. CARGO_PROFILE ?= release -# Value for CARGO_CHANNEL when using nightly -# -# As different environments have different versions of nightly installed, but -# rustup / cargo does not take "the latest installed nightly" for a toolchain, -# a good value is determined dynamically. Typical values this takes are -# `nightly` (on regular installations) and `nightly-2022-03-08` (or whichever -# date it is currently pinned to) in riotbuild. -# -# Workaround-For: https://github.com/rust-lang/rustup/issues/3015 -# -# This does not get evaluated unless actually used; if rustup is not installed, -# the default value will likely not be usable but at least set the user on the -# right track. -CARGO_CHANNEL_NIGHTLY = $(shell rustup toolchain list | sed 's/ .*//' |grep nightly | tail -n1 || echo nightly) - -# The Rust version to use. -# -# Examples should set this to either `stable` or `$(CARGO_CHANNEL_NIGHTLY)`. -# The default is empty, which is suitable for applications that select their -# version through a `rust-toolchain.yaml` file. -CARGO_CHANNEL ?= - # Note that if we did not set this explicitly, CARGO_LIB would have to # understand which value cargo uses in absence of CARGO_TARGET_DIR, which would # be $(APPDIR)/target. diff --git a/makefiles/cargo-targets.inc.mk b/makefiles/cargo-targets.inc.mk index e253784a0f..dc3aac0c6e 100644 --- a/makefiles/cargo-targets.inc.mk +++ b/makefiles/cargo-targets.inc.mk @@ -55,15 +55,15 @@ $(CARGO_LIB): $(RIOTBUILD_CONFIG_HEADER_C) $(BUILDDEPS) $(CARGO_COMPILE_COMMANDS $(Q)# If distribution installed cargos ever grow the capacity to build RIOT, this absence of `rustup` might be OK. But that'd need them to both have cross tools around and cross core libs, none of which is currently the case. $(Q)# Ad grepping for "std": We're not *actually* checking for std but more for core -- but rust-stc-$TARGET is the name of any standard libraries that'd be available for that target. $(Q)[ x"$(findstring build-std,$(CARGO_OPTIONS))" != x"" ] || \ - (rustup component list $(patsubst %,--toolchain %,$(CARGO_CHANNEL)) --installed | grep 'rust-std-$(RUST_TARGET)$$' -q) || \ + (rustup component list --installed | grep 'rust-std-$(RUST_TARGET)$$' -q) || \ ($(COLOR_ECHO) \ - '$(COLOR_RED)Error: No Rust libraries are installed for the board'"'"'s CPU.$(COLOR_RESET) Run\n $(COLOR_GREEN)$$$(COLOR_RESET) rustup target add $(RUST_TARGET) $(patsubst %,--toolchain %,$(CARGO_CHANNEL))\nor set `CARGO_OPTIONS=-Zbuild-std=core`.'; \ + '$(COLOR_RED)Error: No Rust libraries are installed for the board'"'"'s CPU.$(COLOR_RESET) Run\n $(COLOR_GREEN)$$$(COLOR_RESET) rustup target add $(RUST_TARGET)\nor set `CARGO_OPTIONS=-Zbuild-std=core`.'; \ exit 1) $(Q)# finally call out to cargo. mind the "+" to pass down make's jobserver. $(Q)+ CC= CFLAGS= CPPFLAGS= CXXFLAGS= \ RIOT_COMPILE_COMMANDS_JSON="$(CARGO_COMPILE_COMMANDS)" \ RIOT_USEMODULE="$(USEMODULE)" \ - cargo $(patsubst +,,+${CARGO_CHANNEL}) \ + cargo \ build \ --target $(RUST_TARGET) \ --profile $(CARGO_PROFILE) \ diff --git a/makefiles/info.inc.mk b/makefiles/info.inc.mk index 922ded24ac..58f7715716 100644 --- a/makefiles/info.inc.mk +++ b/makefiles/info.inc.mk @@ -90,7 +90,6 @@ info-build: @echo -e 'CXXEXFLAGS:$(patsubst %, \n\t%, $(CXXEXFLAGS))' @echo '' @echo 'RUST_TARGET: $(RUST_TARGET)' - @echo 'CARGO_CHANNEL: $(CARGO_CHANNEL)' @echo 'CARGO_PROFILE: $(CARGO_PROFILE)' @echo 'CARGO_OPTIONS: $(CARGO_OPTIONS)' @echo '' @@ -250,5 +249,5 @@ info-programmers-supported: @echo $(sort $(PROGRAMMERS_SUPPORTED)) info-rust: - cargo $(patsubst +,,+${CARGO_CHANNEL}) version + cargo version c2rust --version diff --git a/tests/rust_libs/Makefile b/tests/rust_libs/Makefile index 6195a36951..a41e323007 100644 --- a/tests/rust_libs/Makefile +++ b/tests/rust_libs/Makefile @@ -5,10 +5,6 @@ USEMODULE += shell_democommands FEATURES_REQUIRED += rust_target -# Testing on stable to ensure that no nightly features are needed when Rust is -# pulled in through modules. -CARGO_CHANNEL = stable - # Currently unknown, something related to the LED_PORT definition that doesn't # pass C2Rust's transpilation BOARD_BLACKLIST := ek-lm4f120xl diff --git a/tests/rust_minimal/Makefile b/tests/rust_minimal/Makefile index 72a112e7cf..9001f83c6c 100644 --- a/tests/rust_minimal/Makefile +++ b/tests/rust_minimal/Makefile @@ -5,10 +5,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module FEATURES_REQUIRED += rust_target -# Testing on stable to ensure that no nightly features are needed for basic -# Rust usage. -CARGO_CHANNEL = stable - # Currently unknown, something related to the LED_PORT definition that doesn't # pass C2Rust's transpilation BOARD_BLACKLIST := ek-lm4f120xl