Re: Fedora modularity and cyclic dependencies

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux