Perl5, dependent install, Version, and variants

Ryan Schmidt ryandesign at
Mon Feb 15 16:41:48 PST 2010

On Feb 15, 2010, at 06:27, Keith J. Schultz wrote:

> 	I have a several  of questions so please bear with me.
> 	I needed wget and decided to finally start installing
> 	macport on my MacBook Pro running Snow Leopard,
> 	last week.
> 	All was fine. I noticed wget has a lib-dependancy on 
> 	perl5. To my surpise no perl5 stuff was installed.
> 	Fine to it used evidently the native Mac version.

To be completely accurate, it's actually a build dependency. It's declared as "bin:pod2man:perl5", meaning it wants to use the program "pod2man", and if none is found anywhere in the binpath as specified in macports.conf, then the perl5 port will be installed. In your case, the pod2man program Apple already shipped on your system was found and used rather than installing the perl5 port. This is a little unusual; ports should usually use software installed by other ports, not software installed by Apple, for the reasons explained here:

However, in this particular case, I apparently thought the version supplied by Apple would be ok; I'm the one who originally made this change here:

I don't remember why I decided the Apple version of pod2man was good enough in this case.

> 	Over the weekend I wanted to try bluefish out.
> 	I ran sudo port -d install bluefish-devel.
> 	I was shocked with I notice that perl5.8.9
> 	was being installed.

This should not shock you terribly. bluefish-devel depends on gtk2 which depends on glib2 which depends on perl5 which depends on perl5.8. In glib2, the dependency is written as "path:bin/perl:perl5" meaning only a program "perl" in the directory "bin" inside the MacPorts prefix can satisfy the dependency; a "perl" anywhere else on the system is not sufficient. This is consistent with how MacPorts dependencies are supposed to be written.

> 	Actually, this should not be a problem because
> 	in the man page I can set defaults write Version 5.10.0.
> 	Well, no Luck. I log out and in and even restarted, still
> 	would not give me perl10.0.0.
> 	1) Bug or missing feature that the MacPort perl does not
> 	     check for versioner? Or should I have to set this in .profile?

I don't know what manpage you're referring to and I've never heard of the plist. It is not expected that MacPorts would make use of any Apple plists.

> 	2) Why was not perl10.0.1 from macport installed instead of
> 	    5.8.9 when running Snow Leopard ?

Because the default perl in MacPorts, on all operating systems, is still perl5.8. The convoluted ticket tracking the request to change this to perl5.10 is here:

> 	Since bluefish was not what I wanted/expected, I remove 
> 	Macports and reinstalled wget. This I check perl5 and noticed
> 	the perl5.10 variant. So I installed perl5 +perl5.10.
> 	O.K. perl10.0.1 was installed I can live with that.
> 	So:
> 	3) If I install any that depends on perl5 will perl5.8.9
> 	     be installed or is perl5.10.1 respected?

I expect that perl5.10 should be used by all software that is able to do so. (One exception, for example, is ghc, which specifically requires perl5.8.)

> 	I am not that much into variants, but want to make sure
> 	that 32 and 64 bit version are installed. I do not want
> 	PPC code.
> 	5) What variants do I use?


> 	6) How do ensure that the proper variants are use for 
> 	    dependent builds?

If you want universal builds always, you can put +universal into variants.conf. Any variant you specify at the command line, or in variants.conf, automatically applies to any dependencies that haven't yet been installed. But they do not automatically apply to dependencies that are already installed.

Since you probably already have some ports installed now, you may want to rebuild all of them universal now. To do so, I believe you just have to run:

sudo port upgrade --enforce-variants active +universal

Note that not all ports can build universal, and not all ports that can't have declared that they can't. Therefore you may run into ports that try to build universal and fail. These are bugs that should be reported in the issue tracker. To work around it, if you have added +universal to variants.conf, you need to specify -universal on the command line, e.g.:

sudo port install vis5d -universal

Note that you need to manually specify -universal every time you upgrade these ports, too, until the port is fixed to either build universal or to indicate that universal doesn't work, because MacPorts does not record negative variants in the registry.

More information about the macports-users mailing list