DictionaryHelpers.cpp gets rebuilt on every build

RESOLVED FIXED in mozilla12

Status

()

Core
XPConnect
RESOLVED FIXED
6 years ago
6 years ago

People

(Reporter: Ehsan, Assigned: froydnj)

Tracking

Trunk
mozilla12
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [inbound])

Attachments

(1 attachment)

Even if none of its dependencies have changed.  This causes libxul to be built on every single build, which is really annoying.
INFO:pymake.data: Considering target 'DictionaryHelpers.cpp'
INFO:pymake.data: Considering target 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf'
INFO:pymake.data: Searching for implicit rule to make 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf'
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1180:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf.c' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1212:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf.cpp' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1279:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf.pl' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1284:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf.sh' not mentioned and doesn't exist.
INFO:pymake.data: Couldn't find implicit rule to remake 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.conf'
INFO:pymake.data: Considering target 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py'
INFO:pymake.data: Searching for implicit rule to make 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py'
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1180:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py.c' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1212:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py.cpp' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1279:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py.pl' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1284:0 doesn't match: prerequisite 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py.sh' not mentioned and doesn't exist.
INFO:pymake.data: Couldn't find implicit rule to remake 'c:/dev/mozilla-central/js/xpconnect/src/dictionary_helper_gen.py'
INFO:pymake.data: Considering target 'FORCE'
INFO:pymake.data: Searching for implicit rule to make 'FORCE'
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1180:0 doesn't match: prerequisite 'FORCE.c' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1212:0 doesn't match: prerequisite 'FORCE.cpp' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1279:0 doesn't match: prerequisite 'FORCE.pl' not mentioned and doesn't exist.
INFO:pymake.data:  Terminal rule at c:\dev\mozilla-central\config\rules.mk:1284:0 doesn't match: prerequisite 'FORCE.sh' not mentioned and doesn't exist.
INFO:pymake.data: Couldn't find implicit rule to remake 'FORCE'
INFO:pymake.data:Remaking DictionaryHelpers.cpp using rule at c:\dev\mozilla-central\obj-i686-pc-mingw32\js\xpconnect\src\Makefile:212:0 because FORCE is newer.


That's ... interesting.
The issue appears to be that when writing .deps/dictionary_helper_gen.pp the dictionary_helper_gen.py script appears to be doing the output as:

DictionaryHelpers.cpp: \
                nsIDOMEvent.idl \
                nsIDOMCustomEvent.idl \
                nsIDOMPopStateEvent.idl \
                nsIDOMHashChangeEvent.idl \
                nsIDOMPageTransitionEvent.idl \
                nsIDOMCloseEvent.idl \
                nsIDOMUIEvent.idl \
                nsIDOMMouseEvent.idl \
                nsIIDBDatabase.idl \
                nsIIDBObjectStore.idl

rather than:

DictionaryHelpers.cpp: \
                ../../../dist/idl/nsIDOMEvent.idl \
                ../../../dist/idl/nsIDOMCustomEvent.idl \
                ../../../dist/idl/nsIDOMPopStateEvent.idl \
                ../../../dist/idl/nsIDOMHashChangeEvent.idl \
                ../../../dist/idl/nsIDOMPageTransitionEvent.idl \
                ../../../dist/idl/nsIDOMCloseEvent.idl \
                ../../../dist/idl/nsIDOMUIEvent.idl \
                ../../../dist/idl/nsIDOMMouseEvent.idl \
                ../../../dist/idl/nsIIDBDatabase.idl \
                ../../../dist/idl/nsIIDBObjectStore.idl

which is what dombindingsgen.py does.

It could be the difference between the two findIDL functions, but I'm not quite sure:

http://hg.mozilla.org/mozilla-central/file/758005504cab/js/xpconnect/src/dictionary_helper_gen.py#l73
http://hg.mozilla.org/mozilla-central/file/758005504cab/js/xpconnect/src/codegen.py#l86

Maybe someone can take this on and save the builders some time?

Comment 3

6 years ago
From the outputs in the comments this doesn't look like Mac OS X only.

Updated

6 years ago
OS: Mac OS X → All
Hardware: x86 → All
Version: unspecified → Trunk
(Assignee)

Comment 4

6 years ago
Created attachment 590716 [details] [diff] [review]
patch

Here's a patch which at least adds the ../.. bits; we were appending the filename as-is, rather than the filename which findIDL handed us.  The latter is what dombindingsgen.py does.
(Assignee)

Comment 5

6 years ago
Comment on attachment 590716 [details] [diff] [review]
patch

This does prevent DictionaryHelpers.cpp from getting rebuilt; it does not prevent libxul.so from getting rebuilt.  But this is an improvement in any event.
Attachment #590716 - Flags: review?(ted.mielczarek)
Attachment #590716 - Flags: review?(ted.mielczarek) → review+
Assignee: nobody → nfroyd
(Assignee)

Updated

6 years ago
Keywords: checkin-needed
Thanks Nathan.

Landed on inbound: https://hg.mozilla.org/integration/mozilla-inbound/rev/fffb40f09574
Keywords: checkin-needed
Whiteboard: [inbound]
Target Milestone: --- → mozilla12

Comment 7

6 years ago
https://hg.mozilla.org/mozilla-central/rev/fffb40f09574
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED

Comment 8

6 years ago
You made it guys! This was the last offending file for me. A rebuild without any changes now does no longer relink libxul for me! Thanks you.

Comment 9

6 years ago
Thanks for fixing my bad code, Nathan!
You need to log in before you can comment on or make changes to this bug.