Skip to content
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

Closed
DraTeots opened this issue Sep 27, 2020 · 9 comments
Closed

Minimal installation for basic IO #6471

DraTeots opened this issue Sep 27, 2020 · 9 comments

Comments

@DraTeots
Copy link

DraTeots commented Sep 27, 2020

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

  • I'm talking about C++ solution.
  • I know about ROOT team efforts to make root installation more modular. But haven't heard any progress on this and not sure that it is about such level of modularity
  • I heard something about using system llvm, but I'm afraid even this wouldn't solve the issue
  • Even javascript root can open root files in javascript and I'm surprised it is not possible in C++ without building WHOLE elephant.
  • Pitch phrase "uproot for c++"
@github-actions github-actions bot added this to Needs triage in Triage Sep 27, 2020
@eguiraud eguiraud moved this from Needs triage to Rest in Triage Oct 6, 2020
@DraTeots
Copy link
Author

DraTeots commented Feb 2, 2022

Any updates in this field?

@dpiparo
Copy link
Member

dpiparo commented Mar 16, 2024

The investment of effort is going in this direction: #14890

@dpiparo dpiparo closed this as not planned Won't fix, can't repro, duplicate, stale Apr 1, 2024
Copy link

github-actions bot commented Apr 2, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

5 similar comments
Copy link

github-actions bot commented Apr 3, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

Copy link

github-actions bot commented Apr 4, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

Copy link

github-actions bot commented Apr 5, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

Copy link

github-actions bot commented Apr 8, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

Copy link

github-actions bot commented Apr 9, 2024

Hi @dpiparo, @oshadura,

It appears this issue is closed, but wasn't yet added to a project. Please add upcoming versions that will include the fix, or 'not applicable' otherwise.

Sincerely,
🤖

@hahnjo hahnjo added this to Issues in Fixed in: not applicable via automation Apr 9, 2024
@ferdymercury
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

4 participants