Closed Bug 593578 Opened 14 years ago Closed 7 years ago

Header files dependency no longer works when building from english version of VS2005

Categories

(Firefox Build System :: General, defect)

x86
Windows XP
defect
Not set
major

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: mayhemer, Unassigned)

Details

Attachments

(1 file)

Doesn't work in debug builds.

Say I have:

nsClassA.h
nsClassB.h
nsClassA.cpp that includes nsClassA.h
nsClassB.cpp that includes nsClassA.h and nsClassB.h

It used to work that if I modified nsClassA.h both nsClassA.cpp and nsClassB.cpp got rebuilt.  It was very reliable, logic and I got used to this.

Since a certain moment, when I modify nsClassA.h, only nsClassA.cpp gets rebuilt.  This is a silent failure of the build system that mysteriously screwed my builds and cost me time to figure out "what the hell is happening here?"

This might start from the time we dump a list of all include files to the console.

Workaround is to touch all cpp files that include a modified header or simply do clean and build to be save, what really takes time.
Can you give an example of nsClassA and nsClassB?
dom/src/storage/nsDOMStoragePersistentDB.h for nsClassA.*
dom/src/storage/nsDOMStorageDBWrapper.* for nsClassB.*
Are you using a non-English version of MSVC? If so, this is a dup of bug 587372.
Microsoft Visual Studio 2005
Version 8.0.50727.762  (SP.050727-7600)
Microsoft .NET Framework
Version 2.0.50727 SP2

Installed Edition: VC Express

Microsoft Visual C++ 2005

It is an English version on English legal version of Windows XP (up to date).
I wanted to give you my build log, but modifying a header doesn't make any cpp file to rebuild.  It is after a full rebuild (make clean and make of the whole dom tree).
> This might start from the time we dump a list of all include files to the
> console.
You should not see include files on the console. cl.py seems to fail to find include files for some reason.
Tell me what info about my build config you want and I will provide it.  BTW: I am using MozillaBuild package v1.2 (probably quit old).  Maybe the problem is here?
Please provide some output of include files which you see on the console.
Attached file log
I modified d:\mozilla\mozilla-central\dom\src\storage\nsDOMStoragePersistentDB.cpp, cd to d:\mozilla\mozilla-central\_obj-browser-debug\dom\src\storage\ and run make, done from within VC IDE as a build command.
Another clue: nsDOMStorageDBWrapper._cpp_ doesn't include directly the nsDOMStoragePersistentDB.h, but nsDOMStorageDBWrapper._h_ does.
Ah, so it's a second-level dependency.
ShowIncludes should pick those up.  You shouldn't be getting the output directed to the console.  The problem is most likely tied to that.
Could you reproduce it without VC IDE?
OK, I did more testing.

- when I do "cd _obj-browser-debug/dom/src/storage/ ; make" from the IDE (while nsDOMStorageDBWrapper.cpp and nsDOMStoragePersistentDB.cpp were both modified, i.e. they were rebuilt by calling make from the IDE) and then I do "make -C _obj-browser-debug/dom/src/storage/" from bash prompt while I changed nsDOMStoragePersistentDB.h, NONE of the cpp files is rebuilt (so it looks like running make from the IDE is not correctly filling some dependencies cache?)

- when I modify nsDOMStorageDBWrapper.cpp and do make -C _obj-browser-debug/dom/src/storage/ from bash prompt and then I modify nsDOMStoragePersistentDB.h and run make -C _obj-browser-debug/dom/src/storage/ from bash prompt again, then nsDOMStorageDBWrapper.cpp is rebuilt, but only this file, while I would expect also nsDOMStoragePersistentDB.cpp gets rebuilt.

- so, I modified also nsDOMStoragePersistentDB.cpp, rebuilt from bash again (it got rebuilt as expected), then I modified nsDOMStoragePersistentDB.h, and ran make again from bash prompt and, what a surprise? - both files get rebuilt as expected now!

I tried to change the command in IDE project from "cd _obj/project ; make" to "make -C _obj/project" and it DIDN'T help.
It seems that python cannot catch the redirected output from a child process if it is launched from the VC IDE for some unknown reason.
Summary: Header files dependency no longer works under Windows → Header files dependency no longer works when building from english version of VS2005
(In reply to comment #15)
> It seems that python cannot catch the redirected output from a child process if
> it is launched from the VC IDE for some unknown reason.

Can I check this theory somehow?
Forgot to mention: I can see the list of headers, generated by ShowIncludes, displayed in the build output window of VS IDE.
(In reply to comment #17)
> Forgot to mention: I can see the list of headers, generated by ShowIncludes,
> displayed in the build output window of VS IDE.
Headers should not be displayed in the build output window if python caught the redirected output correctly. So I believe my theory was correct.
However I have no idea how to fix the problem :-(
We don't support VS2005 any more.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: