Code simplification

This commit is contained in:
Wildan M 2025-12-06 21:58:28 +07:00
parent d9af4e385a
commit 3ae5da8d13
No known key found for this signature in database
GPG Key ID: 01AC53185C679C79
6 changed files with 30 additions and 32 deletions

6
Cargo.lock generated
View File

@ -912,7 +912,7 @@ dependencies = [
[[package]]
name = "redox-pkg"
version = "0.2.8"
source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#b89f08df540b597949207147e0645aed24eb2a80"
source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#6ed6a265cbe9abaf9d747e700f72cad9cea5a5d0"
dependencies = [
"anyhow",
"ignore",
@ -986,7 +986,7 @@ dependencies = [
[[package]]
name = "redoxer"
version = "0.2.61"
source = "git+https://gitlab.redox-os.org/redox-os/redoxer.git#ccf8df39804a3b405c239a7b2bdddceb77612911"
source = "git+https://gitlab.redox-os.org/redox-os/redoxer.git#a4c4dac4550bc234aa04e30efd4058daf8377678"
dependencies = [
"anyhow",
"dirs",
@ -1321,7 +1321,7 @@ version = "1.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [
"cfg-if 1.0.4",
"cfg-if 0.1.10",
"static_assertions",
]

View File

@ -1,7 +1,7 @@
use anyhow::anyhow;
use cookbook::WALK_DEPTH;
use cookbook::config::{get_config, init_config};
use cookbook::cook::package::{get_package_name, package_stage_paths, package_target};
use cookbook::cook::package as cook_package;
use cookbook::recipe::CookRecipe;
use pkg::{Package, PackageName, recipes};
use std::collections::{BTreeMap, HashMap};
@ -94,14 +94,11 @@ fn publish_packages(config: &CliConfig) -> anyhow::Result<()> {
continue;
};
let target = package_target(recipe);
let target_dir = cookbook_recipe.dir.join("target").join(&target);
let packages = cookbook_recipe.recipe.get_packages_list();
for package in packages {
let (stage_dir, pkgar_src, toml_src) = package_stage_paths(package, &target_dir);
let recipe_name = get_package_name(recipe.name(), package);
let target_dir = cookbook_recipe.target_dir();
for package in cookbook_recipe.recipe.get_packages_list() {
let (stage_dir, pkgar_src, toml_src) =
cook_package::package_stage_paths(package, &target_dir);
let recipe_name = recipe.without_host();
let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe_name));
let toml_dst = repo_path.join(format!("{}.toml", recipe_name));

View File

@ -195,11 +195,7 @@ pub fn build(
build_deps.push(CookRecipe::from_name(dep.clone()).map_err(|e| format!("{:?}", e))?);
}
for dependency in build_deps.iter() {
let pkgar = dependency
.dir
.join("target")
.join(dependency.target)
.join("stage.pkgar");
let (_, pkgar, _) = dependency.stage_paths();
if dependency.name.is_host() {
dep_host_pkgars.insert((dependency.name.clone(), pkgar));
} else {

View File

@ -150,12 +150,7 @@ pub fn package_toml(
};
let package = Package {
name: PackageName::new(if name.is_host() {
&name.as_str()["host:".len()..]
} else {
name.as_str()
})
.unwrap(),
name: name.without_host(),
version: package_version(recipe),
target: package_target(name).to_string(),
blake3: hash,

View File

@ -4,10 +4,10 @@ use std::{
path::PathBuf,
};
use anyhow::{Context, anyhow};
use anyhow::Context;
use pkg::{Package, PackageName};
use crate::{cook::fs::create_target_dir, recipe::CookRecipe};
use crate::recipe::CookRecipe;
pub enum WalkTreeEntry<'a> {
Built(&'a PathBuf, u64),
@ -53,10 +53,7 @@ pub fn walk_tree_entry(
}
};
let package_dir = &cook_recipe.dir;
let target_dir = create_target_dir(package_dir, redoxer::target()).map_err(|e| anyhow!(e))?;
let pkg_path = target_dir.join("stage.pkgar");
let pkg_toml = target_dir.join("stage.toml");
let (_, pkg_path, pkg_toml) = cook_recipe.stage_paths();
let deduped = visited.contains(package_name);
let entry = match (std::fs::metadata(&pkg_path), deduped) {

View File

@ -12,7 +12,7 @@ use serde::{
de::{Error as DeErrorT, value::Error as DeError},
};
use crate::{WALK_DEPTH, cook::package::package_target};
use crate::{WALK_DEPTH, cook::package as cook_package};
/// Specifies how to download the source for a recipe
#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)]
@ -225,14 +225,14 @@ impl Recipe {
impl CookRecipe {
pub fn new(name: PackageName, dir: PathBuf, mut recipe: Recipe) -> Result<Self, PackageError> {
let target = package_target(&name);
let target = cook_package::package_target(&name);
if name.is_host() {
let thisname = name.name();
let fn_map = |p: PackageName| {
if p.is_host() {
if p.name() == thisname { None } else { Some(p) }
} else {
Some(PackageName::new(format!("host:{}", p.as_str())).unwrap())
Some(p.with_host())
}
};
recipe.build.dependencies = recipe
@ -415,6 +415,19 @@ impl CookRecipe {
Ok(packages.into_iter().map(|p| p.name).collect())
}
/// returns stage dir, pkgar file and toml file.
pub fn stage_paths(&self) -> (PathBuf, PathBuf, PathBuf) {
let r = self.name.suffix().map(|p| OptionalPackageRecipe {
name: p.to_string(),
..Default::default()
});
cook_package::package_stage_paths(r.as_ref(), &self.target_dir())
}
pub fn target_dir(&self) -> PathBuf {
self.dir.join("target").join(self.target)
}
}
#[derive(Serialize, Deserialize)]