On 2014-08-24, Nico Kadel-Garcia <nkadel@xxxxxxxxx> wrote: > Installation scripting is not the only source of the problem. Perl > modules have been prone to this. > > * Perl module A requires perl module B. > * Perl module B requires perl module C. > * One small script or macro in module C requires one small script from > module A. It may not even be a critical component of C, and may be > easily segregated, but suddenly there is a circular dependency. > There is no algorithmic difference between Perl packages and any other packages. Specifically to Perl, we employ %perl_bootstrap macro which guards the `not even a critical' dependency which allows us to break the dependency cycle. Perl SIG exhibits weekly rebuilds <https://ppisar.fedorapeople.org/perl_rebuild/scratch/index.xhtml> which allow us to watch that all Perl packages are buildable. > The vortex enters when the author of module B updates to a new > dependency or build dependency that is not in the current version of > C, and C introduces a new dependency on A but it's based on an older > version of A, that has since discarded that macro due to a code > cleanup. Hilarity ensues..... > If you need to do such an upgrade, provided you've already deployed the %perl_bootstrap condition, you just define perl_bootstrap temporarily in one of the upgraded packages, and after upgrading the connected component, you remove the macro definition and rebuild the package again. > The underlying point is that it's sometimes very helpful to split > upstream packages to smaller, individual components, precisely to > segregate these dependencies. It's especially useful with Perl > modules. Definitely. Once packageres realize that Perl modules can move beetween RPM packages freely, once they realize that specifying all direct dependencies without relying on transitive dependencies is the best practice and a must for healthy distribution, then splitting packages is obvious solution. Although splitting cannot solve all issues, especially if the splitted modules are really interdependend. Then there is no point in the split. However that's a upstream issue. -- Petr -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct