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

Attachment: pgp5xHkRuVPfp.pgp
Description: OpenPGP digital signature

Reply via email to