On Mar 3, 2009, at 7:55 AM, Vincent Lefevre wrote:

On 2009-03-03 07:30:18 -0800, Bradley Giesbrecht wrote:
On Mar 1, 2009, at 5:11 PM, Vincent Lefevre wrote:
if [ -n "$PERL5LIB" ]; then
PERL5LIB="${PERL5LIB}:/opt/local/lib/perl5/vendor_perl"
else
export PERL5LIB
PERL5LIB="/opt/local/lib/perl5/vendor_perl"
fi

My path to p5's looks like this:
        /opt/local/lib/perl5/vendor_perl/5.8.9/

Wouldn't the full path including the version dir need to be added to
PERL5LIB?

I don't know whether this has changed in Perl 5.8.9 (I haven't
upgraded yet), but with previous versions, the version dir should
not be used in $PERL5LIB, as perl automatically adds the paths so
that modules installed with previous versions can still be used.
For instance:

$ perl -V
[...]
 %ENV:
PERL5LIB="/Users/vinc17/lib/site_perl:/opt/local/lib/perl5/ vendor_perl"
 @INC:
   /Users/vinc17/lib/site_perl/darwin-2level
   /Users/vinc17/lib/site_perl
   /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level
   /opt/local/lib/perl5/vendor_perl/5.8.8
   /opt/local/lib/perl5/vendor_perl/5.8.7/darwin-2level
   /opt/local/lib/perl5/vendor_perl/5.8.7
   /opt/local/lib/perl5/vendor_perl
   /opt/local/lib/perl5/5.8.8/darwin-2level
   /opt/local/lib/perl5/5.8.8
   /opt/local/lib/perl5/site_perl/5.8.8/darwin-2level
   /opt/local/lib/perl5/site_perl/5.8.8
   /opt/local/lib/perl5/site_perl/5.8.7/darwin-2level
   /opt/local/lib/perl5/site_perl/5.8.7
   /opt/local/lib/perl5/site_perl
   /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level
   /opt/local/lib/perl5/vendor_perl/5.8.8
   /opt/local/lib/perl5/vendor_perl/5.8.7/darwin-2level
   /opt/local/lib/perl5/vendor_perl/5.8.7
   /opt/local/lib/perl5/vendor_perl

# export
Adding export PERL5LIB=/opt/local/lib/perl5/vendor_perl
  @INC:
    /opt/local/lib/perl5/vendor_perl/5.8.9/darwin-thread-multi-2level
    /opt/local/lib/perl5/vendor_perl/5.8.9
    /opt/local/lib/perl5/vendor_perl
    /opt/local/lib/perl5/5.8.9/darwin-thread-multi-2level
    /opt/local/lib/perl5/5.8.9
    /opt/local/lib/perl5/site_perl/5.8.9/darwin-thread-multi-2level
    /opt/local/lib/perl5/site_perl/5.8.9
    /opt/local/lib/perl5/site_perl
    /opt/local/lib/perl5/vendor_perl/5.8.9/darwin-thread-multi-2level
    /opt/local/lib/perl5/vendor_perl/5.8.9
    /opt/local/lib/perl5/vendor_perl
    .

I don't have site_perl on my system so I'll assume that's something you added in one way or another.


Are you suggesting using this in Portfiles?

Either the Portfile could provide the necessary options (I don't know
which ones) to change the default @INC in the perl binary (with the
advantage that modifying the environment variable won't be necessary)
or the PERL5LIB variable needs to be changed in the .profile (either
by MacPorts (base?) or by the user).

It would be nice to not have to change .profile. If a system has multiple users or a user is added later this would be one more thing that would need to be done.

Maybe we could add a port "macports-profile" that would be a script similar to:
/opt/local/share/macports/setupenv.bash

with the addition of checking for perl5 activation among others.

And then instead making a many alterations to a users .profile we would just add one:
. /opt/local/sbin/macports_profile

The macports_profile script would always append it's vars to the front of existing vars so if PERL5LIB is already set in the users .profile it would be maintained the the macports paths prepended.

I suppose the file /opt/local/etc/maports_profile.conf could be looked for and if found could be parsed for overrides and additions.

Then if a new user is added they could run /opt/local/sbin/ macports_profile which would check the users .profile file and add the source line if it's missing.

This is just an idea, the names and locations of the files might not be great. Heck, the whole idea might be flawed.

If I have perl5.8 active and install a p5 and then deactivate perl5.8
and activate perl5.10 should I expect my p5 to be active and functional?

I haven't tried. See the "perl -V" output without the version number
in $PERL5LIB.


Works.

I have a macports on my laptop that I'm keeping clean just to help resolve this perl5 issue. I hope we can come up with a work solution soon. Even if it's just the decision to instruct users to add PERL5LIB to their .profile by hand.

Oh, and what about other shells? Let that small base work it out themselves as they are probably used to doing?

//Brad
_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users

Reply via email to