Closed
Bug 1261283
Opened 9 years ago
Closed 9 years ago
When compiling with high -j count, compilation will often fail
Categories
(Firefox Build System :: General, defect)
Firefox Build System
General
Tracking
(firefox48 fixed)
RESOLVED
FIXED
mozilla48
Tracking | Status | |
---|---|---|
firefox48 | --- | fixed |
People
(Reporter: jya, Assigned: mshal)
References
Details
Attachments
(1 file)
I was experimenting with distcc
When setting .mozconfig with:
mk_add_options MOZ_MAKE_FLAGS="-s -j48"
CC="distcc clang -target x86_64-apple-darwin"
CXX="distcc clang++ -target x86_64-apple-darwin"
I often get the compilation to fail with:
0:40.10 gmake[5]: *** No rule to make target 'xpidlyacc.py', needed by 'export'. Stop.
0:40.10 /Users/jyavenard/Work/Mozilla/mozilla-central/config/recurse.mk:79: recipe for target 'xpcom/idl-parser/xpidl/export' failed
0:40.10 gmake[4]: *** [xpcom/idl-parser/xpidl/export] Error 2
0:40.10 gmake[4]: *** Waiting for unfinished jobs....
Assignee | ||
Comment 2•9 years ago
|
||
I think we can fix this by adding support for GENERATED_FILES with multiple outputs - I'm testing out a patch now. Or we could temporarily add the xpidlyacc.py: xpidllex.py dependency back into the Makefile.in if that proves troublesome, but it seems to be working locally so far.
Assignee: nobody → mshal
Assignee | ||
Comment 3•9 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/43881/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/43881/
Attachment #8737290 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 4•9 years ago
|
||
Comment 5•9 years ago
|
||
Comment on attachment 8737290 [details]
MozReview Request: Bug 1261283 - allow GENERATED_FILES to write to multiple outputs; r?glandium
https://reviewboard.mozilla.org/r/43881/#review41129
::: python/mozbuild/mozbuild/backend/recursivemake.py:514
(Diff revision 1)
> - backend_file.write('GARBAGE += %s\n' % obj.output)
> + backend_file.write('%s:: %s\n' % (tier, first_output))
> + for output in obj.outputs:
> + if output != first_output:
> + backend_file.write('%s: %s\n' % (output, first_output))
Mmmm ISTR this isn't the right way to do multiple output in Make, but it seems to work in practice. It does however have better messages when invoking the individual targets if you add a ; to the `output: first_output` lines.
Attachment #8737290 -
Flags: review?(mh+mozilla) → review+
Assignee | ||
Comment 6•9 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #5)
> ::: python/mozbuild/mozbuild/backend/recursivemake.py:514
> (Diff revision 1)
> > - backend_file.write('GARBAGE += %s\n' % obj.output)
> > + backend_file.write('%s:: %s\n' % (tier, first_output))
> > + for output in obj.outputs:
> > + if output != first_output:
> > + backend_file.write('%s: %s\n' % (output, first_output))
>
> Mmmm ISTR this isn't the right way to do multiple output in Make, but it
> seems to work in practice. It does however have better messages when
> invoking the individual targets if you add a ; to the `output: first_output`
> lines.
According to [1], the main disadvantage of this approach is if you manually remove one of the non-main outputs (xpidlyacc.py in this case), then make won't rebuild it, since xpidllex.py is already up-to-date. This is the approach used previously in the Makefile.in though, so we at least aren't losing functionality here.
I've added the ';' to the end of the 'output, first_output' lines.
[1] https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
Comment 8•9 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla48
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•