On Wed, 7 Mar 2018 11:06:47 -0500 [email protected] wrote: > Having used Gentoo for a few years now, one thing that has been annoying > to me is the tremendous duplication of effort and uphill battle of > creating ebuilds (build recipes) for language-specific packages that > already have their own build systems.
As much as this would be nice, for some ecosystems this is entirely impossible. Notably, Perl would be an impossible target, because instead of using package level dependencies like Gentoo does, it uses module level dependencies. A package has >= 1 module. And to make matters interesting, "the package" a given module ships in can change as a function of time. Sometimes, 2 packages fuse to become 1, and other times, 1 splits to become 2. Within CPAN, this happens pretty transparently, mostly because they don't actually have an ahead-of-time dependency resolution system. Dependency resolution is performed via: 1. Get the module name 2. Fetch a copy of the index 3. Look up module name in index 4. Install resolved package And that "index" is updated every time a new package is uploaded. Which basically means that system is only useful for asking the question "Where is the latest version of X", not "where is Y version of X" And to add insult to injury, CPAN's versioning scheme is incompatible with Gentoo's. ( They have a right to, they had both versions and package management before we did ) We have a hack of sorts to circumnavigate the version scheme[1] situation, but it only works in one direction ( eg: you can convert CPAN versions to normalised Gentoo versions, but not vice versa ) But solving the package/module version resolution missmatch is an ongoing nightmare which all my efforts have so far concluded, that only humans are capable of solving, and a large volume of my efforts engaging with upstream have been driven by this single problem. Native integration would be really nice, but alas, the best of my understanding so far is its a giant fantasy that attracts lots of people with good ideas, that ultimately all fail in application. ( And part of that is because the upstream you're dealing with is not a machine, but another human who is prone to deviating from spec on a regular basis enough to cause headaches for us ) 1: https://wiki.gentoo.org/wiki/Project:Perl/Version-Scheme
pgp5xHkRuVPfp.pgp
Description: OpenPGP digital signature
