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();
|
||||
special_rules.insert(recipe_name.clone(), rule.to_string());
|
||||
if rule == "source" || rule == "local" {
|
||||
source_names.push(recipe_name);
|
||||
} else if rule == "binary" {
|
||||
binary_names.push(recipe_name);
|
||||
}
|
||||
// lock rules does not recurse as it's done already in the file
|
||||
}
|
||||
for (recipe_name_str, recipe_config) in conf.packages.iter() {
|
||||
let Ok(recipe_name) = PackageName::new(recipe_name_str) else {
|
||||
continue;
|
||||
};
|
||||
if special_rules.contains_key(&recipe_name) {
|
||||
continue;
|
||||
}
|
||||
let rule = if let PackageConfig::Build(rule) = recipe_config {
|
||||
|
||||
let rule = if let Some(rule) = special_rules.get(&recipe_name) {
|
||||
rule.as_str()
|
||||
} else if let PackageConfig::Build(rule) = recipe_config {
|
||||
special_rules.insert(recipe_name.clone(), rule.to_string());
|
||||
rule
|
||||
} else {
|
||||
|
||||
@ -39,27 +39,38 @@ fn init_binary_repo() -> (RepoManager, Repository) {
|
||||
let callback = Rc::new(RefCell::new(SilentCallback::new()));
|
||||
let download_backend = CurlBackend::new().expect("Curl not found");
|
||||
let mut repo = RepoManager::new(callback, Box::new(download_backend));
|
||||
|
||||
repo.add_remote(crate::REMOTE_PKG_SOURCE, redoxer::target())
|
||||
let target = redoxer::target();
|
||||
repo.add_remote(crate::REMOTE_PKG_SOURCE, target)
|
||||
.expect("Unable to add remote");
|
||||
|
||||
let repo_path = PathBuf::from("build/remotes");
|
||||
repo.set_download_path(repo_path.clone());
|
||||
repo.sync_keys().expect("Unable to sync keys");
|
||||
|
||||
let repo_toml = load_cached_repo(&repo_path.join("repo.toml")).unwrap_or_else(|| {
|
||||
let (toml_str, _) = repo
|
||||
.get_package_toml(&PackageName::new("repo").unwrap())
|
||||
.expect("Failed to fetch repo.toml");
|
||||
let repo = Repository::from_toml(&toml_str).expect("Fetched repo.toml is invalid");
|
||||
fs::serialize_and_write(&repo_path.join("repo.toml"), &repo).expect("Unable to save repo");
|
||||
repo
|
||||
});
|
||||
let repo_toml = load_cached_repo(&repo_path.join(format!("{target}_repo.toml")))
|
||||
.unwrap_or_else(|| {
|
||||
let repo = download_repo(&repo, repo_path)
|
||||
.map_err(|e| {
|
||||
eprintln!(
|
||||
"Unable to load server repo.toml, all recipes will build from source: {e}"
|
||||
);
|
||||
e
|
||||
})
|
||||
.unwrap_or_default();
|
||||
repo
|
||||
});
|
||||
// reset here to not clobber pty
|
||||
repo.callback = Rc::new(RefCell::new(PlainCallback::new()));
|
||||
(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) {
|
||||
BINARY_REPO.with(|cell| {
|
||||
let mut opt = cell.borrow_mut();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user