diff --git a/src/bin/repo.rs b/src/bin/repo.rs index c50282b5f..aba03eeb9 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -444,13 +444,8 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} - PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { - return None; - } - _ if conf.general.repo_binary == Some(true) => { + PackageConfig::Build(rule) if rule == "ignore" => { return None; } _ => {} @@ -492,18 +487,25 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} // keep local changes PackageConfig::Build(rule) if rule == "local" => recipe.recipe.source = None, - // should not gone here, but if it does, then some deps need it - PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { + // download from remote build + PackageConfig::Build(rule) if rule == "binary" => { recipe.recipe.source = None; recipe.recipe.build.set_as_remote(); } + // don't build this recipe (unlikely to go here unless some deps need it) + // TODO: Note that we're assuming this being ignored from e.g. metapackages + // TODO: Will totally broke build if this recipe needed as some other build dependencies + PackageConfig::Build(rule) if rule == "ignore" => { + recipe.recipe.source = None; + recipe.recipe.build.set_as_none(); + } PackageConfig::Build(rule) => { - return Err(anyhow!( + bail!( // Fail fast because we could risk losing local changes if "local" was typo'ed "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", recipe.name.as_str(), rule - )); + ); } _ => { if conf.general.repo_binary == Some(true) { @@ -513,6 +515,11 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec