Closed Bug 327825 Opened 18 years ago Closed 18 years ago

expat.h missing from dist/include/expat/ with parallel make

Categories

(Firefox Build System :: General, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: ajschult784, Assigned: cls)

Details

Attachments

(1 file)

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[5]: 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[5]: 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[4]: 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[4]: 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.
Attached patch cls' patchSplinter Review
Attachment #217752 - Flags: review?(benjamin)
Attachment #217752 - Flags: review?(benjamin) → review+
Assignee: nobody → cls
FIXED
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: