Merge branch 'adjust-filesystem-ignore' into 'master'

Download binary packages and really ignore ignored packages

See merge request redox-os/cookbook!695
This commit is contained in:
Jeremy Soller 2025-11-20 06:47:33 -07:00
commit c9594cdc50
3 changed files with 25 additions and 12 deletions

View File

@ -444,13 +444,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;
}
_ => {}
@ -492,18 +487,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) {
@ -513,6 +515,11 @@ fn parse_args(args: Vec<String>) -> anyhow::Result<(CliConfig, CliCommand, Vec<C
}
}
}
} else {
if conf.general.repo_binary == Some(true) {
recipe.recipe.source = None;
recipe.recipe.build.set_as_remote();
}
}
}
}

View File

@ -204,7 +204,7 @@ pub fn build(
return Ok((stage_dir, auto_deps));
}
let source_modified = modified_dir_ignore_git(source_dir)?;
let source_modified = modified_dir_ignore_git(source_dir).unwrap_or(SystemTime::UNIX_EPOCH);
let deps_modified = dep_pkgars
.iter()
.map(|(_dep, pkgar)| modified(pkgar))
@ -220,7 +220,7 @@ pub fn build(
remove_all(&sysroot_dir)?;
}
}
if !sysroot_dir.is_dir() {
if !sysroot_dir.is_dir() && recipe.build.kind != BuildKind::Remote {
// Create sysroot.tmp
let sysroot_dir_tmp = target_dir.join("sysroot.tmp");
create_dir_clean(&sysroot_dir_tmp)?;

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)]