On Sat, Jul 28, 2001 at 09:20:10AM -0700, Justin Erenkrantz wrote:
> On Sat, Jul 28, 2001 at 08:48:59AM -0700, Justin Erenkrantz wrote:
> > On Sat, Jul 28, 2001 at 09:06:37AM -0400, Jeff Trawick wrote:
> > > FYI... I won't be offering a solution in this timeframe. I played
> > > with it for a couple of hours yesterday; no such time today. (Where
> > > is Sascha when we need him :) )
> > >
> > > I'm not against rolling a beta with this temporary brokenness since
> > > (I think) Justin mentioned that GNU make is a temporary work-around on
> > > Solaris and so it ought to be fine on OS/390 as well.
> >
> > I'm building with /usr/ccs/bin/make right now on Solaris 8 and it
> > generates exports.c fine. I'll try and get a clean tagged tree and see
> > if I can reproduce this. No promises though. -- justin
>
> Well, I'm not sure I'm hitting the same thing you are, but I'm running
> into a problem with Solaris 7 - it gives me a problem about not knowing
> how to build test_char.h. However, if I execute the make again, it goes
> cleanly. Odd. This doesn't happen with Solaris 8, so this may be a bug
> with /usr/ccs/bin/make? Let me hack at this for a few and see if I can
> come up with a fix. -- justin
Based on what I can tell, /usr/ccs/bin/make on Solaris 7 will only do
the dependency generation at the beginning of the execution and toss
out any dependencies that are invalid *at the start of make's
execution* (i.e. no lazy bindings). At that point in time,
test_char.h does not exist, so it seems to remove any dependency
that reference this non-existant file.
Therefore, when it tries to compile util.lo (which is dependent upon
test_char.h), make will fail because it has removed the test_char.h
dependency because it thinks that test_char.h does not exist (even
though by the time we compile util.lo, test_char.h does exist).
Simply adding a blank test_char.h causes the make to work properly
(i.e. touch test_char.h). When we actually compile the server
directory, gen_test_char will be newer than the blank test_char.h,
so make will recreate test_char.h properly. And, since test_char.h
was present when we started execution, make will honor the test_char.h
dependency for util.lo.
This is a lame hack for a broken make. Solaris 8's /usr/ccs/bin/make
doesn't exhibit this. And, I think Cliff mentioned that Solaris 2.6
doesn't either. And, GNU make doesn't have this problem either.
Add a blank test_char.h to the tarball and we should be okay with
Solaris 7. Someone who is more knowledgable about make may be able
to come up with a better solution.
(This isn't the exact problem that Jeff described, but this is the
one that I'm seeing with Solaris 7's make.) -- justin