mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-17 23:44:17 +08:00
Code simplification
This commit is contained in:
parent
d9af4e385a
commit
3ae5da8d13
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -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",
|
||||
]
|
||||
|
||||
|
||||
@ -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));
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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)]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user