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

RESOLVED WONTFIX

Status

()

Core
Build Config
--
major
RESOLVED WONTFIX
7 years ago
7 months ago

People

(Reporter: mayhemer, Unassigned)

Tracking

Trunk
x86
Windows XP
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

7 years ago
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?
(Reporter)

Comment 2

7 years ago
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.
(Reporter)

Comment 4

7 years ago
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).
(Reporter)

Comment 5

7 years ago
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.
(Reporter)

Comment 7

7 years ago
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.
(Reporter)

Comment 9

7 years ago
Created attachment 472147 [details]
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.
(Reporter)

Comment 10

7 years ago
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?
(Reporter)

Comment 14

7 years ago
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.
(Reporter)

Updated

7 years ago
Summary: Header files dependency no longer works under Windows → Header files dependency no longer works when building from english version of VS2005
(Reporter)

Comment 16

7 years ago
(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?
(Reporter)

Comment 17

7 years ago
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 :-(

Comment 19

7 months ago
We don't support VS2005 any more.
Status: NEW → RESOLVED
Last Resolved: 7 months ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.