I’ve decided to write a little series of articles covering some “behind the scenes” work on Rocky Linux: how do we put the distro together from a Release Engineering perspective?
Some topics I think I’ll cover:
Overview of software pieces, and how they fit together
How source is imported/stored/patched
Dependency resolution: more complicated than we think
How builds are conducted, build strategy
Modules and modular streams
This first entry is just an introduction to Rocky Linux and how it came about. I’m hoping to de-mystify the process by which Rocky Linux and other Feodra/EL based distros are built. And to make the concepts and pieces accessible to a much wider audience.
Feels weird replying to myself, but I didn’t think a whole other thread would be appropriate.
The next article is up: Build Steps!
In broad strokes, we’ll go over what steps are taken to get a package imported, debranded, built, signed, and released! There’s also a neat diagram to help visualize the package build infrastructure a bit. This covers several topics, and we’ll go even deeper to some of them in subsequent posts.
Yes, I remember reading when it came out. Our release team referred to it extensively .
Oh, I also saw your question about the c8 branch continuity. We were also worried about that, but RH has made a commitment to continue uploading/syncing RHEL sources to those branches. So we’re hoping they honor that commitment.
It’s always possible to extract from SRPMs, but it is much messier.
All the content in these articles contains stuff that we had to figure out for ourselves circa Dec. 2020 - April 2021, and it was quite painful. The goal is to summarize the concepts so everyone else can understand too!
Another plain speaking article explaining about build dependencies and hard to find -devel packages. and a future atticle about rpmbuild (how to actually do it).
It would be great to have a future article about “Secure Boot”. I’m especailly interested to know which exact files would be different e.g. between Rocky and RHEL.
I’m back from vacation, and I’ve got a new article.
Enough theory, this one is practical: Build Lab! (part 1)
We’ll set up the mock build program, clone some source from git, and do a build on your system just like the release engineering team! This will put some concepts into action that have been mentioned in the past few articles.
We’ve covered building packages, but what about dependencies? We’ll attempt to build a trickier package: bind. It depends on things, that we don’t have, so we will build the prerequisites in-order, and make them available to subsequent Mock builds!