Le mardi 16 avril 2019 à 15:39 +0100, Mat Booth a écrit : > > Why wouldn't this work for you? You would just rebuild the module a > second time without the bootstrap flag set. This is fairly standard > process for packages that buildrequire themselves and not unique to > golang. I may be wrong, but does not seem to scale to the level needed by Go. Go is 600-900 interdependent packages with multiple cycles (some that span hundreds of packages, other that cross one another in the same packages). Bootstrapping Go, that will soon be needed because ustream switches to a new payload format in August, and the new payload tools refuse to read previous formats is takes this kind of execution plan: 1. try to chain build a seed of ~86 packages in normal mode 2. for all the seed packages that failed in normal mode, chain build in bootstrap mode (with the Fedora bootstrap conditional) 3. once this is ok, chain buil all the packages that required bootstrap, in normal mode → unfortunately a couple of packages will still fail they participate in cycles too far-ranging to be included in the seed 4. with this seed of almost-completely bootstraped packages you chain build the remaining 600+ packages in normal mode 5. when chain building stops making progress you try chain building all the packages that didn't pass in bootstrap mode 6. if that is successfull you try chain-building all the packages that required the bootstrap pass in normal mode 7. if that is successful (everything has neen built in normal mode, though some may have been built against bootstraped packages) you take the 600-900 packages and re chain build all of them to make sure the result is self-hosting. A package built in bootstrap mode may not have any particular bootstrap logic, but just be in the path of a cycle that needs bootstrapping of one or several of the cycle links And you won't have an explicit list of X needs to beb built before Y, A needs bootstrapping before B, because the dep graph changes regularly, you need chain building logic to discover if your bootstrapping logic still works. And even if it still works the whole process takes days/weeks (depending if you do it on a fast build farm or not, depending if you do all build arches or not) THAT’s what bootstraping means in a Go context. -- Nicolas Mailhot _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx