On Sat, Jan 18, 2025 at 4:33 PM Miroslav Suchý <msuchy@xxxxxxxxxx> wrote: > Dne 18. 01. 25 v 11:01 dop. Mattia Verga via devel napsal(a): > > I think some of the build failures are due to building things out of > > sequence. > > I agree with Fabio in this thread, that it is (should not be) the case. > > > The optimal solution would be to have some script that periodically > > creates a tree of buildrequires dependency for all Fedora packages... > > but that would require some work. So, I was just thinking, what about to > > set up a simple repository where we put some text files like: > > As one of the Mock developer, I have seen several people trying to create script that build-order packages. All of them > failed. Including me. > > There are lots of traps: > ... > ... > ... > My $0.02 - if you try to write something, write is simple and dumb. Not general. Based on the data from last rebuild. > Count with the errors. As it does not be 100% correct. Even if it takes several percent of failures down it will be > improvement. An idea: What instead of guessing the dependencies beforehand, we would just use the last known set. We get that generated for free during every build. So if we just preserve and parse the root.log every time a production build succeeds, we have exactly that "based on the data from the last rebuild" you mentioned. Don't we already preserve the logs of production builds that reach stable, anyway? I see only 2 main flaws with this: - commits added between the last successful build and the mass rebuild may cause differences - we usually do mass rebuild for Rawhide. At that time, many packages had not yet been built even once for Rawhide (that's why we do a mass rebuild). However there may already be present macros changing the behaviour specifically in that Fedora release. In both cases, we expect just minor deviances, so the overall graph should be mostly correct, and that sounds like a good value to effort ratio to me. Michal -- Michal Schorm Software Engineer Databases Team Red Hat -- On Sat, Jan 18, 2025 at 4:33 PM Miroslav Suchý <msuchy@xxxxxxxxxx> wrote: > > Dne 18. 01. 25 v 11:01 dop. Mattia Verga via devel napsal(a): > > I think some of the build failures are due to building things out of > > sequence. > > I agree with Fabio in this thread, that it is (should not be) the case. > > > The optimal solution would be to have some script that periodically > > creates a tree of buildrequires dependency for all Fedora packages... > > but that would require some work. So, I was just thinking, what about to > > set up a simple repository where we put some text files like: > > As one of the Mock developer, I have seen several people trying to create script that build-order packages. All of them > failed. Including me. > > There are lots of traps: > > - Some dependencies are generated only during the build E.g., https://fedoraproject.org/wiki/Changes/DynamicBuildRequires > > - Some **names** of packages are generated only during the build. E.g. SoftwareCollections (not relevant for Fedora itself). > > - It is hard to parse Requires from SRC.RPM because of %if condition and other macros. Basically you have to that in > correct build environment only. > > - it is hard to evaluate the macros. You have to be in the build enviroment of the target platform with all installed > macros as SPEC files heavily used various srpm-macros as deps and even including their own macros as SOURCEX. > > - did I mention %bootstrap macro? > > The only way that works, is what mockchain does: build the packages in random order. if any fails, repeat while at least > one package in the loop succeed. > > My $0.02 - if you try to write something, write is simple and dumb. Not general. Based on the data from last rebuild. > Count with the errors. As it does not be 100% correct. Even if it takes several percent of failures down it will be > improvement. > > -- > Miroslav Suchy, RHCA > Red Hat, Manager, Packit and CPT, #brno, #fedora-buildsys > > -- > _______________________________________________ > devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx > Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue