mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-08-03 06:38:52 +00:00
feat: option to dirty or clean build profile
This commit is contained in:
parent
cefdf35734
commit
a71a0fd291
6 changed files with 46 additions and 28 deletions
|
@ -4,9 +4,9 @@ use crate::{
|
||||||
profile::Profile,
|
profile::Profile,
|
||||||
runner::Runner,
|
runner::Runner,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::{collections::HashMap, path::Path};
|
||||||
|
|
||||||
pub fn get_build_libsurvive_runners(profile: &Profile) -> Vec<Runner> {
|
pub fn get_build_libsurvive_runners(profile: &Profile, clean_build: bool) -> Vec<Runner> {
|
||||||
let mut runners: Vec<Runner> = vec![];
|
let mut runners: Vec<Runner> = vec![];
|
||||||
let git = Git {
|
let git = Git {
|
||||||
repo: match profile.features.libsurvive.repo.as_ref() {
|
repo: match profile.features.libsurvive.repo.as_ref() {
|
||||||
|
@ -24,7 +24,6 @@ pub fn get_build_libsurvive_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
"{}/build",
|
"{}/build",
|
||||||
profile.features.libsurvive.path.as_ref().unwrap()
|
profile.features.libsurvive.path.as_ref().unwrap()
|
||||||
);
|
);
|
||||||
rm_rf(&build_dir);
|
|
||||||
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
||||||
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
||||||
cmake_vars.insert("ENABLE_api_example".into(), "OFF".into());
|
cmake_vars.insert("ENABLE_api_example".into(), "OFF".into());
|
||||||
|
@ -39,9 +38,12 @@ pub fn get_build_libsurvive_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
env: None,
|
env: None,
|
||||||
vars: Some(cmake_vars),
|
vars: Some(cmake_vars),
|
||||||
source_dir: profile.features.libsurvive.path.as_ref().unwrap().clone(),
|
source_dir: profile.features.libsurvive.path.as_ref().unwrap().clone(),
|
||||||
build_dir,
|
build_dir: build_dir.clone(),
|
||||||
};
|
};
|
||||||
runners.push(cmake.get_prepare_runner());
|
if !Path::new(&build_dir).is_dir() || clean_build {
|
||||||
|
rm_rf(&build_dir);
|
||||||
|
runners.push(cmake.get_prepare_runner());
|
||||||
|
}
|
||||||
runners.push(cmake.get_build_runner());
|
runners.push(cmake.get_build_runner());
|
||||||
runners.push(cmake.get_install_runner());
|
runners.push(cmake.get_install_runner());
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@ use crate::{
|
||||||
profile::Profile,
|
profile::Profile,
|
||||||
runner::Runner,
|
runner::Runner,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::{collections::HashMap, path::Path};
|
||||||
|
|
||||||
pub fn get_build_monado_runners(profile: &Profile) -> Vec<Runner> {
|
pub fn get_build_monado_runners(profile: &Profile, clean_build: bool) -> Vec<Runner> {
|
||||||
let mut runners: Vec<Runner> = vec![];
|
let mut runners: Vec<Runner> = vec![];
|
||||||
let git = Git {
|
let git = Git {
|
||||||
repo: match profile.xrservice_repo.as_ref() {
|
repo: match profile.xrservice_repo.as_ref() {
|
||||||
|
@ -21,7 +21,6 @@ pub fn get_build_monado_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let build_dir = format!("{}/build", profile.xrservice_path);
|
let build_dir = format!("{}/build", profile.xrservice_path);
|
||||||
rm_rf(&build_dir);
|
|
||||||
let mut env: HashMap<String, String> = HashMap::new();
|
let mut env: HashMap<String, String> = HashMap::new();
|
||||||
env.insert(
|
env.insert(
|
||||||
"PKG_CONFIG_PATH".into(),
|
"PKG_CONFIG_PATH".into(),
|
||||||
|
@ -45,9 +44,12 @@ pub fn get_build_monado_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
env: Some(env),
|
env: Some(env),
|
||||||
vars: Some(cmake_vars),
|
vars: Some(cmake_vars),
|
||||||
source_dir: profile.xrservice_path.clone(),
|
source_dir: profile.xrservice_path.clone(),
|
||||||
build_dir,
|
build_dir: build_dir.clone(),
|
||||||
};
|
};
|
||||||
runners.push(cmake.get_prepare_runner());
|
if !Path::new(&build_dir).is_dir() || clean_build {
|
||||||
|
rm_rf(&build_dir);
|
||||||
|
runners.push(cmake.get_prepare_runner());
|
||||||
|
}
|
||||||
runners.push(cmake.get_build_runner());
|
runners.push(cmake.get_build_runner());
|
||||||
runners.push(cmake.get_install_runner());
|
runners.push(cmake.get_install_runner());
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@ use crate::{
|
||||||
profile::Profile,
|
profile::Profile,
|
||||||
runner::Runner,
|
runner::Runner,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::{collections::HashMap, path::Path};
|
||||||
|
|
||||||
pub fn get_build_opencomposite_runners(profile: &Profile) -> Vec<Runner> {
|
pub fn get_build_opencomposite_runners(profile: &Profile, clean_build: bool) -> Vec<Runner> {
|
||||||
let mut runners: Vec<Runner> = vec![];
|
let mut runners: Vec<Runner> = vec![];
|
||||||
let git = Git {
|
let git = Git {
|
||||||
repo: match profile.opencomposite_repo.as_ref() {
|
repo: match profile.opencomposite_repo.as_ref() {
|
||||||
|
@ -21,16 +21,18 @@ pub fn get_build_opencomposite_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let build_dir = format!("{}/build", profile.opencomposite_path);
|
let build_dir = format!("{}/build", profile.opencomposite_path);
|
||||||
rm_rf(&build_dir);
|
|
||||||
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
||||||
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
||||||
let cmake = Cmake {
|
let cmake = Cmake {
|
||||||
env: None,
|
env: None,
|
||||||
vars: Some(cmake_vars),
|
vars: Some(cmake_vars),
|
||||||
source_dir: profile.opencomposite_path.clone(),
|
source_dir: profile.opencomposite_path.clone(),
|
||||||
build_dir,
|
build_dir: build_dir.clone(),
|
||||||
};
|
};
|
||||||
runners.push(cmake.get_prepare_runner());
|
if !Path::new(&build_dir).is_dir() || clean_build {
|
||||||
|
rm_rf(&build_dir);
|
||||||
|
runners.push(cmake.get_prepare_runner());
|
||||||
|
}
|
||||||
runners.push(cmake.get_build_runner());
|
runners.push(cmake.get_build_runner());
|
||||||
|
|
||||||
runners
|
runners
|
||||||
|
|
|
@ -4,9 +4,9 @@ use crate::{
|
||||||
profile::Profile,
|
profile::Profile,
|
||||||
runner::Runner,
|
runner::Runner,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::{collections::HashMap, path::Path};
|
||||||
|
|
||||||
pub fn get_build_wivrn_runners(profile: &Profile) -> Vec<Runner> {
|
pub fn get_build_wivrn_runners(profile: &Profile, clean_build: bool) -> Vec<Runner> {
|
||||||
let mut runners: Vec<Runner> = vec![];
|
let mut runners: Vec<Runner> = vec![];
|
||||||
let git = Git {
|
let git = Git {
|
||||||
repo: match profile.xrservice_repo.as_ref() {
|
repo: match profile.xrservice_repo.as_ref() {
|
||||||
|
@ -21,7 +21,6 @@ pub fn get_build_wivrn_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let build_dir = format!("{}/build", profile.xrservice_path);
|
let build_dir = format!("{}/build", profile.xrservice_path);
|
||||||
rm_rf(&build_dir);
|
|
||||||
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
let mut cmake_vars: HashMap<String, String> = HashMap::new();
|
||||||
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "Release".into());
|
||||||
cmake_vars.insert("XRT_HAVE_SYSTEM_CJSON".into(), "NO".into());
|
cmake_vars.insert("XRT_HAVE_SYSTEM_CJSON".into(), "NO".into());
|
||||||
|
@ -32,9 +31,12 @@ pub fn get_build_wivrn_runners(profile: &Profile) -> Vec<Runner> {
|
||||||
env: None,
|
env: None,
|
||||||
vars: Some(cmake_vars),
|
vars: Some(cmake_vars),
|
||||||
source_dir: profile.xrservice_path.clone(),
|
source_dir: profile.xrservice_path.clone(),
|
||||||
build_dir,
|
build_dir: build_dir.clone(),
|
||||||
};
|
};
|
||||||
runners.push(cmake.get_prepare_runner());
|
if !Path::new(&build_dir).is_dir() || clean_build {
|
||||||
|
rm_rf(&build_dir);
|
||||||
|
runners.push(cmake.get_prepare_runner());
|
||||||
|
}
|
||||||
runners.push(cmake.get_build_runner());
|
runners.push(cmake.get_build_runner());
|
||||||
runners.push(cmake.get_install_runner());
|
runners.push(cmake.get_install_runner());
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ pub struct App {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Msg {
|
pub enum Msg {
|
||||||
ClockTicking,
|
ClockTicking,
|
||||||
BuildProfile,
|
BuildProfile(bool),
|
||||||
EnableDebugViewChanged(bool),
|
EnableDebugViewChanged(bool),
|
||||||
DoStartStopXRService,
|
DoStartStopXRService,
|
||||||
RestartXRService,
|
RestartXRService,
|
||||||
|
@ -357,7 +357,7 @@ impl SimpleComponent for App {
|
||||||
}
|
}
|
||||||
self.start_xrservice();
|
self.start_xrservice();
|
||||||
}
|
}
|
||||||
Msg::BuildProfile => {
|
Msg::BuildProfile(clean_build) => {
|
||||||
let profile = self.get_selected_profile();
|
let profile = self.get_selected_profile();
|
||||||
let mut missing_deps = vec![];
|
let mut missing_deps = vec![];
|
||||||
let mut runners: Vec<Runner> = vec![];
|
let mut runners: Vec<Runner> = vec![];
|
||||||
|
@ -369,7 +369,7 @@ impl SimpleComponent for App {
|
||||||
});
|
});
|
||||||
if profile.features.libsurvive.enabled {
|
if profile.features.libsurvive.enabled {
|
||||||
missing_deps.extend(get_missing_libsurvive_deps());
|
missing_deps.extend(get_missing_libsurvive_deps());
|
||||||
runners.extend(get_build_libsurvive_runners(&profile));
|
runners.extend(get_build_libsurvive_runners(&profile, clean_build));
|
||||||
}
|
}
|
||||||
if profile.features.basalt.enabled {
|
if profile.features.basalt.enabled {
|
||||||
missing_deps.extend(get_missing_basalt_deps());
|
missing_deps.extend(get_missing_basalt_deps());
|
||||||
|
@ -380,12 +380,12 @@ impl SimpleComponent for App {
|
||||||
runners.push(get_build_mercury_runner(&profile));
|
runners.push(get_build_mercury_runner(&profile));
|
||||||
}
|
}
|
||||||
runners.extend(match profile.xrservice_type {
|
runners.extend(match profile.xrservice_type {
|
||||||
XRServiceType::Monado => get_build_monado_runners(&profile),
|
XRServiceType::Monado => get_build_monado_runners(&profile, clean_build),
|
||||||
XRServiceType::Wivrn => get_build_wivrn_runners(&profile),
|
XRServiceType::Wivrn => get_build_wivrn_runners(&profile, clean_build),
|
||||||
});
|
});
|
||||||
// no listed deps for opencomp
|
// no listed deps for opencomp
|
||||||
}
|
}
|
||||||
runners.extend(get_build_opencomposite_runners(&profile));
|
runners.extend(get_build_opencomposite_runners(&profile, clean_build));
|
||||||
if !missing_deps.is_empty() {
|
if !missing_deps.is_empty() {
|
||||||
missing_deps.sort_unstable();
|
missing_deps.sort_unstable();
|
||||||
missing_deps.dedup(); // dedup only works if sorted, hence the above
|
missing_deps.dedup(); // dedup only works if sorted, hence the above
|
||||||
|
@ -598,7 +598,14 @@ impl SimpleComponent for App {
|
||||||
let buildprofile_action = {
|
let buildprofile_action = {
|
||||||
let this_sender = sender.clone();
|
let this_sender = sender.clone();
|
||||||
RelmAction::<BuildProfileAction>::new_stateless(move |_| {
|
RelmAction::<BuildProfileAction>::new_stateless(move |_| {
|
||||||
this_sender.input_sender().emit(Msg::BuildProfile);
|
this_sender.input_sender().emit(Msg::BuildProfile(false));
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
let buildprofileclean_action = {
|
||||||
|
let this_sender = sender.clone();
|
||||||
|
RelmAction::<BuildProfileCleanAction>::new_stateless(move |_| {
|
||||||
|
this_sender.input_sender().emit(Msg::BuildProfile(true));
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -638,6 +645,7 @@ impl SimpleComponent for App {
|
||||||
actions.add_action(about_action);
|
actions.add_action(about_action);
|
||||||
actions.add_action(quit_action);
|
actions.add_action(quit_action);
|
||||||
actions.add_action(buildprofile_action);
|
actions.add_action(buildprofile_action);
|
||||||
|
actions.add_action(buildprofileclean_action);
|
||||||
actions.add_action(debug_view_toggle_action);
|
actions.add_action(debug_view_toggle_action);
|
||||||
actions.add_action(libsurvive_setup_action);
|
actions.add_action(libsurvive_setup_action);
|
||||||
|
|
||||||
|
@ -665,6 +673,7 @@ impl SimpleComponent for App {
|
||||||
new_action_group!(pub AppActionGroup, "win");
|
new_action_group!(pub AppActionGroup, "win");
|
||||||
new_stateless_action!(pub AboutAction, AppActionGroup, "about");
|
new_stateless_action!(pub AboutAction, AppActionGroup, "about");
|
||||||
new_stateless_action!(pub BuildProfileAction, AppActionGroup, "buildprofile");
|
new_stateless_action!(pub BuildProfileAction, AppActionGroup, "buildprofile");
|
||||||
|
new_stateless_action!(pub BuildProfileCleanAction, AppActionGroup, "buildprofileclean");
|
||||||
new_stateless_action!(pub LibsurviveSetupAction, AppActionGroup, "libsurvivesetup");
|
new_stateless_action!(pub LibsurviveSetupAction, AppActionGroup, "libsurvivesetup");
|
||||||
new_stateless_action!(pub QuitAction, AppActionGroup, "quit");
|
new_stateless_action!(pub QuitAction, AppActionGroup, "quit");
|
||||||
new_stateful_action!(pub DebugViewToggleAction, AppActionGroup, "debugviewtoggle", (), bool);
|
new_stateful_action!(pub DebugViewToggleAction, AppActionGroup, "debugviewtoggle", (), bool);
|
||||||
|
|
|
@ -6,7 +6,7 @@ use crate::config::Config;
|
||||||
use crate::constants::APP_NAME;
|
use crate::constants::APP_NAME;
|
||||||
use crate::profile::{Profile, XRServiceType};
|
use crate::profile::{Profile, XRServiceType};
|
||||||
use crate::ui::app::{
|
use crate::ui::app::{
|
||||||
AboutAction, BuildProfileAction, DebugViewToggleAction, LibsurviveSetupAction,
|
AboutAction, BuildProfileAction, DebugViewToggleAction, LibsurviveSetupAction, BuildProfileCleanAction,
|
||||||
};
|
};
|
||||||
use crate::ui::profile_editor::ProfileEditorInit;
|
use crate::ui::profile_editor::ProfileEditorInit;
|
||||||
use crate::xr_devices::XRDevices;
|
use crate::xr_devices::XRDevices;
|
||||||
|
@ -87,6 +87,7 @@ impl SimpleComponent for MainView {
|
||||||
// value inside action is ignored
|
// value inside action is ignored
|
||||||
"_Debug View" => DebugViewToggleAction,
|
"_Debug View" => DebugViewToggleAction,
|
||||||
"_Build Profile" => BuildProfileAction,
|
"_Build Profile" => BuildProfileAction,
|
||||||
|
"C_lean Build Profile" => BuildProfileCleanAction,
|
||||||
"_Calibrate Lighthouses" => LibsurviveSetupAction,
|
"_Calibrate Lighthouses" => LibsurviveSetupAction,
|
||||||
},
|
},
|
||||||
section! {
|
section! {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue