Closed Bug 1556185 Opened 5 years ago Closed 5 years ago

Looks like dom/chrome-webidl/*.webidl files do not depend on mozilla-config.h

Categories

(Firefox Build System :: General, defect)

defect
Not set
normal

Tracking

(firefox69 fixed)

RESOLVED FIXED
mozilla69
Tracking Status
firefox69 --- fixed

People

(Reporter: ehsan.akhgari, Assigned: chmanchester)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

Attached file central as beta

STR:

  1. Build mozilla-central with a typical optimized mozconfig.
  2. Apply the attached patch to build mozilla-central as beta. The key part of the patch is that it changes the milestone version number to 69, which results in IS_NIGHTLY to be removed from mozilla-config.h.
  3. Rebuild mozilla-central without clobbering. The build fails like this:
24:07.53 toolkit/library/libxul.so                                                                                                                                                                                              
25:32.80 /usr/bin/ld: ../../dom/bindings/UnifiedBindings2.o: in function `mozilla::dom::ChromeUtils_Binding::clearRecentJSDevError(JSContext*, unsigned int, JS::Value*)':                                                      
25:32.80 /home/ehsan/moz/src/obj-ff-opt/dom/bindings/ChromeUtilsBinding.cpp:4308: undefined reference to `mozilla::dom::ChromeUtils::ClearRecentJSDevError(mozilla::dom::GlobalObject&)'                                        
25:32.80 /usr/bin/ld: ../../dom/bindings/UnifiedBindings2.o: in function `mozilla::dom::ChromeUtils_Binding::get_recentJSDevError(JSContext*, unsigned int, JS::Value*)':                                                       
25:32.80 /home/ehsan/moz/src/obj-ff-opt/dom/bindings/ChromeUtilsBinding.cpp:4277: undefined reference to `mozilla::dom::ChromeUtils::GetRecentJSDevError(mozilla::dom::GlobalObject&, JS::MutableHandle<JS::Value>, mozilla::Err
orResult&)'                                                                                                                                                                                                                     
25:59.35 /usr/bin/ld: libxul.so: hidden symbol `_ZN7mozilla3dom11ChromeUtils19GetRecentJSDevErrorERNS0_12GlobalObjectEN2JS13MutableHandleINS4_5ValueEEERNS_11ErrorResultE' isn't defined                                        
25:59.35 /usr/bin/ld: final link failed: bad value                                                                                                                                                                              
25:59.65 clang-8: error: linker command failed with exit code 1 (use -v to see invocation)                                                                                                                                      
25:59.65 make[4]: *** [/home/ehsan/moz/src/config/rules.mk:669: libxul.so] Error 1                                                                                                                                              
25:59.65 make[3]: *** [/home/ehsan/moz/src/config/recurse.mk:74: toolkit/library/target] Error 2                                                                                                                                
25:59.65 make[2]: *** [/home/ehsan/moz/src/config/recurse.mk:34: compile] Error 2                                                                                                                                               
25:59.65 make[1]: *** [/home/ehsan/moz/src/config/rules.mk:400: default] Error 2                                                                                                                                                
25:59.65 make: *** [client.mk:125: build] Error 2                                                                                                                                                                               
  1. touch dom/chrome-webidl/ChromeUtils.webidl
  2. ./mach build. Now the build succeeds.

The functions the linker thinks were being called from the WebIDL generated code were behind an #ifdef NIGHTLY_BUILD.

We're using $(GLOBAL_DEPS) as dependencies in the one-off makefile for these written by the make backend, but that particular makefile is included too early for GLOBAL_DEPS to be set. Usually GLOBAL_DEPS would list autoconf.mk, which would reflect changes to defines, which seems to be the intention here.

Assignee: nobody → cmanchester

webidlsrcs.mk is treated specially by the build system, and this entire
process should be supported better by moz.build, but in the meantime this
fixes the clobber bug caused by not re-building these targets when defines
are updated.

Pushed by cmanchester@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ba230c7ab421
Ensure autoconf.mk is tracked as a dependency when preprocessing webidls. r=nalexander
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla69
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: