bug-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #23286] Frameworks being rebuilt when there's not need to


From: Nicola Pero
Subject: [bug #23286] Frameworks being rebuilt when there's not need to
Date: Sun, 18 May 2008 17:48:21 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

URL:
  <http://savannah.gnu.org/bugs/?23286>

                 Summary: Frameworks being rebuilt when there's not need to
                 Project: GNUstep
            Submitted by: nico
            Submitted on: Sunday 05/18/2008 at 17:48
                Category: Makefiles
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: nico
             Open/Closed: Open
         Discussion Lock: Any

    _______________________________________________________

Details:

I found this fascinating bug while compiling StepTalk.  I'm
recording it here as I don't have time to fix it now, but
it needs fixing. :-)

What happened is that some header files got stored in the
framework Headers directly at 18:33 and the following ones 
at 18:34.  I guess I was unlucky and the headers were being 
installed just as the clock was changing ?

Anyway, the directory containing the headers then is reported
as being last modified at 18:34.

When everything is built, and you type 'make', make will detect
that some header files are older than the directory that contains
them.  And they depend on that directory!  So, it will 
rebuild them all :-)

To clarify, this is the dependency triggering the rebuild --

   Prerequisite `StepTalk.framework/Versions/0/Headers' is newer than target
`StepTalk.framework/Versions/0/Headers/STRemoteConversation.h'.

And that obviously then triggers a recompilation of the framework.

Now the fascinating bit is that this new (and pointless) rebuild
rewrites the 'old' header files to update them.  And that
implicitly changes the last modified date of the directory
to now.
So the next time you type 'make', the *other* header files are
now older than the directory, so make does yet another 
pointless rebuild to rebuild them - and yet another
compilation gets triggered.

And so on ... now the other half of the header files are
older than the directory ... and so on, for ever. ;-)

As an end result, every type you type 'make' you trigger 
a rebuild, which is obviously wrong. :-(

Thanks




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?23286>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]