perl5.8 fixup

Bradley Giesbrecht brad at pixilla.com
Tue Mar 3 16:22:12 PST 2009


Situation: I removed macports and reinstalled using the macports wiki  
recommended methods.
I installed perl5.8 and only perl5.8 using all variants.
I looked for and found a p5 that thought would not activate without  
using -f.
Seeing as threads along these lines are current I'm going to assume  
the readers of this message know something about what I'm talking about.

Profession: I believe there is a problem with some port p5 modules  
that conflict with perl5.8 installed modules.

Acknowledgments: I don't beleive I'm qualified to offer a solution for  
the p5 conflicts with perl5.8.

Problems: Without the user adding another env var it appears the port  
perl5.8 modules may not be found. Some port p5 modules seem to collide  
with port pelr5.8 installed modules.

Goal: Build consensus that there is a problem with port perl5.8 base  
modules not being available without adding another env var. Build  
consensus that some port p5 modules collide with port perl5.8 base  
modules. Move toward a solution.

My comments:
Listening to Vincent Lefèvre, who must know more then me about perl, I  
added PERL5LIB to my env and I think this is good way to go.

I am going to suggest we add a port "macports-env" for setting  
macports env shell vars that are necessary for port and other software  
to run.
If a port installs files that should be in env PATH then the Portfile  
could have a var like "macports-path /opt/local/bin/somepath" and this  
path would be added to the macports-env config file at /opt/local/etc/ 
macports/env.conf. I think some kind of a structure like ini might be  
nice for this file so items can be removed when a port is deactivated.

Ok, that's my idea for env.

Now for the perl5.8 p5 collisions. I have written three short scripts  
to try to find where the problems are. They are not pretty and  
probably not all that useful. I am going to add them here so people  
smarter then me can comment. Not being that familiar with perl and  
it's modules I will need to spend some time trying to match port  
perl5.8 module names with port p5 module names. Maybe some others can  
try these scripts and notice some obvious p5 ports that are not  
needed. I think some were added because without a proper PERL5LIB env  
other ports that were being submitted wouldn't run.

If I'm way off on my presumptions I'll probably just give in to -f but  
if I'm not and others are interested in fixing this I want to help.

BlackBook: root# cat *.sh
#!/bin/sh
# file name: porl5.8_installed_modules.sh
# purpose: remove port p5 modules that are installed as part of  
perl5.8 base

startdir=`pwd`
p5dir=/opt/local/lib/perl5/5.8.9

cd $p5dir

for p5_perl in $( ls *.pm | sed 's|.pm||g' ); do
		echo "${p5_perl}"
		if [ -d $p5_perl ]; then
			cd $p5_perl
			for p5_perl_file in $( ls *.pm | sed 's|.pm||g' ); do
				echo "${p5_perl},${p5_perl_file}"
			done
			cd $p5dir
		fi
done

cd $startdir

# file name: porl5.8_installed_modules.sh

#!/bin/sh
# file name: port_p5_module_deps.sh
# purpose: remove port p5 modules that are installed as part of  
perl5.8 base

for p5_ports in $( ls /opt/local/var/macports/sources/ 
rsync.macports.org/release/ports/perl ); do
	for p5_deps in $( port deps $p5_ports | tail +2 ); do
		echo "${p5_ports},${p5_deps}"
	done
done

# file name: port_p5_module_deps.sh

#!/bin/sh
# file name: port_p5_modules.sh
# purpose: remove port p5 modules that are installed as part of  
perl5.8 base

startdir=`pwd`
p5dir=/opt/local/var/macports/sources/rsync.macports.org/release/ports/ 
perl

cd $p5dir

for p5_perl in $( ls | sed 's|p5-||g' | sed 's|-|,|g' ); do
	echo "${p5_perl}"
done

cd $startdir

# file name: port_p5_modules.sh

BlackBook: root#



More information about the macports-dev mailing list