Skip to main content

gammalooprs/
initialisation.rs

1use color_eyre::{Result, config::HookBuilder};
2use spenso::{network::library::symbolic::ETS, symbolica_init::in_symbolica_initializer};
3use symbolica::{activate_oem_license, initialize};
4
5use crate::numerator::ufo::UFO;
6use crate::utils::{GS, init_vakint};
7static INITIALISED: std::sync::Once = std::sync::Once::new();
8
9initialize!(|| {
10    in_symbolica_initializer(|| {
11        let _ = ETS.force_in_initializer().delta;
12        let _ = ETS.force_in_initializer().metric;
13        let _ = GS.force_in_initializer();
14        let _ = UFO.force_in_initializer();
15    });
16});
17
18pub fn initialise() -> Result<()> {
19    INITIALISED.call_once(|| {
20        if option_env!("NO_SYMBOLICA_OEM_LICENSE").is_none() {
21            activate_oem_license!("SYMBOLICA_OEM_KEY_ba2512eb");
22        };
23
24        let (panic, eyre) = HookBuilder::default()
25            .capture_span_trace_by_default(cfg!(debug_assertions))
26            .into_hooks();
27        // println!("Installing panic and eyre hooks");
28        panic.install();
29        // Tests and embedded entry points may have already installed an eyre hook.
30        let _ = eyre.install();
31
32        // println!("Setting up interrupt handler");
33        crate::set_interrupt_handler();
34        // println!("Initialize_reps");
35    });
36    // println!("Initializing Vakint");
37    init_vakint()?;
38    Ok(())
39}
40
41pub fn test_initialise() -> Result<()> {
42    use crate::utils::tracing::init_test_tracing;
43
44    init_test_tracing();
45    initialise()?;
46    init_vakint()?;
47
48    Ok(())
49}
50
51pub fn bench_initialise() -> Result<()> {
52    use crate::utils::tracing::init_bench_tracing;
53
54    init_bench_tracing();
55    initialise()?;
56    init_vakint()?;
57
58    Ok(())
59}