--- parrot-current/Configure.pl Sat Mar 17 18:15:17 2007
+++ parrot-andy/Configure.pl Wed Mar 21 11:05:41 2007
@@ -463,9 +463,9 @@
init::defaults
init::install
init::miniparrot
- inter::progs
init::hints
init::headers
+ inter::progs
inter::make
inter::lex
inter::yacc
--
Andy Dougherty doug...@lafayette.edu
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.
For further reading ...
http://rt.perl.org/rt3//Public/Bug/Display.html?id=41180
http://rt.perl.org/rt3//Public/Bug/Display.html?id=41195
kid51
> 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.
Is it possible to get a diff between the two configurations generated with and
without this patch?
-- c
>
>
> 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.
>
> Is it possible to get a diff between the two configurations
> generated with and
> without this patch?
>
myconfig.first is the result of applying Configure.pl as it was in
trunk from Jan to Mar. myconfig.second is what I was using after
reverting to the earlier version of @steps -- and is now what is once
again in trunk.
> < ld='c++', ldflags=' -L/usr/local/lib
> -L/Users/jimk/work/fresh/blib/lib -flat_namespace ', ---
> > ld='/usr/bin/g++-3.3', ldflags=' -L/usr/local/lib
> > -L/Users/jimk/work/fresh/blib/lib -flat_namespace ',
What's the output of:
$ c++ --version
$ which c++
$ cc --version
$ which cc
-- c
[parrot] 502 $ c++ --version
c++ (GCC) 4.0.3
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There
is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
[parrot] 503 $ which c++
/usr/local/bin/c++
[parrot] 504 $ cc --version
cc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There
is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
[parrot] 505 $ which cc
/usr/bin/cc
[parrot] 506 $
> 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 doug...@lafayette.edu
> On Mar 24, 2007, at 11:53 PM, chromatic wrote:
> > On Saturday 24 March 2007 09:06, James Keenan wrote:
> >> < ld='c++', ldflags=' -L/usr/local/lib
> >> -L/Users/jimk/work/fresh/blib/lib -flat_namespace ', ---
> >>> ld='/usr/bin/g++-3.3', ldflags=' -L/usr/local/lib
> >>> -L/Users/jimk/work/fresh/blib/lib -flat_namespace ',
Here's a quick guess; move away or rename /usr/bin/g++-3.3 temporarily, then
try Configure.pl again. Do you remember the versions of the compiler you
installed?
-- c
Huh? He shouldn't have to do anything. It should all be working now.
--
Andy Dougherty doug...@lafayette.edu