]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
META_MODE: Add framework to force rebuilding for major ABI changes.
authorbdrewery <bdrewery@FreeBSD.org>
Mon, 5 Jun 2017 05:17:39 +0000 (05:17 +0000)
committerbdrewery <bdrewery@FreeBSD.org>
Mon, 5 Jun 2017 05:17:39 +0000 (05:17 +0000)
commit3deaa65c4134f103e00a1dbb40acc601f8d7782f
tree8626af02295109b4c2a5491e5447205b5b313c69
parente146f9c0bb4a72d8d059519fedb3a5d5fe3b0295
META_MODE: Add framework to force rebuilding for major ABI changes.

Normally META_MODE ignores host files for "meta mode" decisions on whether a
file should be rebuilt or not.  This is because a simple installworld can
update timestamps and cause the next build to rebuild all host tools, when the
previous ones may not have any changes in the source tree.  These tools are
normally still ABI compatible.  They are only rebuilt if NO_META_IGNORE_HOST is
set from the workaround/hack in r301467.

One of the major problems with this is when a host tool has objects spread
across many revisions that have mixed-ABI.  For example, if struct stat were to
change on the host, some objects for a tool may have different ideas of that
struct's definition.  If just 1 source file were modified and rebuilt and
linked into the tool, then that toll will have mixed-ABI objects and crash.
This exact thing happened with the ino64 commit in r301467 followed by a
trivial update to libbfd in r318750.  The resulting binary would crash in
buildworld.

Sponsored by: Dell EMC Isilon
Makefile
Makefile.inc1
share/mk/sys.mk