diff --git a/scripts/build_basalt.sh b/scripts/build_basalt.sh new file mode 100644 index 0000000..f8496d2 --- /dev/null +++ b/scripts/build_basalt.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -ev + +echo "Basalt is currently unsupported" +exit 1 +# +# REPO_DIR=$1 +# +# PREFIX=$2 +# +# if [[ -z $REPO_DIR ]] || [[ -z $PREFIX ]]; then +# echo "Usage: $0 REPO_DIR PREFIX" +# exit 1 +# fi +# +# "$(dirname -- "$0")/_clone_or_pull.sh" "https://github.com/cntools/libsurvive" "$REPO_DIR" +# +# cd "$REPO_DIR" +# mkdir -p build +# cd build diff --git a/scripts/meson.build b/scripts/meson.build index 0b36eb6..0a44d0f 100644 --- a/scripts/meson.build +++ b/scripts/meson.build @@ -1,4 +1,5 @@ install_data('_clone_or_pull.sh', install_dir: pkgdatadir / 'scripts') +install_data('build_basalt.sh', install_dir: pkgdatadir / 'scripts') install_data('build_libsurvive.sh', install_dir: pkgdatadir / 'scripts') install_data('build_monado.sh', install_dir: pkgdatadir / 'scripts') install_data('build_opencomposite.sh', install_dir: pkgdatadir / 'scripts') diff --git a/src/builders/build_basalt.rs b/src/builders/build_basalt.rs new file mode 100644 index 0000000..5c5c8fc --- /dev/null +++ b/src/builders/build_basalt.rs @@ -0,0 +1,17 @@ +use expect_dialog::ExpectDialog; + +use crate::{constants::PKG_DATA_DIR, profile::Profile, runner::Runner}; + +pub fn get_build_basalt_runner(profile: Profile) -> Runner { + let runner = Runner::new( + None, + format!("{sysdata}/scripts/build_basalt.sh", sysdata = PKG_DATA_DIR), + vec![ + profile + .basalt_path + .expect_dialog("Missing basalt path for given profile"), + profile.prefix, + ], + ); + runner +} diff --git a/src/builders/mod.rs b/src/builders/mod.rs index 8543e4d..fd107dd 100644 --- a/src/builders/mod.rs +++ b/src/builders/mod.rs @@ -1,3 +1,4 @@ pub mod build_monado; pub mod build_libsurvive; pub mod build_opencomposite; +pub mod build_basalt; diff --git a/src/dependencies/basalt_deps.rs b/src/dependencies/basalt_deps.rs new file mode 100644 index 0000000..93b5be3 --- /dev/null +++ b/src/dependencies/basalt_deps.rs @@ -0,0 +1,85 @@ +use crate::depcheck::{check_dependencies, Dependency, DependencyCheckResult, DepType}; + +fn basalt_deps() -> Vec { + vec![ + Dependency { + name: "boost".into(), + dep_type: DepType::SharedObject, + // just one of the many shared objects boost provides + filename: "libboost_system.so".into(), + }, + Dependency { + name: "boost-dev".into(), + dep_type: DepType::Include, + // just one of the many headers boost provides + filename: "boost/filesystem.hpp".into(), + }, + Dependency { + name: "bzip2".into(), + dep_type: DepType::SharedObject, + filename: "libbz2.so".into(), + }, + Dependency { + name: "bzip2-dev".into(), + dep_type: DepType::Include, + filename: "bzlib.h".into(), + }, + Dependency { + name: "eigen".into(), + dep_type: DepType::Include, + filename: "eigen3/Eigen/src/Core/EigenBase.h".into(), + }, + Dependency { + name: "fmt".into(), + dep_type: DepType::SharedObject, + filename: "libfmt.so".into(), + }, + Dependency { + name: "fmt-dev".into(), + dep_type: DepType::Include, + filename: "fmt/core.h".into(), + }, + Dependency { + name: "glew".into(), + dep_type: DepType::SharedObject, + filename: "libGLEW.so".into(), + }, + Dependency { + name: "glew-dev".into(), + dep_type: DepType::Include, + filename: "GL/glew.h".into(), + }, + Dependency { + name: "gtest".into(), + dep_type: DepType::Include, + filename: "gtest/gtest.h".into(), + }, + Dependency { + name: "opencv".into(), + dep_type: DepType::Include, + filename: "opencv4/opencv2/core/hal/hal.hpp".into(), + }, + Dependency { + name: "python3".into(), + dep_type: DepType::Executable, + filename: "python3".into(), + }, + Dependency { + name: "bc".into(), + dep_type: DepType::Executable, + filename: "bc".into(), + }, + ] +} + +pub fn check_basalt_deps() -> Vec { + check_dependencies(basalt_deps()) +} + +pub fn get_missing_basalt_deps() -> Vec { + check_basalt_deps() + .iter() + .filter(|res| !res.found) + .map(|res| res.dependency.clone()) + .collect() +} diff --git a/src/dependencies/mod.rs b/src/dependencies/mod.rs index f73b0eb..85eef44 100644 --- a/src/dependencies/mod.rs +++ b/src/dependencies/mod.rs @@ -1,2 +1,3 @@ pub mod monado_deps; pub mod libsurvive_deps; +pub mod basalt_deps; diff --git a/src/ui/app.rs b/src/ui/app.rs index 36ef40c..3e1f795 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -3,11 +3,13 @@ use super::build_window::{BuildStatus, BuildWindow}; use super::debug_view::{DebugView, DebugViewMsg}; use super::libsurvive_setup_window::LibsurviveSetupWindow; use super::main_view::MainViewMsg; +use crate::builders::build_basalt::get_build_basalt_runner; use crate::builders::build_libsurvive::get_build_libsurvive_runner; use crate::builders::build_monado::get_build_monado_runner; use crate::builders::build_opencomposite::get_build_opencomposite_runner; use crate::config::{get_config, save_config, Config}; use crate::constants::APP_NAME; +use crate::dependencies::basalt_deps::get_missing_basalt_deps; use crate::dependencies::libsurvive_deps::get_missing_libsurvive_deps; use crate::dependencies::monado_deps::get_missing_monado_deps; use crate::file_builders::active_runtime_json::{ @@ -260,10 +262,10 @@ impl SimpleComponent for App { missing_deps.extend(get_missing_libsurvive_deps()); runners.push(get_build_libsurvive_runner(profile.clone())); } - // if profile.basalt_enabled { - // missing_deps.extend(get_missing_basalt_deps()); - // runners.push(get_build_basalt_runner(profile.clone())); - // } + if profile.basalt_enabled { + missing_deps.extend(get_missing_basalt_deps()); + runners.push(get_build_basalt_runner(profile.clone())); + } // if profile.mercury_enabled { // missing_deps.extend(get_missing_mercury_deps()); // runners.push(get_build_mercury_runner(profile.clone()));