New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minimal installation for basic IO #6471
Comments
Any updates in this field? |
The investment of effort is going in this direction: #14890 |
5 similar comments
Related forum post: https://root-forum.cern.ch/t/reading-root-files-with-minimal-dependencies/58899/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is your feature request related to a problem? Please describe.
ROOT compilation requires hours of compilation time (up to 10 hours on virtual machines such as CI bots, and I hasn't seen compilation time less than an hour by now)
ROOT takes hundreds of megabytes (600 - 800?) of space and requires a number of dependencies. This both greatly affects image sizes (e.g. docker) which, in turn, affects many areas such as automated testing, CI, transferring to farm nodes, even using in cloud resources and binder.
If one dares to build ROOT with it dependencies in something like Spack or other kind build scripts which take root dependencies into account and work on older system (which is a standard in HENP community) it just takes forever. Even If one uses something like Conda with precompiled ROOT binaries it quickly eats couple of gigabytes of space and still takes time.
Yet many application require just a minimal ROOT IO with saving data to files in ROOT format. Even without reflection, generating dictionaries and etc. - flat root files with
vector<value>
as the max complexity.Describe the solution you'd like
In the ideal world I would be glad to have really modular ROOT build where I could choose that I want to have just a basic IO and get root installation witch is done in minutes and resulting binaries would be just megabytes in size.
Describe alternatives you've considered
Surprisingly one can achieve such behavior with uproot. The only caveat is that you have to call python from C++ which is slow and feels perverse. Still compilation time of the whole python is much less and for sure python is preinstalled on all linux systems.
Geant4 has some C++ library for writing root files and one even can find it on github (It is diana_hep. Isn't it?) but it doesn't allow to save something like arrays or something like
vector<double>
. I'm talking about at least some basic IO but not that basic. uproot is a good example. Also there is no documentation, no one touched it in years and I doubt about the code quality (at least I didn't find any tests, user responses etc.)One can try to minimize root installation by switching off options. But it doesn't affect space and compilation time much. It still hundreds of megabytes (500 something) and takes almost the same time to compile.
Additional context
The text was updated successfully, but these errors were encountered: