Re: Should changes in src/usr.sbin/bhyve/ trigger an llvm rebuild?
Date: Mon, 29 Jan 2024 18:07:18 UTC
On Jan 29, 2024, at 01:50, Alexander Leidinger <Alexander@leidinger.net> wrote: > Am 2024-01-29 00:00, schrieb Mark Millard: > >> I would have to see make -dM output from (D) to >> find the specific timing relationships that lead >> to that. There is way to much to analyze the >> specifics manually, especially because dependency >> chains have to be considered. > > Not -stable, but -current Sequence going back to where a commit change was involved and installed/booted? That older commit was what? The newer one? The content of that change contributes to what range of "is newer than" stuff shows up in the first buildworld after the first installworld-then-reboot to the newer commit. A limiting case is doing a buildworld into an empty /usr/obj/ like area so that its later install has everything freshly built (new timestamps) compared to the prior context. Then doing a installworld buildworld sequence may have more "is newer than" notices. (Some cases of updates approximate such a "largely rebuilt" status, others do not.) The list is illustrative as is, just possibly not definitive. > (no change to src, buildworld after installworld to a new BE and booting this new BE): > # grep newer buildworld_debug.log | grep -E 'amd64.amd64/tmp/(usr|legacy)/' | cut -d : -f 3 | sort -u > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/include/roken.h' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/asn1_compile' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/awk' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/basename' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/cap_mkdb' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/cat' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/clang-tblgen' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/compile_et' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/cp' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/crunchgen' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/crunchide' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/dd' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/env' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/file2c' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/gencat' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/grep' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/gzip' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/jot' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/lex' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/lldb-tblgen' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/llvm-min-tblgen' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/llvm-tblgen' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/ln' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/m4' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/make-roken' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/mkcsmapper' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/mkesdb' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/mv' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/rm' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/sed' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/sh' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/touch' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/truncate' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/uudecode' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/legacy/usr/sbin/uuencode' is newer than the target... > file '/space/system/usr_obj/space/system/usr_src/amd64.amd64/tmp/usr/bin/objcopy' is newer than the target... > > There is no dependency to outside the obj tree. > > Would it make sense to exclude the tmp/legacy/usr/sbin/... dependencies? Or a subset? The tmp/usr/bin/objcopy is probably in the middle of a rebuild, but the name legacy gives the impression that not a lot of features are needed from those (basics to build our own version?). > > Note, grep for "newer" gives >12000 hits. For awk, basename, cat, dd, env, grep, gzip, lex, ln, m4, mv, rm, sed, sh, touch, truncate, uudecode, and uuenncode (for example): The "is newer than" status is both real and highly likely to be irrelevant. META_MODE is based on just the "real" status of "is newer than". There are other items in the list that I'd be less sure of if they are likely to always be irrelevant. Possibly. As I remember, I did get example "is newer than" notices that were not from /usr/obj/ like areas, not that I remember the details any more. (So I could be misremembering.) === Mark Millard marklmi at yahoo.com