mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-17 15:34:18 +08:00
Merge branch 'repo-lock' into 'master'
Don't recurse lock rules, fix binary repo cross arch See merge request redox-os/redox!2130
This commit is contained in:
commit
4d30dceba0
@ -583,20 +583,16 @@ fn parse_args(args: Vec<String>) -> Result<(CliConfig, CliCommand, Vec<CookRecip
|
|||||||
};
|
};
|
||||||
let rule = recipe_lock.fsrule.as_ref().unwrap();
|
let rule = recipe_lock.fsrule.as_ref().unwrap();
|
||||||
special_rules.insert(recipe_name.clone(), rule.to_string());
|
special_rules.insert(recipe_name.clone(), rule.to_string());
|
||||||
if rule == "source" || rule == "local" {
|
// lock rules does not recurse as it's done already in the file
|
||||||
source_names.push(recipe_name);
|
|
||||||
} else if rule == "binary" {
|
|
||||||
binary_names.push(recipe_name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (recipe_name_str, recipe_config) in conf.packages.iter() {
|
for (recipe_name_str, recipe_config) in conf.packages.iter() {
|
||||||
let Ok(recipe_name) = PackageName::new(recipe_name_str) else {
|
let Ok(recipe_name) = PackageName::new(recipe_name_str) else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
if special_rules.contains_key(&recipe_name) {
|
|
||||||
continue;
|
let rule = if let Some(rule) = special_rules.get(&recipe_name) {
|
||||||
}
|
rule.as_str()
|
||||||
let rule = if let PackageConfig::Build(rule) = recipe_config {
|
} else if let PackageConfig::Build(rule) = recipe_config {
|
||||||
special_rules.insert(recipe_name.clone(), rule.to_string());
|
special_rules.insert(recipe_name.clone(), rule.to_string());
|
||||||
rule
|
rule
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -39,27 +39,38 @@ fn init_binary_repo() -> (RepoManager, Repository) {
|
|||||||
let callback = Rc::new(RefCell::new(SilentCallback::new()));
|
let callback = Rc::new(RefCell::new(SilentCallback::new()));
|
||||||
let download_backend = CurlBackend::new().expect("Curl not found");
|
let download_backend = CurlBackend::new().expect("Curl not found");
|
||||||
let mut repo = RepoManager::new(callback, Box::new(download_backend));
|
let mut repo = RepoManager::new(callback, Box::new(download_backend));
|
||||||
|
let target = redoxer::target();
|
||||||
repo.add_remote(crate::REMOTE_PKG_SOURCE, redoxer::target())
|
repo.add_remote(crate::REMOTE_PKG_SOURCE, target)
|
||||||
.expect("Unable to add remote");
|
.expect("Unable to add remote");
|
||||||
|
|
||||||
let repo_path = PathBuf::from("build/remotes");
|
let repo_path = PathBuf::from("build/remotes");
|
||||||
repo.set_download_path(repo_path.clone());
|
repo.set_download_path(repo_path.clone());
|
||||||
repo.sync_keys().expect("Unable to sync keys");
|
repo.sync_keys().expect("Unable to sync keys");
|
||||||
|
|
||||||
let repo_toml = load_cached_repo(&repo_path.join("repo.toml")).unwrap_or_else(|| {
|
let repo_toml = load_cached_repo(&repo_path.join(format!("{target}_repo.toml")))
|
||||||
let (toml_str, _) = repo
|
.unwrap_or_else(|| {
|
||||||
.get_package_toml(&PackageName::new("repo").unwrap())
|
let repo = download_repo(&repo, repo_path)
|
||||||
.expect("Failed to fetch repo.toml");
|
.map_err(|e| {
|
||||||
let repo = Repository::from_toml(&toml_str).expect("Fetched repo.toml is invalid");
|
eprintln!(
|
||||||
fs::serialize_and_write(&repo_path.join("repo.toml"), &repo).expect("Unable to save repo");
|
"Unable to load server repo.toml, all recipes will build from source: {e}"
|
||||||
repo
|
);
|
||||||
});
|
e
|
||||||
|
})
|
||||||
|
.unwrap_or_default();
|
||||||
|
repo
|
||||||
|
});
|
||||||
// reset here to not clobber pty
|
// reset here to not clobber pty
|
||||||
repo.callback = Rc::new(RefCell::new(PlainCallback::new()));
|
repo.callback = Rc::new(RefCell::new(PlainCallback::new()));
|
||||||
(repo, repo_toml)
|
(repo, repo_toml)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn download_repo(repo: &RepoManager, repo_path: PathBuf) -> crate::Result<Repository> {
|
||||||
|
let (toml_str, _) = repo.get_package_toml(&PackageName::new("repo").unwrap())?;
|
||||||
|
let repo = Repository::from_toml(&toml_str)?;
|
||||||
|
fs::serialize_and_write(&repo_path.join("repo.toml"), &repo)?;
|
||||||
|
Ok(repo)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_binary_repo() -> (RepoManager, Repository) {
|
pub fn get_binary_repo() -> (RepoManager, Repository) {
|
||||||
BINARY_REPO.with(|cell| {
|
BINARY_REPO.with(|cell| {
|
||||||
let mut opt = cell.borrow_mut();
|
let mut opt = cell.borrow_mut();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user