git: 8502220db508 - main - Revert "Bootstrap: Prune building from pre-FreeBSD 11 support"

From: Warner Losh <imp_at_FreeBSD.org>
Date: Fri, 19 Nov 2021 07:11:31 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=8502220db5085410dadd9b674b2f54df4815ac23

commit 8502220db5085410dadd9b674b2f54df4815ac23
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2021-11-19 07:10:21 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2021-11-19 07:10:21 +0000

    Revert "Bootstrap: Prune building from pre-FreeBSD 11 support"
    
    This reverts commit a420a672bc53bd3928626aa5d0ec5b41c0471356.
    
    kevans pointed out some potential problems here, so reverting until
    I can fix them.
---
 Makefile.inc1 | 51 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 47 insertions(+), 4 deletions(-)

diff --git a/Makefile.inc1 b/Makefile.inc1
index 6573b4a079a1..d8f50cf77d4b 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -681,8 +681,8 @@ PACKAGE=	kernel
 
 BOOTSTRAPPING?=	0
 # Keep these in sync
-MINIMUM_SUPPORTED_OSREL?= 1102501
-MINIMUM_SUPPORTED_REL?= 11.3
+MINIMUM_SUPPORTED_OSREL?= 1002501
+MINIMUM_SUPPORTED_REL?= 10.3
 
 # Common environment for world related stages
 CROSSENV+=	\
@@ -2239,6 +2239,24 @@ _vtfontcvt=	usr.bin/vtfontcvt
 # If you add a new bootstrap tool where we could also use the host version,
 # please ensure that you also add a .else case where you add the tool to the
 # _bootstrap_tools_links variable.
+.if ${BOOTSTRAPPING} < 1000033
+# Note: lex needs m4 to build but m4 also depends on lex (which needs m4 to
+# generate any files). To fix this cyclic dependency we can build a bootstrap
+# version of m4 (with pre-generated files) then use that to build the real m4.
+# We can't simply use the host m4 since e.g. the macOS version does not accept
+# the flags that are passed by lex.
+# For lex we also use the pre-gerated files since we would otherwise need to
+# build awk and sed first (which need lex to build)
+# TODO: add a _bootstrap_lex and then build the real lex afterwards
+_lex=		usr.bin/lex
+_m4=		tools/build/bootstrap-m4 usr.bin/m4
+${_bt}-tools/build/bootstrap-m4: ${_bt}-usr.bin/lex ${_bt}-lib/libopenbsd ${_bt}-usr.bin/yacc
+${_bt}-usr.bin/m4: ${_bt}-lib/libopenbsd ${_bt}-usr.bin/yacc ${_bt}-usr.bin/lex ${_bt}-tools/build/bootstrap-m4
+_bt_m4_depend=${_bt}-usr.bin/m4
+_bt_lex_depend=${_bt}-usr.bin/lex ${_bt_m4_depend}
+.else
+_bootstrap_tools_links+=m4 lex
+.endif
 
 # ELF Tool Chain libraries are needed for ELF tools and dtrace tools.
 # r296685 fix cross-endian objcopy
@@ -2274,6 +2292,21 @@ ${_bt}-usr.sbin/nmtree: ${_bt}-lib/libnetbsd
 _bootstrap_tools_links+=mtree
 .endif
 
+# r246097: log addition login.conf.db, passwd, pwd.db, and spwd.db with cat -l
+.if ${BOOTSTRAPPING} < 1000027
+_cat=		bin/cat
+.else
+_bootstrap_tools_links+=cat
+.endif
+
+# r277259 crunchide: Correct 64-bit section header offset
+# r281674 crunchide: always include both 32- and 64-bit ELF support
+.if ${BOOTSTRAPPING} < 1100078
+_crunchide=	usr.sbin/crunch/crunchide
+.else
+_bootstrap_tools_links+=crunchide
+.endif
+
 # 1300115: Higher WARNS fixes
 .if ${BOOTSTRAPPING} < 1202502 || \
 	(${BOOTSTRAPPING} > 1300000 && ${BOOTSTRAPPING} < 1300131)
@@ -2282,6 +2315,18 @@ _crunchgen=	usr.sbin/crunch/crunchgen
 _bootstrap_tools_links+=crunchgen
 .endif
 
+# r296926 -P keymap search path, MFC to stable/10 in r298297
+# Note: kbdcontrol can not be bootstrapped on non-FreeBSD systems
+.if !defined(CROSSBUILD_HOST)
+.if (${BOOTSTRAPPING} < 1003501 || \
+	(${BOOTSTRAPPING} >= 1100000 && ${BOOTSTRAPPING} < 1100103) || \
+	(!exists(/usr/sbin/kbdcontrol)))
+_kbdcontrol=	usr.sbin/kbdcontrol
+.else
+_bootstrap_tools_links+=kbdcontrol
+.endif
+.endif
+
 # 1300102: VHDX support
 .if ${BOOTSTRAPPING} < 1201520 || \
 	(${BOOTSTRAPPING} > 1300000 && ${BOOTSTRAPPING} < 1300102)
@@ -2378,8 +2423,6 @@ _basic_bootstrap_tools+=usr.sbin/services_mkdb usr.sbin/pwd_mkdb
 # bootstrap ldd on non-FreeBSD systems
 _basic_bootstrap_tools+=usr.bin/ldd
 .endif
-# cat is used by sys/kern/genoffset.sh and sys/conf/newvers.sh
-_basic_bootstrap_tools+=bin/cat
 # sysctl/chflags are required for installkernel:
 .if !defined(CROSSBUILD_HOST)
 _basic_bootstrap_tools+=bin/chflags