Open Bug 1293516 Opened 8 years ago Updated 2 years ago

WebIDL build failures when switching build between opt and debug

Categories

(Firefox Build System :: General, defect)

defect

Tracking

(Not tracked)

People

(Reporter: gps, Unassigned)

References

(Blocks 1 open bug)

Details

Earlier today, I landed a change that inadvertently led to Linux opt and debug builds sharing the same objdir cache on TaskCluster.

This led to errors such as the one seen at https://public-artifacts.taskcluster.net/N7MX6v2MTeynyqh8NpxW1w/0/public/logs/live_backing.log:

  dom/bindings/TestCodeGenBinding.cpp:34165:9: error: 'class mozilla::dom::TestInterface' has no member named 'PassUnion2' 

If you poke in dom/bindings/test/TestBindingHeader.h, you see PassUnion2 and friends behind a conditional "#ifdef DEBUG".

It certainly looks like WebIDL binding generation isn't getting chained back to the proper dependencies so changes in DEBUG and other preprocessor defines result in bindings regeneration.

I "fixed" TaskCluster by adding the opt/debug build type to the cache name so we don't see this in automation. But developers could possibly hit it. And, if WebIDL headers ever use more defines, we could start seeing this as a source of needed clobbers.
Hmm.  There's a similar issue in bug 998926 and bug 1116225 but we're pretty sure those come down to bug 1103153.

The error message in this bug does sound like somehow binding generation itself is not depending on configure state, which is pretty weird; I was sure we had that working...
Product: Core → Firefox Build System
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.