Last Comment Bug 714365 - DictionaryHelpers.cpp gets rebuilt on every build
: DictionaryHelpers.cpp gets rebuilt on every build
Status: RESOLVED FIXED
[inbound]
:
Product: Core
Classification: Components
Component: XPConnect (show other bugs)
: Trunk
: All All
: -- normal (vote)
: mozilla12
Assigned To: Nathan Froyd [:froydnj]
:
:
Mentors:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-12-30 14:29 PST by :Ehsan Akhgari
Modified: 2012-01-25 16:49 PST (History)
8 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
patch (1.30 KB, patch)
2012-01-23 07:57 PST, Nathan Froyd [:froydnj]
ted: review+
Details | Diff | Splinter Review

Description :Ehsan Akhgari 2011-12-30 14:29:03 PST
Even if none of its dependencies have changed.  This causes libxul to be built on every single build, which is really annoying.
Comment 1 Kyle Huey [:khuey] (Exited; not receiving bugmail, email if necessary) 2011-12-30 14:42:57 PST
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.
Comment 2 Mark Banner (:standard8) 2012-01-23 03:33:00 PST
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 :aceman 2012-01-23 03:59:29 PST
From the outputs in the comments this doesn't look like Mac OS X only.
Comment 4 Nathan Froyd [:froydnj] 2012-01-23 07:57:04 PST
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.
Comment 5 Nathan Froyd [:froydnj] 2012-01-23 08:15:15 PST
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.
Comment 6 Mark Banner (:standard8) 2012-01-24 05:55:35 PST
Thanks Nathan.

Landed on inbound: https://hg.mozilla.org/integration/mozilla-inbound/rev/fffb40f09574
Comment 7 Ed Morley [:emorley] 2012-01-25 07:21:45 PST
https://hg.mozilla.org/mozilla-central/rev/fffb40f09574
Comment 8 :aceman 2012-01-25 12:20:31 PST
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 Olli Pettay [:smaug] (way behind * queues, especially ni? queue) 2012-01-25 16:49:33 PST
Thanks for fixing my bad code, Nathan!

Note You need to log in before you can comment on or make changes to this bug.