Skip to content

Commit 3b93c66

Browse files
Pavlo Svirinvgvassilev
Pavlo Svirin
authored andcommitted
Added blog post on superbuilds for ROOT
1 parent f739b3a commit 3b93c66

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
title: "Superbuilds for ROOT"
3+
layout: post
4+
excerpt: "A GSoC 2024 project with goal to split ROOT into separate components and thus speed up its compilation"
5+
sitemap: false
6+
author: Pavlo Svirin
7+
permalink: blogs/gsoc24_pavlo_svirin_introduction_blog/
8+
date: 2024-05-31
9+
tags: gsoc root cmake
10+
---
11+
12+
### Introduction
13+
14+
I am Pavlo Svirin, a software engineer at the Bogolyubov Institute of
15+
Theoretical Physics in Kyiv, Ukraine. During the Google Summer of Code 2024 I
16+
will be working on superbuilds for ROOT.
17+
18+
**Mentors**: Vassil Vassilev, Danilo Piparo
19+
20+
21+
### Briefly about ROOT
22+
23+
ROOT is a framework for data processing, born at CERN, at the heart of the
24+
research on high-energy, molecular and laser physics, as well as in astronomy.
25+
Every day, thousands of physicists use ROOT applications to analyze their data
26+
or to perform simulations.
27+
28+
ROOT has plenty of built-in components which allow to do:
29+
- Histogramming and graphing to view and analyze distributions and functions,
30+
- curve fitting (regression analysis) and minimization of functionals,
31+
- statistics tools used for data analysis,
32+
- matrix algebra,
33+
- four-vector computations, as used in high energy physics,
34+
- standard mathematical functions,
35+
- multivariate data analysis, e.g. using neural networks,
36+
- image manipulation, used, for instance, to analyze astronomical pictures,
37+
- access to distributed data (in the context of the Grid),
38+
- distributed computing, to parallelize data analyses,
39+
- persistence and serialization of objects, which can cope with changes in class
40+
definitions of persistent data,
41+
- access to databases,
42+
- 3D visualizations (geometry),
43+
- creating files in various graphics formats, like PDF, PostScript, PNG, SVG,
44+
LaTeX, etc.
45+
- interfacing Python code in both directions,
46+
- interfacing Monte Carlo event generators.
47+
48+
49+
Because of such a variety of features, ROOT is a very large software which
50+
takes a very long time to compile. Currently ROOT compiles all of the components
51+
available within the source code distribution.
52+
53+
54+
### Implementation Details and Plans
55+
56+
The goal of the project is to speed up the compilation process by letting users
57+
specify which components of the ROOT will be needed. This can be done by
58+
converting ROOT’s CMake configuration into a set of “CMake External Projects”
59+
(superbuilds). Superbuilds can remove all of this cruft from the project’s
60+
source repository, and enable you to more directly use the upstream project’s
61+
build system as an independently built software component. It is basically a
62+
simple package manager that you make consistently work across your target build
63+
platforms, and if your target platforms have a common package manager you might
64+
consider using that instead.
65+
66+
Also, during the configuration process it could be possible to identify if ROOT
67+
is already installed in the destination folder, the components which are already
68+
installed and offer an option to skip their compilation and use these already
69+
installed components for current compilation.
70+
71+
72+
### Conclusion
73+
74+
The goal of this project is not to change the build system of ROOT, but to
75+
optimize it and offer users an option to select only the parts of the ROOT to
76+
be built. Partial builds for ROOT can allow the creation of “edition” builds if
77+
necessary. There is also an option to create an Ncurses menu-based configuration
78+
application (TUI, text user interface) which will simplify the configuration
79+
process and will let users not to remember names of ROOT subprojects, thus
80+
making build process easier.
81+
82+
83+
### Related Links
84+
85+
- [ROOT website](https://root.cern)
86+
- [CMake Superbuilds and Git Submodules](https://www.kitware.com/cmake-superbuilds-git-submodules/)
87+
- [CMake external projects documentation](https://cmake.org/cmake/help/latest/module/ExternalProject.html)
88+
- [My GitHub Profile](https://github.com/pavlo-svirin)
89+
90+

0 commit comments

Comments
 (0)