Am 2024-01-29 19:07, schrieb Mark Millard:
On Jan 29, 2024, at 01:50, Alexander Leidinger <[email protected]> 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.

The sequence was:
 - make update
 - make buildworld buildkernel
 - create new BE
 - make installworld installkernel into the new BE
 - boot the new BE
 - do nothing with src for some days
 - read your mail
 - make -Dm buildworld

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.

The lldvm/lldb/clang ones may be related to a rebuild of llvm triggered by irrelevant time changes according to your description. I haven't found "is newer than" evidence in the debug output why those legacy ones are newer. If I assume those are touched by installworld, we could do maybe some kind of check if checksums are equal and not install into legacy if they are. This would then require more work on install, but may result in less work on buildworld.

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.)

Maybe in the installworld stage /usr/sbin/sh newer than OBJDIR/..../legacy/usr/sbin/sh?

Bye,
Alexander.

--
http://www.Leidinger.net [email protected]: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    [email protected]  : PGP 0x8F31830F9F2772BF

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to