Superbuilds for ROOT
- Mentors
- Vassil Vassilev, DaniloCERN
- Organization
- CERN-HSF
- Technologies
- linux, c++, cmake, bash
- Topics
- build systems
ROOT is a framework for data processing, born at CERN, at the heart of the research on high-energy, molecular and laser physics, as well as in astronomy.
ROOT has plenty of built-in components. Because of a variety of features, ROOT is a very large software which takes a very long time to compile. Currently ROOT compiles all of the components available within the source code distribution.
The goal of the project is to speed up the compilation process by letting users specify which components of the ROOT will be needed. This can be done by converting ROOT’s CMake configuration into a set of “CMake External Projects” (superbuilds). Superbuilds can remove all of this cruft from the project’s source repository, and enable you to more directly use the upstream project’s build system as an independently built software component. It is basically a simple package manager that you make consistently work across your target build platforms, and if your target platforms have a common package manager you might consider using that instead.
Also, during the configuration process it could be possible to identify if ROOT is already installed in the destination folder, the components which are already installed and offer an option to skip their compilation and use these already installed components for current compilation.
We are not going to change the build system of ROOT, but to optimize it and offer users an option to select only the parts of the ROOT to be built. Partial builds for ROOT can allow the creation of “edition” builds if necessary.