Mailing List Archive

Badly placed libs
Crimeny... I just went to run a Tk app, and was told it couldn't find Tk.pm.
Well, thinking about the change in architecture libs for HP, I brain-spaced
and assumed it was referring to the auto/Tk stuff under hpux, that would have
to be moved.

Nope.

After telling Configure (I ftp'd the full 5.001n and ran Configure from
scratch) to use /usr/local as the prefix, it proceeded to put everything
in /usr/local/lib, instead of /usr/local/lib/perl5. Perl puts *way* too
much stuff in its lib area to *not* use its own subdir under lib. Maybe this
was a goof in Configure?

Randy
--
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^
Randy J. Ray -- U S WEST Technologies IAD/CSS/DPDS Phone: (303)595-2869
Denver, CO rjray@lookout.ecte.uswc.uswest.com

I don't suffer from insanity. I enjoy every minute of it.
Re: Badly placed libs [ In reply to ]
On Wed, 1 Nov 1995, Randy J Ray wrote:

> After telling Configure (I ftp'd the full 5.001n and ran Configure from
> scratch) to use /usr/local as the prefix, it proceeded to put everything
> in /usr/local/lib, instead of /usr/local/lib/perl5. Perl puts *way* too
> much stuff in its lib area to *not* use its own subdir under lib. Maybe this
> was a goof in Configure?

It certainly wasn't intentional. It might be a side effect of the
hpux hints file. If you could track this down, I'd appreciate it.

Andy Dougherty doughera@lafcol.lafayette.edu
Re: Badly placed libs [ In reply to ]
>> After telling Configure (I ftp'd the full 5.001n and ran Configure from
>> scratch) to use /usr/local as the prefix, it proceeded to put everything
>> in /usr/local/lib, instead of /usr/local/lib/perl5. Perl puts *way* too
>> much stuff in its lib area to *not* use its own subdir under lib. Maybe this
>> was a goof in Configure?
>
>It certainly wasn't intentional. It might be a side effect of the
>hpux hints file. If you could track this down, I'd appreciate it.

Well, the hpux hints file uses the same values that the old hpux_9 one did.
Running Configure to the point of selecting a library path on both 5.001m
and 5.001n:

* Both times I was offered /opt/perl5 as a default prefix, and entered in
/usr/local instead.

* 5.001m Configure offered /usr/local/lib/perl5 as a default library path.
5.001n Configure offered /usr/local/lib.

Ummmm, wait a minute. The new hints/hpux.sh file actually sets not only prefix,
but privlib, archlib, and man3dir, as well. hints/hpux_9.sh in 5.001m only
set prefix.

Because of this, the eval of prefixit causes dflt to be set to the value of
privlib. Right before the call to prefixit, privlib is still /opt/perl5/lib.
But the default offered is /usr/local/lib. So, since privlib is set, we are
defaulting to a variant of it (in which $oldprefix, /opt/perl5, is stream-
edited into $prefix, /usr/local), instead of the second option for dflt:
lib/$package, where $package is perl5.

Let me back up, I'm confusing myself. :-)

When prefixit is evaluated, $1 .. $3 are (dflt privlib lib/perl5)
First thing, $3 is shown to be neither "" or none, so second case is exec'd
tp is then eval'd to "$oldprefix-$2-", which matches the second case,
resulting in $1 (dflt) being set to $privlib stream-edited to change
oldprefix to prefix, and we get /usr/local/lib from /opt/perl5/lib

In 5.001m, privlib was not set, so:

When prefixit is evaluated, $1 .. $3 are (dflt privlib lib/perl5)
First thing, $3 is shown to be neither "" or none, so second case is exec'd
tp is then eval'd to "$oldprefix-$2-", which matches the first case, since
there is nothing in $privlib to fill in between the two -. As a result,
the eval sets dflt to $prefix/$3, or /usr/local/lib/perl5, which is what
we want.


There are two ways to fix this. One is obvious-- choose to either not give
defaults to privlib and the others, only prefix *OR* default privlib to
/opt/perl5/lib/perl5 so that the result is still correct.

The second is to unset the remaining few defaults iff prefix is altered in
it's turn. That is, when you ask for the prefix to use rather than the default,
and their answer is in fact different from the default, unset privlib, and
probably archlib. The problem here, is, that since the default of prefix
already included "perl5", it was assumed that the rest of the definitions
adequately distinguished their directories as perl5-specific. And they do.
Right up to the point where I changed prefix to no longer contain "perl5".

Wow. My first real "bug". Why on earth did it have to be in Configure? I have
a head-ache... where's my asprin...

Randy
P.S. Upon looking, just before I sent this, I see that leaving man3dir at
its hint/hpux.sh default will still put those pages in /usr/local/man/man3,
again removing any reference to perl5. Whichever route you take, should also
cover this value as well, I suppose.
--
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^
Randy J. Ray -- U S WEST Technologies IAD/CSS/DPDS Phone: (303)595-2869
Denver, CO rjray@lookout.ecte.uswc.uswest.com

I don't suffer from insanity. I enjoy every minute of it.
Re: Badly placed libs [ In reply to ]
On Wed, 1 Nov 1995, Randy J Ray wrote:

> >> After telling Configure (I ftp'd the full 5.001n and ran Configure from
> >> scratch) to use /usr/local as the prefix, it proceeded to put everything
> >> in /usr/local/lib, instead of /usr/local/lib/perl5. Perl puts *way* too
> >> much stuff in its lib area to *not* use its own subdir under lib. Maybe this
> >> was a goof in Configure?

[ Long twisted investigation of "eval $prefixit"]

Sorry about that -- I didn't mean to send you that deeply into
Configure's internals. Very good diagnosis.

I think I'll attack this from the hint file end. That switching of prefix
is intentional, though it was primarily there to help preserve a previous
Configure run's defaults if the user changed his/her mind about prefix.

> Wow. My first real "bug". Why on earth did it have to be in Configure? I have
> a head-ache... where's my asprin...

Now you know how *I* feel :-)

Andy Dougherty doughera@lafcol.lafayette.edu