On 4 Jan 2018, at 4:53, Ryan Schmidt wrote:

On Dec 30, 2017, at 20:27, Bill Cole wrote:

[...]
If anyone involved in making MacPorts policy can explain this coherently, I'd greatly appreciate it.

What other explanation would you like?

Well, I'm not entirely sure...

I think I've figured out by experimentation that it isn't as risky as I thought. In the case of a guinea pig system which could mostly be upgraded with binaries (i.e. few build dependencies pulled in by 'upgrade') the endpoint was a 2-version Perl universe with 5.24 remaining the default version and a partial duplication of modules across the version sub-trees. Not ideal, but not catastrophic.

Absent clear documentation of that being the way it is meant to work, my fear was that I would end up with 5.26 as the default and/or a jumble of modules where neither version sub-tree had the full desired collection intact because some modules got "upgraded" while others did not. I have managed to achieve such a benighted state in the past, probably by my own error, which is why I compulsively pre-flight upgrades now.

Now that perl5.26 is stable, we would like all ports that require a specific version of perl (e.g. because they require perl modules) to require perl5.26.

So there *is* something of an issue there. In the 1st case that I noticed, updating p5.24-net-dns to the latest version of the module brought in (via a dependency chain including some build-time-only steps) perl5.26 and p5.26-locale-gettext. The key links in that were libunistring requiring texinfo to build and texinfo demanding perl5.26 as a library dependency and help2man to build, which in turn requires both perl5.26 and p5.26-locale-gettext.

In fact, neither texinfo nor help2man really requires 5.26 in the upstream code. They require minimum 5.6 and 5.8 respectively. Hence, it seems to me that those ports really should not specify a single version of Perl but rather require any version greater than their actually required minimum, while help2man should not specify both perl5.26 and p5.26-locale-gettext but rather just p5-locale-gettext, which in turn will build the appropriate sub-port based on perl5.default_branch. If help2man is being installed without an existing perl5.*, the version determination and dependency should be in the required module, I think.

OR: maybe there's a conceptual model for how MacPorts handles Perl versioning and dependencies to which I'm being totally oblivious, consistent with current behavior rather than with how I think it should work or how I feared that it might. If so, THAT is the explanation I need.

Reply via email to