We announced that our first alpha ISO will be available by the end of January… and still no ISO. Damned! What is going on? Let me explain it.
Once upon a bootstrap…
As stated in previous blog posts, our build system has been in active operation for the past weeks and more than 4,000 packages have already been built. This set of packages is what we call a bootstrap.
Looking at Wikipedia, you will see that a bootstrap is a small bootloader used to boot a bigger system. In the case of Mageia: bootstrap is the current step where the base system and major dependencies are being built so that all applications can then be also built using Mageia own tools and packages. All Linux distributions use their own packages to build all packages available in their repositories.
Then comes the hardest piece of the story, kind of a chicken and egg dilemma. Some low-level packages, usually called toolchain, need themselves to compile: gcc, glibc… These packages already exist in a lot of distributions. So the bootstraping process simply start from one of these distributions.
On Mageia side, we decided to use Mandriva packages as the first release is based on Cooker. In order to use them, we need to have them cleaned:
- removing Mandriva specific bits and pieces (RPM macros, copyrighted items like images, icons, deprecated stuff…)
- removing unneeded conditions in build requirement definitions
- sending patches upstream so that we don’t have to maintain them whereas they could be profitable for all if upstream accepts them
- disabling temporary some high-level dependencies as they are not yet built and available for Mageia (Java, Mono).
When all this is done, each package is ready to be rebuilt on Mageia build system. Once the package is rebuilt as Mageia one, the packager will check and re-add, if needed, additional build dependencies as soon as they are available.
Let’s take an example
gcc is a C compiler, an important part of base system as it’s needed by a lot of applications to be built from source.
Mageia needs its own gcc package to generate all applications using C language (also called dogfooding). This is a crucial operation for Mageia as doing it properly will ensure that everything is working well and in the same time list potential problems and correct them. Mageia gcc is then generated.
When the toolchain is built then we can rebuild Mageia kernel, X drivers, X server, etc. and upper-level applications. A bootstrapped system doesn’t offer packagers much more than some libraries and a compiler. It will then need additional core system packages before being able to let the packagers team really start working in earnest. Many packages do require some build dependencies which in turn require some other build dependencies.
Finally thousands of packages are needed to build major components that will be needed for high level applications.
Of course this is the simple story, without all the fun things that can happen during rebuild process. But that’s the big picture.
Why is bootstrap so important?
As stated previously, bootstrap is a step where packagers and base system specialists can take time to check consistency of the very low-level parts of the distribution, clean requirements and make it fit with the distribution policy. So bootstrap is not dedicated only to people interested in forks 🙂
By the way, improving and writing proper documentation on bootstrap will also help a lot when new architectures are being added and supported. It will need a proper toolchain, base system… Same story.
So back to our first question: when can we expect a first test ISO? The bootstrap step started one month ago and should be finalized by tomorrow. It took about 1,500 hours to build available packages, taking into account successful builds but also failures, rebuilds, technical decisions to be taken, unexpected problems, discussions…
Now here we are :). Repository is ready for first build tests, our build machine for ISOs is properly configured and Alpha1 is expected on 15th of February; stay tuned, more news about future roadmap is coming soon!