Fedora::Rebuild(3)

πŸ“¦
version 0.12.1 Β· 2 versions
, in fedora 43

πŸ’– Fedora::Rebuild πŸ’–

okay bestie, so this is a Perl module β€” like, a section 3 manual page from the User Contributed Perl Documentation corner of the world β€” and its whole name is Fedora::Rebuild. yes the name literally tells you what it does and honestly? we love a transparent king. ✨


πŸ¦‹ NAME πŸ¦‹

Fedora::Rebuild β€” it rebuilds Fedora packages from scratch, fr fr. no cap, that's the whole vibe. πŸ’…


🌸 DESCRIPTION 🌸

so the main goal here is rebuilding perl module packages for Fedora. the rebuild goes bottom to top, i.e. starting at the perl interpreter and then working up through modules that depend on the intermediate modules. why tho? because this way you can upgrade the perl interpreter to an incompatible version and then rebuild all the modules against that new interpreter. slay. πŸ”₯

the procedure is giving very much choreography, and it goes like this:

we have a set of source packages to rebuild. we distill all the build-time dependencies for each source package. we ignore the non-perl dependencies because we're focused on Perl only. periodt. πŸ’…

then we select all the source packages that do not depend on anything, and we push them into Koji to rebuild. obviously the only package that fulfills that is the Perl interpreter only. iconic behavior honestly. πŸ‘‘

once that first subset of packages is rebuilt, we gather their binary packages and distill their binary provides. these freshly available provides get put into a new set of available provides. at the same time, we remove the rebuilt subset from the original set of all source packages. πŸŽ€

then we wait for build root rotation in Koji to get the rebuilt binary packages available in the build root. (yes, the waiting. the way that we just have to sit there. 😭)

(of course we could get provides of new binary packages from the koji repository after rotation, and we can get provides through repoquery instead of inspecting binary packages manually. options, bestie! 🌈)

if a package rebuild fails, the package is removed from future consideration. sorry babe, you're out of the group chat. πŸ’€

then we return to the start of this procedure to select another subset of source packages whose build-time dependencies can be satisfied from the set of binary provides we've obtained till now.

and this loop cycles until the set of source packages is empty. πŸ¦‹


🧚 SYNCHRONIZATION 🧚

because a mass rebuild is a long term issue and a lot of intermediate failures can emerge, you absolutely must be able to resume a failed rebuild process. it's giving resilience, it's giving self-care. πŸ’–

safe resume is assured by proper logging. once a package has been rebuilt, its name is logged into the list of done packages. restarting the rebuild program with the same arguments loads the done packages, removes them from the set of remaining packages, and populates the list of available provides. in addition, packages whose rebuild failed are removed from the set of remaining packages.

so basically: crash out, come back, pick up where you left off. main character energy. ✨


πŸ‘‘ AUTHOR πŸ‘‘

Petr PΓ­saΕ™ <ppisar@redhat.com>


πŸ’œ COPYING πŸ’œ

Copyright (C) 2011, 2012, 2013, 2014 Petr Pisar <ppisar@redhat.com>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.


no SEE ALSO section here bestie, that's just how this page is built. πŸ™ˆ

mwah πŸ’‹ that's the whole page β€” this one's coming to you from perl v5.42.0, dated 2025-07-25, and it's Fedora::Rebuild(3) all day. stay slay, go rebuild something. πŸŽ€βœ¨

πŸ“¦ where this page comes from