Open
Bug 1212587
Opened 10 years ago
Updated 3 years ago
Intermittent WebIDL.WebIDLError: error: Unresolved type '<unresolved scope>::External'., Window.webidl line 69:43
Categories
(Firefox Build System :: General, defect)
Tracking
(Not tracked)
NEW
People
(Reporter: KWierso, Unassigned)
References
Details
![]() |
||
Comment 1•10 years ago
|
||
"interface External" is right there in External.webidl.
Now that webidl file is only looked at if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner'] in dom/webidl/moz.build and the interface is used ifdef HAVE_SIDEBAR. So maybe those got out of sync on this machine somehow? HAVE_SIDEBAR is set in dom/base/moz.build like so:
467 if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']:
468 DEFINES['HAVE_SIDEBAR'] = True
Is it possible this box went from building one app to building another without clobbering or some such insanity?
Comment hidden (Intermittent Failures Robot) |
![]() |
||
Comment 3•10 years ago
|
||
OK, so some more info from IRC:
These taskcluster jobs are in fact switching back and forth between b2g-inbound and mozilla-inbound in a single objdir without clobbering. If this is a supported mode of operation, then we need to teach the build system to rebuild more stuff here somehow, presumably. If it's not, then the taskcluster setup needs to get changed to not do that...
Component: DOM → Build Config
Comment 4•10 years ago
|
||
Ideally we could switch between trees and reuse the object directory. While switching between trees is behaviorally no different than backing out dozens of changesets and applying dozens other ones, "going backwards" does compound the risk for build bustage and needed clobbers. I would strongly prefer we didn't do that.
That being said, this is only theoretically supported if the *same* source directory is used. The reason is file mtimes. If you are using multiple source directories, the mtime in the objdir may be newer than both source directories, even if there are diverging changes between srcdir content. This could lead to build rules not being evaluated and bugs like this.
If TaskCluster is using a single objdir and multiple source checkouts (i.e. not performing a `hg up` on the exact checkout that was used to produce the objdir), I consider this a P1 stop-the-world bug for TaskCluster because it will only confuse make and result in excessive build failures and incorrect builds.
Jonas: what is the exact behavior of TC w.r.t. source and object directory management?
Flags: needinfo?(jopsen)
Comment 5•10 years ago
|
||
> Jonas: what is the exact behavior of TC w.r.t. source and object directory management?
From the task definition we have 3 cache folders:
"cache": {
"tooltool-cache": "/home/worker/tooltool-cache",
"tc-vcs": "/home/worker/.tc-vcs",
"build-android-api-11-c6-workspace": "/home/worker/workspace"
},
afaik "/home/worker/workspace" is the place that both source tree and object dir is located.
So this should be okay.
But garndt might know more on this subject...
Flags: needinfo?(jopsen)
Comment 6•10 years ago
|
||
As of this morning, a push was made to b2g-inbound [1] that makes the workspaces for the build referenced in this bug branch specific. The workspace in this type of build is both the source checkout along with object directory.
For b2g-desktop, android, and firefox workers, the workspaces should not be branch specific.
Emulator and device image workers are a little different just because of the size of the workspaces and the available diskspace on the workers since the workers are shared amongst all branches. The workspace only contains the source checkout, and that is *not* branch specific. The objdir resides outside of the cached workspace and is cached per branch. This sample task [2] displays this behavior.
Are there issues with sharing a common source worksspace for all branches, but having branch specific object directories? If so, we will work at creating branch specific worker types immediately.
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1213878#c3
[2] https://tools.taskcluster.net/task-inspector/#ZuN7XntQTW-JjldgfWDTvA/
Comment 7•10 years ago
|
||
Sorry, I mean:
For b2g-desktop, android, and firefox workers, the workspaces (objdir+source together) *should* be branch specific.
Comment 8•10 years ago
|
||
[2] from comment #6 implies that the source directory and object directories are managed independently. This will only create bustage. Because build systems rely on file mtimes for checking what needs to be built, there needs to be a 1:1 relationship between source and object directories or you are going to have a bad time.
What you can do is pull all the repo remotes into the same local repo and `hg up` or `git checkout`. These commands will update mtimes so build times don't get confused. However, this will inevitably lead to a lot of clobbers, especially if you are going between e.g. mozilla-central and mozilla-aurora. That's why it's best to have one srcdir+objdir for every head/branch and for that "workspace" to always fast forward.
Comment hidden (offtopic) |
Comment hidden (offtopic) |
![]() |
||
Comment 11•9 years ago
|
||
Mats, that doesn't seem obviously related to this bug, if it's not intermittent.
That said, what's your build config? VoidFunction is used in AudioWorkletGlobalScope.webidl as of a few days ago, which is built unconditionally, but it's _defined_ in RTCPeerConnection.webidl, which is only built if MOZ_WEBRTC is defined. So if you're disabling webrtc, you would absolutely hit that error.
![]() |
||
Comment 12•9 years ago
|
||
I filed bug 1324169 on that.
Comment 13•9 years ago
|
||
Ah, yes, I have --disable-webrtc in my mozconfig. Sorry about the noise.
Updated•7 years ago
|
Product: Core → Firefox Build System
Updated•3 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•