chore: tooling improvements

- Add cargo-binutils to mise.toml (needed for `just size`)
- Remove jj from mise.toml (optional, not a build dependency)
- Silence `mise install` output when tools are current (--quiet)
- Add `just outdated` recipe with embassy-executor exclusion
  (esp-rtos 0.2 pins embassy-executor ^0.9; 0.10 renamed arch-*
  features to platform-*, which crashes cargo-outdated)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-04-01 11:57:44 -06:00
1 parent d01de9d14d
commit 405f4f2f13
5 files changed
+66 -39

No files matched your search

Generated
+13 -11
View File
@@ -1782,18 +1782,18 @@ dependencies = [
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "1.1.0+spec-1.1.0" version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
dependencies = [ dependencies = [
"serde_core", "serde_core",
] ]
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.25.8+spec-1.1.0" version = "0.25.9+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16bff38f1d86c47f9ff0647e6838d7bb362522bdf44006c7068c2b1e606f1f3c" checksum = "da053d28fe57e2c9d21b48261e14e7b4c8b670b54d2c684847b91feaf4c7dac5"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"toml_datetime", "toml_datetime",
@@ -1803,9 +1803,9 @@ dependencies = [
[[package]] [[package]]
name = "toml_parser" name = "toml_parser"
version = "1.1.0+spec-1.1.0" version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" checksum = "39ca317ebc49f06bd748bfba29533eac9485569dc9bf80b849024b025e814fb9"
dependencies = [ dependencies = [
"winnow", "winnow",
] ]
@@ -1818,7 +1818,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]] [[package]]
name = "ucobs" name = "ucobs"
version = "0.3.1" version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8e4344120e8d40560381899031725b5b71d5afbb45be9a1cd124eee031492c"
[[package]] [[package]]
name = "ufmt-write" name = "ufmt-write"
@@ -1982,18 +1984,18 @@ dependencies = [
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.8.47" version = "0.8.48"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
dependencies = [ dependencies = [
"zerocopy-derive", "zerocopy-derive",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.8.47" version = "0.8.48"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
+37 -19
View File
@@ -29,7 +29,7 @@ embassy-sync = "0.8"
embassy-time = "0.5" embassy-time = "0.5"
embassy-usb = { version = "0.6", features = ["defmt"] } embassy-usb = { version = "0.6", features = ["defmt"] }
embassy-usb-driver = "0.2" embassy-usb-driver = "0.2"
ucobs = { path = "../ucobs", features = ["legacy-msrv"] } ucobs = { version = "0.3", features = ["legacy-msrv"] }
heapless = "0.9" heapless = "0.9"
lora-phy = "3.0" lora-phy = "3.0"
static_cell = "2.1" static_cell = "2.1"
@@ -44,14 +44,32 @@ embedded-io-async = "0.7"
embassy-futures = "0.1" embassy-futures = "0.1"
# ESP32-S3 (Heltec V3) — requires esp toolchain (espup) # ESP32-S3 (Heltec V3) — requires esp toolchain (espup)
esp-backtrace = { version = "0.18", optional = true, features = ["esp32s3", "panic-handler", "defmt"] } esp-backtrace = { version = "0.18", optional = true, features = [
esp-hal = { version = "1.0", optional = true, features = ["esp32s3", "unstable"] } "esp32s3",
esp-println = { version = "0.16", optional = true, features = ["esp32s3", "defmt-espflash"] } "panic-handler",
esp-rtos = { version = "0.2", optional = true, features = ["esp32s3", "embassy"] } "defmt",
] }
esp-hal = { version = "1.0", optional = true, features = [
"esp32s3",
"unstable",
] }
esp-println = { version = "0.16", optional = true, features = [
"esp32s3",
"defmt-espflash",
] }
esp-rtos = { version = "0.2", optional = true, features = [
"esp32s3",
"embassy",
] }
# nRF52840 (RAK 4631) # nRF52840 (RAK 4631)
cortex-m-rt = { version = "0.7", optional = true } cortex-m-rt = { version = "0.7", optional = true }
embassy-nrf = { version = "0.10", optional = true, features = ["nrf52840", "gpiote", "time-driver-rtc1", "defmt"] } embassy-nrf = { version = "0.10", optional = true, features = [
"nrf52840",
"gpiote",
"time-driver-rtc1",
"defmt",
] }
panic-probe = { version = "1.0", optional = true, features = ["print-defmt"] } panic-probe = { version = "1.0", optional = true, features = ["print-defmt"] }
[build-dependencies] [build-dependencies]
@@ -60,23 +78,23 @@ owo-colors = "4.3"
[features] [features]
heltec_v3 = [ heltec_v3 = [
"dep:esp-backtrace", "dep:esp-backtrace",
"dep:esp-hal", "dep:esp-hal",
"dep:esp-println", "dep:esp-println",
"dep:esp-rtos", "dep:esp-rtos",
] ]
heltec_v4 = [ heltec_v4 = [
"dep:esp-backtrace", "dep:esp-backtrace",
"dep:esp-hal", "dep:esp-hal",
"dep:esp-println", "dep:esp-println",
"dep:esp-rtos", "dep:esp-rtos",
] ]
rak_wisblock_4631 = [ rak_wisblock_4631 = [
"dep:cortex-m-rt", "dep:cortex-m-rt",
"dep:embassy-nrf", "dep:embassy-nrf",
"dep:panic-probe", "dep:panic-probe",
"embassy-executor/arch-cortex-m", "embassy-executor/arch-cortex-m",
"embassy-executor/executor-thread", "embassy-executor/executor-thread",
] ]
[lints.clippy] [lints.clippy]
+7 -7
View File
@@ -2,28 +2,28 @@ set shell := ["bash", "-c"]
# Receive LoRa packets (Ctrl-C to stop) # Receive LoRa packets (Ctrl-C to stop)
rx *args: rx *args:
@mise install && uv run {{source_directory()}}/simple_rx.py {{args}} @mise install --quiet && uv run {{source_directory()}}/simple_rx.py {{args}}
# Transmit a single packet # Transmit a single packet
tx *args: tx *args:
@mise install && uv run {{source_directory()}}/simple_tx.py {{args}} @mise install --quiet && uv run {{source_directory()}}/simple_tx.py {{args}}
# Two-dongle ping-pong demo (--role tx|rx) # Two-dongle ping-pong demo (--role tx|rx)
ping-pong *args: ping-pong *args:
@mise install && uv run {{source_directory()}}/ping_pong.py {{args}} @mise install --quiet && uv run {{source_directory()}}/ping_pong.py {{args}}
# Exercise all DongLoRa commands # Exercise all DongLoRa commands
test-commands *args: test-commands *args:
@mise install && uv run {{source_directory()}}/all_commands.py {{args}} @mise install --quiet && uv run {{source_directory()}}/all_commands.py {{args}}
# Two-way LoRa bridge over TCP # Two-way LoRa bridge over TCP
bridge *args: bridge *args:
@mise install && uv run {{source_directory()}}/lora_bridge.py {{args}} @mise install --quiet && uv run {{source_directory()}}/lora_bridge.py {{args}}
# MeshCore packet decoder/monitor # MeshCore packet decoder/monitor
meshcore *args: meshcore *args:
@mise install && uv run {{source_directory()}}/meshcore/meshcore_rx.py {{args}} @mise install --quiet && uv run {{source_directory()}}/meshcore/meshcore_rx.py {{args}}
# Run any example by name (e.g. just ex run simple_rx) # Run any example by name (e.g. just ex run simple_rx)
run script *args: run script *args:
@mise install && uv run {{source_directory()}}/{{script}}.py {{args}} @mise install --quiet && uv run {{source_directory()}}/{{script}}.py {{args}}
+8 -1
View File
@@ -91,6 +91,13 @@ size board:
test: test:
DONGLORA_HOST_TEST=1 cargo test DONGLORA_HOST_TEST=1 cargo test
# Check for outdated dependencies
outdated:
@# embassy-executor 0.10 renamed arch-* → platform-* features.
@# esp-rtos 0.2 still pins embassy-executor ^0.9, blocking the upgrade.
@# cargo-outdated crashes trying to resolve 0.10 with the old feature name.
cargo outdated --exclude embassy-executor
# Example scripts (just ex rx, just ex tx, just ex meshcore, ...) # Example scripts (just ex rx, just ex tx, just ex meshcore, ...)
mod ex 'examples/justfile' mod ex 'examples/justfile'
@@ -99,7 +106,7 @@ mod ex 'examples/justfile'
# Install mise-managed tools if any are missing (fast no-op when current) # Install mise-managed tools if any are missing (fast no-op when current)
[private] [private]
_ensure_tools: _ensure_tools:
@mise install @mise install --quiet
# Run a cargo command for a board. # Run a cargo command for a board.
# Xtensa: nightly cargo + esp rustc (via RUSTC override) + -Zbuild-std=core # Xtensa: nightly cargo + esp rustc (via RUSTC override) + -Zbuild-std=core
+1 -1
View File
@@ -3,8 +3,8 @@ rust = "1.93"
python = "3.14" python = "3.14"
uv = "latest" uv = "latest"
just = "latest" just = "latest"
jj = "latest"
"cargo:cargo-binutils" = "latest" # `cargo size`, `cargo objdump`, etc.
"cargo:espup" = "0.16" "cargo:espup" = "0.16"
"cargo:espflash" = "3" # 4.x has broken nix dependency on current stable Rust "cargo:espflash" = "3" # 4.x has broken nix dependency on current stable Rust
"cargo:probe-rs-tools" = "0.31" "cargo:probe-rs-tools" = "0.31"