Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
TheEdward162 authored May 14, 2024
2 parents a70493b + 3497701 commit a0e0c06
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed help text for size parameter of read-flash subcommand
- Fixed port detection on `musl` when detection returns paths starting with `/dev/`
- [cargo-espflash]: Always resolve package_id from metadata when finding bootloader and partition table (#632)

### Changed

Expand Down
24 changes: 20 additions & 4 deletions cargo-espflash/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::{
process::{exit, Command, ExitStatus, Stdio},
};

use cargo_metadata::Message;
use cargo_metadata::{Message, MetadataCommand};
use clap::{Args, CommandFactory, Parser, Subcommand};
use espflash::{
cli::{
Expand Down Expand Up @@ -349,6 +349,12 @@ fn build(
.or_else(|| cargo_config.target())
.ok_or_else(|| NoTargetError::new(Some(chip)))?;

let mut metadata_cmd = MetadataCommand::new();
if let Some(features) = &build_options.features {
metadata_cmd.features(cargo_metadata::CargoOpt::SomeFeatures(features.clone()));
}
let metadata = metadata_cmd.exec().into_diagnostic()?;

if !chip.into_target().supports_build_target(target) {
return Err(UnsupportedTargetError::new(target, chip).into());
}
Expand Down Expand Up @@ -440,9 +446,19 @@ fn build(

for message in messages {
match message.into_diagnostic()? {
Message::BuildScriptExecuted(script)
if script.package_id.repr.starts_with("esp-idf-sys") =>
{
Message::BuildScriptExecuted(script) => {
// We can't use the `Index` implementation on `Metadata` because `-Zbuild-std`
// pulls in dependencies not listed in the metadata which then causes the `Index`
// implementation to panic.
let Some(package) = metadata.packages.iter().find(|p| p.id == script.package_id)
else {
continue;
};

if package.name != "esp-idf-sys" {
continue;
}

// If the `esp-idf-sys` package is being used, attempt to use the bootloader and
// partition table compiled by `embuild` instead.
let build_path = PathBuf::from(script.out_dir).join("build");
Expand Down

0 comments on commit a0e0c06

Please sign in to comment.