From nobody Wed Feb 22 05:53:59 2023 X-Original-To: freebsd-stable@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PM52M3t3qz3sLJv for ; Wed, 22 Feb 2023 05:54:19 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic310-22.consmr.mail.gq1.yahoo.com (sonic310-22.consmr.mail.gq1.yahoo.com [98.137.69.148]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4PM52L1H6kz43fv for ; Wed, 22 Feb 2023 05:54:18 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=Hhtpa2oz; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.69.148 as permitted sender) smtp.mailfrom=marklmi@yahoo.com; dmarc=pass (policy=reject) header.from=yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1677045256; bh=JXVwHAQqK0VLnOpCF8dnQV/LQNdhvKPl2912GwvLKFY=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From:Subject:Reply-To; b=Hhtpa2oz6Z70D7uqhV/hcesACYCDU4NN8HIYHYm6P15AOGMfrzc2KQaLbUhNvA0Fnhfz+OkoPK3isDPKdNcjbFrzQWRwESDNpIWc4oMjjv9RtLDhyLybWTZ/x5Be0WEZotHcuI0dL2nMFOJE3wxsDACIcW0SlzxzDWa1/avH73Rv2X/YbM8d7eZDhQaR3y3X0eSQghJy+YzS36m+1nb+9oPOFAz7r4eH7TwP/7ctEKV4lz5FpdIMcwGiKcWd5k3djRDe0czCfbA9D/WlzWWjaOX5QLpaU+zzHcaOeixtb8b/Gh6bC/nQcvWQEsBM6W7KvUOCkBYjTXGlF6bpN2igiQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1677045256; bh=GJoleYREqcRclnGrXsxB+PziMKYzk1CNH5/jft3+Um8=; h=X-Sonic-MF:Subject:From:Date:To:From:Subject; b=Xa2UCmzd7hiV+TeplZrd28S/INkrZAC7wRLo7Mgf6qIGDBGx/QQ+eyExWsQsxSzP8ymugD1As1oH+4TPdD0r2Ze3nF5v1vhNpkAO5WUJvPnIK+qgQK+zU+leAc7ilpf8te7Ujd7ruWnd02pQ1McZbFqSBKw7+eSDMfkkJtMl68XUuagkSw/Mw3LWxdhSubfaJKGRCqIY3qMV7L5R3hJqspuWk/O7GAqYtT6ItBi2xjCSof2VEU+54zlKqV1KNaGD83QO0hk9aaWGxstSullbEyxcZS05jlXnWDfFP+5aiGM7KrY6QXAMNmRqOQoPSiUgYtGdxhdiygh+6guY5V/wHQ== X-YMail-OSG: TfC9o5wVM1lrPrKs973zVmcQ418JU2Gc3yvV_PqxJ6NBUyL4JEETfNdgXXqFup2 MzgIvSlfM8dRhNeG4iJJ2jjVHIxtEsemzNWBP.9prqFpigM1ZdU1TDsxHS0r5GzEZUsy7RF5OvoO whfUMP0OCg.NKzoaAO1H6a8S1XBOo.4iqQC4By9VpdAWNGPjb20rIwpkUddoCwlySMg6DhHn2onT SZAkPmtrf5zUts_ZcL5783zwvJCcGmRmeKTpahetw.kippzeCHCG.akXhF1C6CoHDDhnOESD4F5T fx8fTaA1n4PjApjpm3rhWVx0HEK.pLZKLiLr5Jagz6.BgZF2q8GpX46lnLq80Th3GRGDMNKmY4Iv uHcFh975ngFkG.glbwP3UQF6VcbO8SzBBbezrF7chamSiQkGp_tovbl9JFDafIbL4XRxSGWY5s5C QFins9XjVXeN2KfoMOEFKNDJPlaHSf3EWSdHN0pnvEpQjoYJA36cpsTkM5kExQx9RO5wzLnbBVs4 ssVOMwlR94pWpAEZ9bC.xvCmF5ocxwj5JltqP0PiaWOGe7J5jrVJLf.ZFFRd6StKFKI580U3YaRE _.gKxkpqeCFL2caoO.4EsXoHjirIpZdz41Mp8UelNZkmOrtcTbnjMbKE167BLzibZqZSmCK1wVDe ep_1lO2vPlpsqkYKjZ4a24sTv91yKEVhmgG2wsgvKSPPscJpz_0wh773AiopE0b_d9GE2azo41kG N7mbbrg8fP5Wvv2hUsoLtPwDnt7zQZDo4gKsN8QIHpUPrz7FiRaHLCMlP6vD7BAVaVoIicI8o54_ thuVObMi32A4NK7l6uaoG1doCvVhRlrJ.5_Qf9TiteNhdXyUkZr.uWQf2ijT0tp_nmMnwah5FA3E 5WGSjdDcN8O55TRZXCdfA48IK0uvntoLUDwpWF_.dnTlv5dwSy1pFBQq75etbb56efoaTYPRJXRy bHBGsdnPfW_CfW.eDwOzYAWXfHeNhmgymO4Apkw5sOmfaOYSvp5hQsXZER4ZvoiQYt30T0HZ4Hcn EN4nvv4CQZnxzBzvXqTvIbNOO1V1njnOAwQMCPyHWtSdr0KZMU65iV7nKlK0TaVvTUppHO.wmEv. ArM.JfxY6dq47xrLypmM4.2.RujlaWiEluo2H3W0uRnaDdA4vod3tVlAjb7WQDVvJw8Ugymcq072 RJ82KeDGzaSzR7TLgwesfMW6hdJqyqxU1pzSPWuoNuWGhKdYRKwaDHHdj_XezSW3FleN5nm6WK6Z GvXwq3CIEkrTrtgvDYj4lCOionWzra5gsklfhhzMmV_Hmn4tn4rR.Teoc9NPiTbBxTYqD_tAaKZL YjS0c16K9I4qXE371eVv6gZQPYV7gMfiIGcltXlQQS6vDnpjAcRUBbW0GUPZJB1aZInrHoYWWjj_ XWfTfKh6uVyJ1CIqzoWxMuk4WbrHiplNfuHGnYr54I.JeE1vtlOSA245jjon5ZHXsfOFJl0kFNV2 Dihi3ueVs0jRk8B.gXKExdr789rzDTLsbbd0vIjRBmq2r95KRAhNOOdO44WCU6R3iocJE7qLbwsx 73NxdmnaJN.X69X1BqvaywYzbl3F_KJt_H_Uqa6n5IkoblbtSaLJ8_8h8moUVtvHTHcWaZ7E039L d9pbfu98Qkvm4PN_Lw9X6K95X67NrHeOZVRGhqXkobyfVSR66I4aSKW2VPqXwZB2rUqbpWn7Dto9 Nv1Rkk4UG78xXFqA0l2a6ekLtkYMjqfwQKqzj5176moIRDoMK.4KbuG.YtV4148rcRZwZYzubYiE JEMI.uC7iL.Ke.CZ1pC2YqGkciHddzQTeSnCCOKjpOgX1P8KbJfQd15QczLrcw8QsjDP2T1F_ljf EIgBXFMOvMoS5IYNuD0BjBUHdA1uZGx51MBZJv1otrInZ3a9pR7Zgt9BHp_hQfxtsrLVBryOVNnK gJcgCEgunk5dLOWs8TitXRRzOcIPF6xTI7I2UkmDatPJi8wsfieKdrJg__55ZE4LyUilSd0XVz8O eNNSZupIpO.OTCC4JD_WX_EJkBulur366MKafbHIZjxcwepKW2yzWaNAwAK_va7Pul1MYwqU72_B MYw40yOPFmIGmasESa9qd0w_8S2aLykTCGTLoB4hTMVlUqhMVqLNHiBUt3xWI4AGnIi1oM.zJu2S I_E_rjgvl1JCjqGePPsfvaJtfSbZ1gJeZe_9weL49YZjOkiES2w.2K_eE5SudiosXsDY4C6xCeA. cjzGFH4QTzKYONqD.GXNpIdd7oaW6Gz15BWNru02wS8qGnZiPpwe5oLJ.vFtACvuFG3aPqjW9guc OT4a4 X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.gq1.yahoo.com with HTTP; Wed, 22 Feb 2023 05:54:16 +0000 Received: by hermes--production-bf1-57c96c66f6-hmvtp (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID f84f3853949600126cc2050c004ac5f5; Wed, 22 Feb 2023 05:54:11 +0000 (UTC) Content-Type: text/plain; charset=us-ascii List-Id: Production branch of FreeBSD source code List-Archive: https://lists.freebsd.org/archives/freebsd-stable List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-stable@freebsd.org X-BeenThere: freebsd-stable@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) Subject: Re: 13.2 BETA2: how do debug META_MODE? From: Mark Millard In-Reply-To: Date: Tue, 21 Feb 2023 21:53:59 -0800 Cc: FreeBSD-STABLE Mailing List Content-Transfer-Encoding: quoted-printable Message-Id: References: <41B536B0-DA66-449E-96BB-E11A8750471A.ref@yahoo.com> <41B536B0-DA66-449E-96BB-E11A8750471A@yahoo.com> To: Peter X-Mailer: Apple Mail (2.3731.400.51.1.1) X-Spamd-Result: default: False [-2.50 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; SUBJECT_ENDS_QUESTION(1.00)[]; NEURAL_HAM_SHORT(-1.00)[-0.996]; MV_CASE(0.50)[]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_IN_DNSWL_NONE(0.00)[98.137.69.148:from]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; TO_DN_ALL(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; FREEMAIL_FROM(0.00)[yahoo.com]; MID_RHS_MATCH_FROM(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; FROM_EQ_ENVFROM(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; MLMMJ_DEST(0.00)[freebsd-stable@freebsd.org]; RCVD_TLS_LAST(0.00)[]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.69.148:from] X-Rspamd-Queue-Id: 4PM52L1H6kz43fv X-Spamd-Bar: -- X-ThisMailContainsUnwantedMimeParts: N On Feb 21, 2023, at 20:51, Mark Millard wrote: > On Feb 21, 2023, at 19:11, Peter wrote: >=20 >> On Tue, Feb 21, 2023 at 06:44:09PM -0800, Mark Millard wrote: >> ! On Feb 21, 2023, at 18:10, Peter = wrote: >> !=20 >> ! > On Tue, Feb 21, 2023 at 11:56:13AM -0800, Mark Millard wrote: >> ! > ! On Feb 21, 2023, at 04:55, Peter = wrote: >> ! > !=20 >> ! > ! > ! # cd /usr/src/ >> ! > ! > ! # env WITH_META_MODE=3Dyes make buildworld >> ! > ! > ! # env WITH_META_MODE=3Dyes make installworld >> ! > ! > ! # env WITH_META_MODE=3Dyes make buildworld (again #0) >> ! > ! > ! ## no more rebuilds below? >> ! > ! > ! # env WITH_META_MODE=3Dyes make buildworld (again #1) >> ! > ! > ! # env WITH_META_MODE=3Dyes make buildworld (again #2) >> ! > ! >=20 >> ! > ! > But what is the difference between #0 and #1? >> ! > !=20 >> ! > ! awk, cp, ln, rm, sed, and many more from >> ! > ! . . ./tmp/legacy/usr/sbin/have new dates >> ! > ! for rebuilds after installworld (that targets >> ! > ! the running system). Not true for #1 and #2. >> ! > !=20 >> ! > ! The dates on these tools being more recent than >> ! > ! the files that they were involved in producing >> ! > ! leads to rebuilding those files. That in turn >> ! > ! leads to other files being rebuilt. >> ! > !=20 >> ! > ! make with -dM reports the likes of: >> ! > !=20 >> ! > ! file '. . ./tmp/legacy/usr/sbin/awk' is newer than the = target... >> ! > !=20 >> ! > ! explicitly as it goes. As I remember tmp/legacy/usr/sbin/ >> ! > ! was always part of the path for what I found. >> ! >=20 >> ! > Mark, thanks a lot for the proper input at the right time! >> ! >=20 >> ! > This put me on the right track and I mananged to analyze and >> ! > understand what is actually happening. >> ! >=20 >> ! > It looks like my issue does resolve itself somehow, and things >> ! > start to behave as expected again after four builds. >> !=20 >> ! Intersting. >> !=20 >> ! > ! I did not do the analysis of how (e.g.) tmp/legacy/usr/sbin/awk >> ! > ! ended up being newer than such a target and, so, causing a >> ! > ! rebuild of that target. I was going the direction: that >> ! > ! it is newer really is unlikely to justify the rebuild for >> ! > ! the target(s) in question. The other direction about how >> ! > ! it got to be newer is also relevant. >> ! >=20 >> ! > I have now analyzed some parts of it. META_MODE typically finds = some >> ! > build-tools to rebuild, but then if the result is not different >> ! > from what was there before, then "install" will not copy it to = the >> ! > bin-dir, and so the avalanche gets usually avoided. >> ! >=20 >> !=20 >> ! The implication is that "install -C" is in use, quoting the >> ! man page: >> !=20 >> ! -C Copy the file. If the target file already exists and = the files >> ! are the same, then do not change the modification time = of the >> ! target. If the target's file flags and mode need not = to be >> ! changed, the target's inode change time is also = unchanged. >> !=20 >> ! -c Copy the file. This is actually the default. The -c = option is >> ! only included for backwards compatibility. >> !=20 >> ! -C might have more of an effect in a reproducible-build >> ! style build process than on a non-reproducible-build >> ! style one. >>=20 >> Yepp. "install -p" is used, see /usr/src/tools/install.sh That may be incorrect about what is happening for _bootstap_tools_links and other things. Why do I say that? Several points . . . I do not see "tools" in any PATH=3D so far, making implicit use unlikely. /usr/main-src/share/mk/sys.mk:INSTALL ?=3D = ${INSTALL_CMD:Uinstall} /usr/main-src/share/mk/src.tools.mk:INSTALL_CMD?=3D install vs. /usr/main-src/Makefile: INSTALL=3D"sh = ${.CURDIR}/tools/install.sh" /usr/main-src/Makefile.inc1:BMAKEENV=3D INSTALL=3D"sh = ${.CURDIR}/tools/install.sh" \ /usr/main-src/Makefile.inc1:KTMAKEENV=3D INSTALL=3D"sh = ${.CURDIR}/tools/install.sh" \ Also: # kernel-tools stage KTMAKEENV=3D INSTALL=3D"sh ${.CURDIR}/tools/install.sh" \ vs. # world stage WMAKEENV=3D ${CROSSENV} \ INSTALL=3D"${INSTALL_CMD} -U" \ and: .if defined(DB_FROM_SRC) || defined(NO_ROOT) IMAKE_INSTALL=3D INSTALL=3D"${INSTALL_CMD} ${INSTALLFLAGS}" So: explicitly varying styles for various contexts. It looks to me like the make output would show: install . . .=20 vs. sh . . ./tools/install.sh . . . based on if the script is not-in-use vs. is-in-use (respectively). Looking at some of my logs I see the likes of: install -o root -g wheel -m 555 cap_mkdb = /FBSDFSSDroot-mnt//usr/bin/cap_mkdb which looks to not be using the script and not using either -C or -p as well. cap_mkdb is an example from the _bootstap_tools_links list. Some of the below do have -C use, others do not. # grep -r '\-o.*-g.*-m' /usr/main-src/Makefile* /usr/main-src/share/ | = more /usr/main-src/share/sendmail/Makefile: ${INSTALL} -T = package=3D${PACKAGE:Usendmail} ${TAGS_ARGS} -o ${BINOWN} -g ${BINGRP} -m = 755 -d ${DDIR}/${dir} /usr/main-src/share/sendmail/Makefile: ${INSTALL} -T = package=3D${PACKAGE:Usendmail} ${TAGS_ARGS} -o ${BINOWN} -g ${BINGRP} -m = 444 ${SENDMAIL_DIR}/${file} ${DDIR}/${file} /usr/main-src/share/mk/bsd.info.mk: ${INSTALL} -o ${INFOOWN} -g = ${INFOGRP} -m ${INFOMODE} \ /usr/main-src/share/mk/bsd.info.mk: ${INSTALL} -o ${INFOOWN} -g = ${INFOGRP} -m ${INFOMODE} \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} = \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} = \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} ${TAG_ARGS} ${STRIP} = -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m = ${LIBMODE} \ /usr/main-src/share/mk/bsd.lib.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ /usr/main-src/share/mk/bsd.doc.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},docs} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ /usr/main-src/share/mk/bsd.doc.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},docs} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ /usr/main-src/share/mk/bsd.incs.mk: ${INSTALL} ${${group}TAG_ARGS} = -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \ /usr/main-src/share/mk/bsd.incs.mk: ${INSTALL} ${${group}TAG_ARGS} = -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \ /usr/main-src/share/mk/bsd.man.mk:MINSTALL?=3D ${INSTALL} ${TAG_ARGS} = -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} /usr/main-src/share/mk/bsd.man.mk:MINSTALL?=3D ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},man} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} /usr/main-src/share/mk/bsd.prog.mk: ${INSTALL} ${TAG_ARGS} ${STRIP} = -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ /usr/main-src/share/mk/bsd.prog.mk: ${INSTALL} = ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \ /usr/main-src/share/mk/bsd.own.mk:HRDLINK?=3D -l h -o ${_LINKOWN} -g = ${_LINKGRP} -m ${_LINKMODE} /usr/main-src/share/mk/bsd.own.mk:MANHRDLINK?=3D -l h -o ${MANOWN} -g = ${MANGRP} -m ${MANMODE} /usr/main-src/share/mk/bsd.own.mk:SYMLINK?=3D -l s -o ${_SYMLINKOWN} = -g ${_SYMLINKGRP} -m ${_SYMLINKMODE} /usr/main-src/share/mk/bsd.own.mk:LSYMLINK?=3D -l s -o ${LIBOWN} -g = ${LIBGRP} -m ${LIBMODE} /usr/main-src/share/mk/bsd.own.mk:RSYMLINK?=3D -l rs -o = ${_SYMLINKOWN} -g ${_SYMLINKGRP} -m ${_SYMLINKMODE} /usr/main-src/share/zoneinfo/Makefile: -o ${BINOWN} -g ${BINGRP} -m = ${NOBINMODE} \ /usr/main-src/share/zoneinfo/Makefile: ${INSTALL} ${TAG_ARGS} -o = ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ /usr/main-src/share/zoneinfo/Makefile: ${INSTALL} ${TAG_ARGS} -o = ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ Thus it looks to me like installworld produces a new date for cap_mkdb and, in the material below, ${WORLDTMP}/legacy/bin/cap_mkdb ends up having a copy of that new date in the next buildworld . > The code for the _bootstap_tools_links uses "cp -pf", > not install, to establish part of . . ./tmp/legacy/bin/ . > (Note: . . ./tmp/legacy/sbin -> ../bin so is a via a > symbolic link.) Before the "cp -pf" there is a "rm -f" > deleting the target file before the copy: the prior > file in . . ./tmp/legacy/bin/ is never directly > preserved. (The new copy might still be identical > to the old one: the source path one might happen to > be identical as well.) >=20 > # Link the tools that we need for building but don't need to bootstrap = because > # the host version is known to be compatible into ${WORLDTMP}/legacy > # We do this before building any of the bootstrap tools in case they = depend on > # the presence of any of the links (e.g. as m4/lex/awk) > ${_bt}-links: .PHONY >=20 > .for _tool in ${_bootstrap_tools_links} > ${_bt}-link-${_tool}: .PHONY > @rm -f "${WORLDTMP}/legacy/bin/${_tool}"; \ > source_path=3D`which ${_tool}`; \ > if [ ! -e "$${source_path}" ] ; then \ > echo "Cannot find host tool '${_tool}'"; false; \ > fi; \ > cp -pf "$${source_path}" "${WORLDTMP}/legacy/bin/${_tool}" > ${_bt}-links: ${_bt}-link-${_tool} > .endfor >=20 > Note: This is for the !defined(BOOTSTRAP_ALL_TOOLS) case. > Note: the code uses the abbreviation: _bt=3D = _bootstrap-tools >=20 > _bootstrap_tools_links is built mostly in terms of > _basic_bootstrap_tools and _basic_bootstrap_tools_multilink from > earlier logic. For reference, showing what ends up handled > this way: >=20 > # grep -r "_bootstrap_tools" /usr/main-src/Makefile* = /usr/main-src/share/ | more > /usr/main-src/Makefile.inc1:# _bootstrap_tools_links variable. > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dm4 lex > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dmtree > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dcat > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dcrunchide > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dcrunchgen > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dmkimg > /usr/main-src/Makefile.inc1:_kerberos5_bootstrap_tools=3D \ > /usr/main-src/Makefile.inc1:.ORDER: = ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} > /usr/main-src/Makefile.inc1:.for _tool in = ${_kerberos5_bootstrap_tools} > /usr/main-src/Makefile.inc1:# The tools listed in = _basic_bootstrap_tools will generally not be > /usr/main-src/Makefile.inc1:# case we use the = _basic_bootstrap_tools_multilink variable which is a list of > = /usr/main-src/Makefile.inc1:_basic_bootstrap_tools_multilink=3Dusr.bin/gre= p grep,egrep,fgrep > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools_multilink+=3Dbin/test= test,[ > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/cut = bin/expr usr.bin/gencat usr.bin/join \ > = /usr/main-src/Makefile.inc1:_basic_bootstrap_tools_multilink+=3Dusr.bin/aw= k awk,nawk > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/file2c > = /usr/main-src/Makefile.inc1:_basic_bootstrap_tools_multilink+=3Dusr.bin/bi= ntrans uuencode,uudecode > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/xargs > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/cap_mkdb > = /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.sbin/services_mk= db usr.sbin/pwd_mkdb > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/ldd > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dbin/chflags > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3Dsysctl > = /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3Dtools/build/cross-bu= ild/fake_chflags > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/mkfifo > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.bin/jot > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dsbin/md5 > /usr/main-src/Makefile.inc1:_basic_bootstrap_tools+=3Dusr.sbin/tzsetup > = /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3D${_basic_bootstrap_t= ools} > /usr/main-src/Makefile.inc1:.for _subdir _links in = ${_basic_bootstrap_tools_multilink} > /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3D${_subdir} > /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3Dusr.bin/bmake > /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3Dlib/libbz2 > /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3Dlib/libz > /usr/main-src/Makefile.inc1:_other_bootstrap_tools+=3Dlib/libcrypt > /usr/main-src/Makefile.inc1:# All tools in _basic_bootstrap_tools have = the same name as the subdirectory > = /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3D${_basic_bootstrap_t= ools:T} > /usr/main-src/Makefile.inc1:.for _subdir _links in = ${_basic_bootstrap_tools_multilink} > /usr/main-src/Makefile.inc1:_bootstrap_tools_links+=3D${_links:S/,/ = /g} > /usr/main-src/Makefile.inc1:.for _tool in ${_bootstrap_tools_links} > /usr/main-src/Makefile.inc1: ${_kerberos5_bootstrap_tools} \ > /usr/main-src/Makefile.inc1: ${_other_bootstrap_tools} \ >=20 > What the prior installworld did for the analogous files is > a separate issue. =3D=3D=3D Mark Millard marklmi at yahoo.com