Perl error, once and for all

Scott Haneda talklists at
Thu Feb 26 04:28:46 PST 2009

On Feb 26, 2009, at 12:26 AM, Ryan Schmidt wrote:
> On Feb 26, 2009, at 02:20, Scott Haneda wrote:
>>> MacPorts operates under the assumption that exactly one port will  
>>> provide a file at a given path. The combination of perl5.8 and  
>>> whatever module it is that you were installing that wanted to  
>>> install Test/Builder/ is in violation of that assumption.  
>>> Sometimes this occurs because perl5.8 didn't used to include a  
>>> particular module (hence a separate port was created) but now due  
>>> to a version update perl5.8 does already include that module  
>>> (making the separate port unnecessary). Sometimes the separate  
>>> port may provide a newer version.
>> Ok, so if I am getting this, perl5.8 has a module already installed  
>> and the p5 I want to put is in also trying to put it in.  This is  
>> the core conflict?
> I believe that is correct, yes.
>> Which one do you chose is the issue?
> There are a few p5 ports that print messages advising users to force  
> the activation of the p5 port. This would cause the p5 port's module  
> to overwrite the perl5.8 port's module. The assumption is that the  
> p5 port provides a newer version.

Probably a mostly safe assumption.  But there will be those edge  
cases.  Newer is not always better and I would be willing to bet,  
there are some newer modules that break backwards functionality.  I  
suppose that is the reason why this is not a simple issue to solve.

>> At the very least, let me chose, but the -f can force things to  
>> happen even deeper down the chain, and it would be a bear to back  
>> out of those.
>>> I do not think we need to change the MacPorts error message from  
>>> the one that is currently being printed. It is accurate.
>> I agree, though we need to figure out how to make the message go  
>> away.
> There is a ticket for this problem, I believe it has been mentioned  
> earlier. I believe the possible fixes are 1) delete the p5 port for  
> which a module is already included in the perl5.8 port;

And the repercussions of this being a module may or may not be newer,  
either way, there is the chance of breaking something.

> 2) delete the module from the perl5.8 port so that the p5 port can  
> provide it;

I think I interpret this as same issues as above.

> 3) integrate the p5 port's module into the perl5.8 port in the event  
> that it is newer;

Also same issues as above.

> 4) make the p5 ports install modules into a separate location from  
> where the perl5.8 port installs modules (the question then is how to  
> make perl-using software see both sets of modules; I am not a perl  
> expert so I do not know the answer).

I think you have to modify the module to "use lib" and supply a path.   
If that is the case, this would be the best option, as getting rid of  
the -f warning would then be on the port maintainer to solve.

Does anyone know how CPAN solves this?

* If you contact me off list replace talklists@ with scott@ *

More information about the macports-users mailing list