If I clobber build with -j2, the build often fails in parser/htmlparser/src because it pulls in /usr/include/expat.h. That happens because expat.h is missing from dist/include/expat/. expat_config.h is there, but not expat.h or expat_external.h. The relevant chunk from my build log is: gmake: Entering directory `/home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/parser/expat/lib' Creating .deps Creating ../../../dist/include/expat /home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/config/nsinstall -R -m 644 /home/andrew/tbox/SeaMonkey/Linux_2.4. 20-43.9.legacy_Depend/mozilla/parser/expat/lib/expat.h /home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/parser/expat/lib/ expat_external.h ../../../dist/include/expat gmake: Leaving directory `/home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/parser/expat/lib' /home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/config/nsinstall -R -m 644 /home/andrew/tbox/SeaMonkey/Linux_2.4. 20-43.9.legacy_Depend/mozilla/parser/expat/expat_config.h ../../dist/include/expat gmake: Leaving directory `/home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/parser/expat'
er, I cut the build log off a bit too much. The 2 lines before the chunk I included were: gmake: Entering directory `/home/andrew/tbox/SeaMonkey/Linux_2.4.20-43.9.legacy_Depend/mozilla/objdir/parser/expat' Creating ../../dist/include/expat
It looks like because we loop into subdirs before executing the local rules during the export phase, parser/expat/lib/Makefile is creating the directory first, then the directory is later being recreated by the parser/expat/Makefile . This is similar to the problems we saw in bug 319460 . We could try adding all of the directory-creating dependencies to the first export:: rule before LOOP_OVER_DIRS is called. Try something like this: -export:: $(SUBMAKEFILES) $(MAKE_DIRS) +export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(EXPORTS)$(XPIDLSRCS)$(SDK_HEADERS)$(SDK_XPIDLSRCS),$(PUBLIC)) $(if $(SDK_HEADERS)$(SDK_XPIDLSRCS),$(SDK_PUBLIC)) $(if $(XPIDLSRCS),$(IDL_DIR)) $(if $(SDK_XPIDLSRCS),$(SDK_IDL_DIR))
That worked 3 out of 3 times I tried from a complete clobber. I couldn't get it to go bad just nuking dist/include/expat and re-exporting.
Created attachment 217752 [details] [diff] [review] cls' patch
Attachment #217752 - Flags: review?(benjamin)
Status: NEW → RESOLVED
Last Resolved: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.