mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 12:11:56 +00:00
fixes self-dependency bug (#486)
* fixes self-dependency bug * fixes build errors, hopefully memory usage isn't garbage * reduces allocations * spurious import
This commit is contained in:
committed by
GitHub
parent
da9d22de66
commit
3dc11380eb
@@ -1,4 +1,4 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
@@ -100,13 +100,33 @@ pub async fn check_all(ctx: &RpcContext) -> Result<(), Error> {
|
|||||||
})?;
|
})?;
|
||||||
model.lock(&mut db, LockType::Write).await;
|
model.lock(&mut db, LockType::Write).await;
|
||||||
if let Some(installed) = model.installed().check(&mut db).await? {
|
if let Some(installed) = model.installed().check(&mut db).await? {
|
||||||
|
let listed_deps = installed
|
||||||
|
.clone()
|
||||||
|
.manifest()
|
||||||
|
.dependencies()
|
||||||
|
.get(&mut db, false)
|
||||||
|
.await?
|
||||||
|
.to_owned()
|
||||||
|
.0
|
||||||
|
.into_iter()
|
||||||
|
.map(|x| x.0)
|
||||||
|
.collect::<HashSet<PackageId>>();
|
||||||
status_manifest.push((
|
status_manifest.push((
|
||||||
installed.clone().status(),
|
installed.clone().status(),
|
||||||
Arc::new(installed.clone().manifest().get(&mut db, true).await?),
|
Arc::new(installed.clone().manifest().get(&mut db, true).await?),
|
||||||
));
|
));
|
||||||
status_deps.push((
|
status_deps.push((
|
||||||
installed.clone().status(),
|
installed.clone().status(),
|
||||||
Arc::new(installed.current_dependencies().get(&mut db, true).await?),
|
Arc::new({
|
||||||
|
installed
|
||||||
|
.current_dependencies()
|
||||||
|
.get(&mut db, true)
|
||||||
|
.await?
|
||||||
|
.to_owned()
|
||||||
|
.into_iter()
|
||||||
|
.filter(|(id, _)| listed_deps.contains(id))
|
||||||
|
.collect::<IndexMap<PackageId, CurrentDependencyInfo>>()
|
||||||
|
}),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,7 +180,7 @@ pub async fn check_all(ctx: &RpcContext) -> Result<(), Error> {
|
|||||||
async fn dependency_status<Db: DbHandle>(
|
async fn dependency_status<Db: DbHandle>(
|
||||||
statuses: Arc<HashMap<PackageId, MainStatus>>,
|
statuses: Arc<HashMap<PackageId, MainStatus>>,
|
||||||
status_model: StatusModel,
|
status_model: StatusModel,
|
||||||
current_deps: Arc<ModelData<IndexMap<PackageId, CurrentDependencyInfo>>>,
|
current_deps: Arc<IndexMap<PackageId, CurrentDependencyInfo>>,
|
||||||
mut db: Db,
|
mut db: Db,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let mut status = status_model.get_mut(&mut db).await?;
|
let mut status = status_model.get_mut(&mut db).await?;
|
||||||
|
|||||||
Reference in New Issue
Block a user