mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-04-19 19:14:53 +00:00
feat: extra profile flag for system profiles; disable building profiles that cannot be built
This commit is contained in:
parent
9a5b0638ea
commit
281dabf534
4 changed files with 44 additions and 34 deletions
|
@ -270,6 +270,8 @@ pub struct Profile {
|
|||
pub prefix: PathBuf,
|
||||
pub can_be_built: bool,
|
||||
pub editable: bool,
|
||||
#[serde(default)]
|
||||
pub is_system: bool,
|
||||
pub pull_on_build: bool,
|
||||
#[serde(default = "LighthouseDriver::default")]
|
||||
/// Only applicable for Monado
|
||||
|
@ -335,6 +337,7 @@ impl Default for Profile {
|
|||
uuid,
|
||||
autostart_command: None,
|
||||
skip_dependency_check: false,
|
||||
is_system: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use crate::{
|
||||
constants::APP_NAME,
|
||||
paths::{data_monado_path, data_opencomposite_path, SYSTEM_PREFIX},
|
||||
profile::{LighthouseDriver, Profile, ProfileFeatures, XRServiceType},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn system_monado_profile() -> Profile {
|
||||
let mut environment: HashMap<String, String> = HashMap::new();
|
||||
|
@ -15,9 +13,10 @@ pub fn system_monado_profile() -> Profile {
|
|||
environment.insert("XRT_CURATED_GUI".into(), "1".into());
|
||||
environment.insert("U_PACING_APP_USE_MIN_FRAME_PERIOD".into(), "1".into());
|
||||
Profile {
|
||||
is_system: true,
|
||||
prefix: SYSTEM_PREFIX.into(),
|
||||
uuid: "system-monado-default".into(),
|
||||
name: format!("System Monado - {name} Default", name = APP_NAME),
|
||||
name: "System Monado".into(),
|
||||
can_be_built: false,
|
||||
// does it apply to system profiles?
|
||||
xrservice_path: data_monado_path(),
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use crate::{
|
||||
constants::APP_NAME,
|
||||
paths::{data_opencomposite_path, data_wivrn_path, SYSTEM_PREFIX},
|
||||
profile::{Profile, ProfileFeatures, XRServiceType},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn system_wivrn_profile() -> Profile {
|
||||
let mut environment: HashMap<String, String> = HashMap::new();
|
||||
|
@ -12,9 +10,10 @@ pub fn system_wivrn_profile() -> Profile {
|
|||
environment.insert("XRT_CURATED_GUI".into(), "1".into());
|
||||
environment.insert("U_PACING_APP_USE_MIN_FRAME_PERIOD".into(), "1".into());
|
||||
Profile {
|
||||
is_system: true,
|
||||
prefix: SYSTEM_PREFIX.into(),
|
||||
uuid: "system-wivrn-default".into(),
|
||||
name: format!("System WiVRn - {name} Default", name = APP_NAME),
|
||||
name: "System WiVRn".into(),
|
||||
can_be_built: false,
|
||||
// does it apply to system profiles?
|
||||
xrservice_path: data_wivrn_path(),
|
||||
|
|
|
@ -419,33 +419,42 @@ impl AsyncComponent for App {
|
|||
let mut missing_deps = vec![];
|
||||
let mut jobs = VecDeque::<WorkerJob>::new();
|
||||
// profile per se can't be built, but we still need opencomp
|
||||
if profile.can_be_built {
|
||||
missing_deps.extend(match profile.xrservice_type {
|
||||
XRServiceType::Monado => get_missing_monado_deps(),
|
||||
XRServiceType::Wivrn => get_missing_wivrn_deps(),
|
||||
});
|
||||
if profile.features.libsurvive.enabled {
|
||||
missing_deps.extend(get_missing_libsurvive_deps());
|
||||
jobs.extend(get_build_libsurvive_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.openhmd.enabled {
|
||||
missing_deps.extend(get_missing_openhmd_deps());
|
||||
jobs.extend(get_build_openhmd_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.basalt.enabled {
|
||||
missing_deps.extend(get_missing_basalt_deps());
|
||||
jobs.extend(get_build_basalt_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.mercury_enabled {
|
||||
missing_deps.extend(get_missing_mercury_deps());
|
||||
jobs.extend(get_build_mercury_jobs(&profile));
|
||||
}
|
||||
jobs.extend(match profile.xrservice_type {
|
||||
XRServiceType::Monado => get_build_monado_jobs(&profile, clean_build),
|
||||
XRServiceType::Wivrn => get_build_wivrn_jobs(&profile, clean_build),
|
||||
});
|
||||
// no listed deps for opencomp
|
||||
if !profile.can_be_built {
|
||||
alert(
|
||||
"This profile cannot be built",
|
||||
if profile.is_system {
|
||||
Some("This is a system profile: it assumes you have everything already installed in your system using your distro package manager or other means.")
|
||||
} else {
|
||||
None
|
||||
},
|
||||
Some(&self.app_win.clone().upcast()),
|
||||
);
|
||||
return;
|
||||
}
|
||||
missing_deps.extend(match profile.xrservice_type {
|
||||
XRServiceType::Monado => get_missing_monado_deps(),
|
||||
XRServiceType::Wivrn => get_missing_wivrn_deps(),
|
||||
});
|
||||
if profile.features.libsurvive.enabled {
|
||||
missing_deps.extend(get_missing_libsurvive_deps());
|
||||
jobs.extend(get_build_libsurvive_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.openhmd.enabled {
|
||||
missing_deps.extend(get_missing_openhmd_deps());
|
||||
jobs.extend(get_build_openhmd_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.basalt.enabled {
|
||||
missing_deps.extend(get_missing_basalt_deps());
|
||||
jobs.extend(get_build_basalt_jobs(&profile, clean_build));
|
||||
}
|
||||
if profile.features.mercury_enabled {
|
||||
missing_deps.extend(get_missing_mercury_deps());
|
||||
jobs.extend(get_build_mercury_jobs(&profile));
|
||||
}
|
||||
jobs.extend(match profile.xrservice_type {
|
||||
XRServiceType::Monado => get_build_monado_jobs(&profile, clean_build),
|
||||
XRServiceType::Wivrn => get_build_wivrn_jobs(&profile, clean_build),
|
||||
});
|
||||
jobs.extend(get_build_opencomposite_jobs(&profile, clean_build));
|
||||
if !(self.skip_depcheck || profile.skip_dependency_check || missing_deps.is_empty())
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue