On Sat, 24 Mar 2007, chromatic wrote:

> On Saturday 24 March 2007 05:26, James E Keenan wrote:
> 
> > Andy Dougherty wrote:
> 
> > > Hints need to come *before* inter/progs.  The hints set up various
> > > platform-specific callbacks to be performed after the different programs
> > > are selected.  Actually, I suspect they should even come before the
> > > init::install unit.  Certainly in perl5's hints, there are a number that
> > > modify the default installation directories.  However, I don't understand
> > > parrot's installation plan, so I have left this alone.
> 
> > Coke moved inter::progs to the position you recommended ($steps[6]) in
> > r17671 on 2007-03-20.  This essentially reverted to r16268 from a change
> > made in 16416.
> 
> We're probably just working around something weird on your system; it would 
> be 
> nice if we could figure out what it is and fix it for you.

There is something weird in his system -- a broken c++ -- but the problem 
is that Parrot's Configure wasn't letting him override the broken c++ link 
with one that works.

I don't know what specific issue 41180 (which introduced this problem) was 
trying to solve, but the proposed fix wasn't the right one.

Here's why:

Suppose you want to build parrot with a compiler other than the one used 
to build the perl that is currently running Configure.pl.  For example, 
suppose your perl were built with gcc, but you wanted to build parrot with 
the vendor's cc.  If inter/progs.pm runs before the platform-specific 
hints, how is it to know which flags to suggest?  It can't.  That 
information is in the hints file, which hasn't run yet.

A reasonable question to ask then is "How can the hints file know which 
flags to suggest if the user hasn't even picked a compiler yet?"  The 
answer is that it can't -- but it *can* set up a call-back or "trigger". 
See config/hints/solaris.pm for examples.

I think what was happening in James's case is that when inter/progs.pm ran 
first, the subsequent run of hints/darwin.pm was *unconditionally* setting 
ld=c++, overriding his previous setting.

A summary:  The current state is correct.  init::hints comes before 
inter::progs.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to