Closed Bug 979665 Opened 6 years ago Closed 6 years ago

moving files between WEBIDL_FILES and PREPROCESSED_WEBIDL_FILES needs a clobber

Categories

(Firefox Build System :: General, defect)

defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED
mozilla30

People

(Reporter: heycam, Assigned: gps)

References

(Blocks 1 open bug)

Details

(Keywords: regression)

Attachments

(1 file)

If I take one of the files listed in dom/webidl/moz.build's WEBIDL_FILES array and move it to PREPROCESSED_WEBIDL_FILES, I get the following error from Codegen.py.  A clobber fixes it, but ideally we wouldn't need one.

 0:21.83 Traceback (most recent call last):
 0:21.83   File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
 0:21.83     "__main__", fname, loader, pkg_name)
 0:21.83   File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
 0:21.83     exec code in run_globals
 0:21.83   File "/z/moz2/central/python/mozbuild/mozbuild/action/webidl.py", line 17, in <module>
 0:21.83     sys.exit(main(sys.argv[1:]))
 0:21.83   File "/z/moz2/central/python/mozbuild/mozbuild/action/webidl.py", line 13, in main
 0:21.83     manager.generate_build_files()
 0:21.83   File "/z/moz2/central/dom/bindings/mozwebidlcodegen/__init__.py", line 272, in generate_build_files
 0:21.83     sha1=self._input_hashes[filename],
 0:21.83 KeyError: u'/z/moz2/central/dom/webidl/CSS.webidl'
 0:21.91 make[5]: *** [codegen.pp] Error 255
Blocks: clobber
This used to work correctly; I'd made a point of testing exactly this behavior when we first added preprocessed webidl support.  I'm guessing bug 928195 broke this inadvertently.  :(
Blocks: 928195
Keywords: regression
This patch fixes a bug in WebIDL code generation that could be triggered
if an input file changed locations but the original file remained on
disk. When computing the set of source .webidl files to perform code
generation on, we failed to prune files that were no longer part of the
active set of input files. References to files in old locations would
get pulled in to the regeneration set, leading to a cryptic KeyError
during code generation.

The added test failed with a similar stack as the one reported in the
bug before _compute_changed_inputs() was changed.
Attachment #8386591 - Flags: review?(nfroyd)
Assignee: nobody → gps
Status: NEW → ASSIGNED
Comment on attachment 8386591 [details] [diff] [review]
Properly detect WebIDL type changes

Review of attachment 8386591 [details] [diff] [review]:
-----------------------------------------------------------------

::: dom/bindings/mozwebidlcodegen/__init__.py
@@ +389,5 @@
>              if any(dep for dep in v['inputs'] if dep in changed_inputs):
>                  changed_inputs.add(v['filename'])
>  
> +        # Only use paths that are known to our current state.
> +        # This filters outs files that were deleted or changed type (e.g. from

Nit: "this filters out".
Attachment #8386591 - Flags: review?(nfroyd) → review+
https://hg.mozilla.org/mozilla-central/rev/4ca0584a7743
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Duplicate of this bug: 956723
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.