diff --git a/.rootlogon.C b/.rootlogon.C new file mode 100644 index 0000000000000000000000000000000000000000..18fbc7133e05b85b179f56b25f9abdbdd56238dc --- /dev/null +++ b/.rootlogon.C @@ -0,0 +1,37 @@ +#include <fmt/core.h> + +void _rootlogon() { + // ensure we have format loaded. Should be able to move to C++20 fmt library + // some point in the future + R__LOAD_LIBRARY(libfmt); + + // check if we requested a special build directory through the environment, + const char* build_dir_from_env = gSystem->Getenv("ROOT_BUILD_TMPDIR"); + const std::string build_dir = build_dir_from_env ? build_dir_from_env : "$HOME/.root_build_dir"; + + // ensure the build directory exists to avoid crashes due a directory + // note: in principle this allows us to execute arbitrary code, but seeing + // as this can only be manipulated through the shell environment in the + // first place this should not be a safety concern. + const std::string mkdir = fmt::format("mkdir -p {}", build_dir); + gSystem->Exec(mkdir.c_str()); + + // Communicate what build directory we are using + fmt::print("---> Setting ACLiC build directory to: {}\n\n", build_dir); + gSystem->SetBuildDir(build_dir.c_str()); + + // Ensure we have our environment setup + gROOT->ProcessLine(".include /usr/local/include/hcana"); + gROOT->ProcessLine(".include SCRIPTS/include"); + gROOT->ProcessLine(".include ."); + + // Some basic plotting setup + gROOT->SetStyle("Plain"); + gStyle->SetPalette(1); + + // Load extra ROOT libraries, TODO check if this is still + // needed in the newer ROOT versions we are using. + gSystem->Load("libTree"); + gSystem->Load("libTreePlayer"); + gSystem->Load("libHist"); +} diff --git a/rootlogon.C b/rootlogon.C deleted file mode 100644 index 2f19a5a3ef2403ee300739e9c72d64ac40caa04c..0000000000000000000000000000000000000000 --- a/rootlogon.C +++ /dev/null @@ -1,12 +0,0 @@ -void rootlogon() { - gSystem->SetBuildDir("$HOME/.root_build_dir"); - gROOT->ProcessLine(".include /usr/local/include/hcana"); - gROOT->ProcessLine(".include SCRIPTS/include"); - gROOT->ProcessLine(".include ."); - R__LOAD_LIBRARY(libfmt) - gROOT->SetStyle("Plain"); - gStyle->SetPalette(1); - gSystem->Load("libTree"); - gSystem->Load("libTreePlayer"); - gSystem->Load("libHist"); -}