]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
stand: properly declare subdir deps or .WAIT, do parallel build
authorKyle Evans <kevans@FreeBSD.org>
Thu, 31 Dec 2020 17:15:45 +0000 (11:15 -0600)
committerKyle Evans <kevans@FreeBSD.org>
Thu, 31 Dec 2020 17:15:45 +0000 (11:15 -0600)
commitac5f382a9d0a26685b92b49abb845d3b30ea5f91
tree6e6eafc883cbf2b51afe399470408d8b0762b64d
parent202aea9c82eaab1c73351d4e971347c4109ef59b
stand: properly declare subdir deps or .WAIT, do parallel build

buildworld already runs the stand build in parallel[1], so make it easier to
identify ordering issues by properly establishing dependencies or adding
.WAIT where needed.

Everything in stand/ relies on libsa, either directly or indirectly, because
libsa build is where the stand headers get installed and it gets linked in
most places.

Interpreters depend on their libs, machine dirs usually depend on top-level
libs that are getting built and at least one of the interpreter flavors.

For i386, order btx/libi386/libfirewire before everything else using a
big-ol-.WAIT hammer. btx is the most common dependency, but the others are
used sporadically. This seems to be where the race reporting on the mailing
list is- AFAICT, the following sequence is happening:

1.) One of the loaders gets built based on stale btx/btxldr
2.) btx/btxldr gets rebuilt
3.) installworld triggers loader rebuild because btx was rebuilt after

This seems like the most plausible explanation, as they've verified system
time and timestamps.

While we're here, let's switch stand/ over to a completely parallel build so
we can work out these kinds of issues in isolation rather than in the middle
of a larger build.

Reviewed by: bdragon, sjg, tsoome
Tested by: bdragon (-j1024, no failures, significant speed improvement)
Differential Revision: https://reviews.freebsd.org/D23411
stand/Makefile
stand/Makefile.amd64
stand/Makefile.inc
stand/efi/Makefile
stand/i386/Makefile