Perl5 (meta package) switched from 5.16 to 5.22 - p5-* and git not switched

David Evans devans at
Tue Jan 12 13:32:01 PST 2016

On 1/12/16 1:19 PM, Justin Vallon wrote:
> On 1/12/16 3:26 PM, David Evans wrote:
>> On 1/12/16 10:40 AM, Justin Vallon wrote:
>>> I just did a selfupdate && upgrade, and perl5 was upgraded from perl5.16
>>> to perl5.22.
>>> However, my p5-string-shellquote was not automatically upgraded from
>>> p5.16- to p5.22-, and I had to reinstall it.
>>> Similar for git and ossp-uuid.  Each had a perl5_16 variant installed
>>> and ugprade did nothing, but reinstalling ended up with perl5_22.
>>> My guess is that the perl5 Portfile was changed, so upgrade rebuilt it
>>> and thus installed perl5.22, but p5-string-shellquote was not changed,
>>> so did not get an automatic upgrade.
>>> Is this expected?
>> We're in the process of removing support for all perls older than perl5.22
>> and perl5's default variant was recently changed from +perl5_16 to +perl5_22.  This
>> change causes new installs of perl5 (without specifying a specific variant)
>> to be updated to perl5.22 as you say and p5.22-* to be the default version
>> of the p5-* module ports.  Upgrades would have honored the old installed variant
>> (+perl5_16 and p5.16-* in your case).
>> However, the older variants of perl5 were subsequently removed, breaking the
>> desired upgrade behavior.  This step was premature and should have been deferred
>> until support for the older perls had been obsoleted from the p5-* modules
>> and the old perl variants removed from ports that use them so that the effected
>> ports would automatically upgrade to the perl5.22 versions as you expected.
>> It would then be safe to remove the old perl5 variants.
>> I'm not sure what the best approach is now to heal this damage but I'm leaning
>> toward restoring the older variants to perl5 until the other steps
>> have been taken. You'll then be able to install perl5 +perl5_16 again and use
>> your p5.16-* modules (if you haven't already upgraded them to p5.22-*
>> manually).  In the interim you should be able to use your existing p5.16-* modules
>> as long as perl5.16 is installed.
> I fixed everything by either uninstalling and reinstalling (p5-*) or
> "build git && install git", which ended up picking up the new default
> variant (as far as I remember).
> Your discussion does not appear to solve the problem of p5-* modules not
> getting upgraded/rebuilt when perl5 is changed.  Consider:
> 1) perl5 was installed (default version 5.16), p5-blah module is installed
> 2) /opt/local/bin/perl can use the "Blah" module.
> 3) perl5 is upgraded to 5.22.  /opt/local/bin/perl is now 5.22.  p5-blah
> is not automatically switched to 5.22.
> 4) /opt/local/bin/perl cannot find the "Blah" module.
> 5) reinstall p5-blah
> 6) /opt/local/bin/perl can use the "Blah" module again.

This is why I restored the variants.  In the future when the p5.16 - p5.20 subports
are removed from the p5 ports, they will declared obsolete which will cause them
to update to p5.22.  Then the old variants and ultimately the old perl5.* ports themselves
can be removed without problems.  For now, if you reinstall perl5 +perl5_16 it will reset
your default perl to perl5.16 avoiding the issue.

More information about the macports-users mailing list