Download binary packages and really ignore ignored packages

This commit is contained in:
Wildan M 2025-11-19 21:49:16 -08:00
parent 2423c3d379
commit 44e1d90b8e
No known key found for this signature in database
GPG Key ID: 01AC53185C679C79
2 changed files with 18 additions and 10 deletions

View File

@ -436,13 +436,8 @@ fn parse_args(args: Vec<String>) -> anyhow::Result<(CliConfig, CliCommand, Vec<C
.packages
.iter()
.filter_map(|(f, v)| {
// same logic as list_installer
match v {
PackageConfig::Build(rule) if rule == "source" || rule == "local" => {}
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;
}
_ => {}
@ -484,18 +479,25 @@ fn parse_args(args: Vec<String>) -> anyhow::Result<(CliConfig, CliCommand, Vec<C
PackageConfig::Build(rule) if rule == "source" => {}
// 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) {

View File

@ -176,6 +176,12 @@ impl BuildRecipe {
self.kind = BuildKind::Remote;
self.dev_dependencies = Vec::new();
}
pub fn set_as_none(&mut self) {
self.kind = BuildKind::None;
self.dependencies = Vec::new();
self.dev_dependencies = Vec::new();
}
}
#[derive(Debug, Clone, PartialEq)]