The default bug view has changed. See this FAQ.

DictionaryHelpers.cpp gets rebuilt on every build

RESOLVED FIXED in mozilla12

Status

()

Core
XPConnect
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: Ehsan, Assigned: froydnj)

Tracking

Trunk
mozilla12
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [inbound])

Attachments

(1 attachment)

(Reporter)

Description

5 years ago
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

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

Updated

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

Comment 4

5 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

5 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

5 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
https://hg.mozilla.org/mozilla-central/rev/fffb40f09574
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → FIXED

Comment 8

5 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.
Thanks for fixing my bad code, Nathan!
You need to log in before you can comment on or make changes to this bug.