Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Jan 2024 20:55:43 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        david@catwhisker.org, FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>
Subject:   Re: Should changes in src/usr.sbin/bhyve/ trigger an llvm rebuild?
Message-ID:  <BE3945B0-CDA1-4BEC-8BA5-2D66DCAA3C6B@yahoo.com>
In-Reply-To: <ZbcAfTSR7zfsOaDj@albert.catwhisker.org>
References:  <EAD76C2C-065E-4EFA-901F-1C0FD13FFC65.ref@yahoo.com> <EAD76C2C-065E-4EFA-901F-1C0FD13FFC65@yahoo.com> <ZbZ2u9FlUhvb1orU@albert.catwhisker.org> <5BCB8F1A-B5D5-4506-87E1-8B26E713C6F5@yahoo.com> <ZbbPyYNtF6prkdtd@albert.catwhisker.org> <B1231700-D7A1-4190-AA2A-495CEA954535@yahoo.com> <8A79DE24-403E-4E73-82B6-0E5CF4F27604@yahoo.com> <Zbbrr6fh3sQ_VX-8@albert.catwhisker.org> <A20E1EB3-1D51-44FF-840F-69DB41C5CEA7@yahoo.com> <ZbcAfTSR7zfsOaDj@albert.catwhisker.org>

next in thread | previous in thread | raw e-mail | index | archive | help
[I cut out the history to start clean.]

So 63a7e799b32c was already built and installed as of here, from what
I can tell. This example does not show the 1c090bf880bf -> 63a7e799b32c
transition, only after 63a7e799b32c is already built and installed.

So, up to this point:

buildworld   63a7e799b32c
installworld 63a7e799b32c
NOTE: As of here various tools and such no loner have the
      timestamps they had from 1c090bf880bf.
reboot into  63a7e799b32c

~/Downloads/build_typescript.txt:10:    63a7e799b32c..2ee407b6068a  =
stable/14  -> origin/stable/14

So all the following build activity is building of
2ee407b6068a, not 63a7e799b32c directly, but the
timestamp relationships changed as mentioned above
cause various things to rebuild, despite lack of
source code updates being involved.

~/Downloads/build_typescript.txt:45: FreeBSD g1-48.catwhisker.org =
14.0-STABLE FreeBSD 14.0-STABLE #38 stable/14-n266551-63a7e799b32c: Sat =
Jan 27 11:40:05 UTC 2024     =
root@g1-48.catwhisker.org:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY =
amd64 1400506 1400506

I'll note that without a reboot the notation will stay
"stable/14-n266551-63a7e799b32c", even after 2ee407b6068a
is installed: it reports the operating kernel's hash, not
the installed kernel's hash.

~/Downloads/build_typescript.txt:51: >>> World build started on Sun Jan =
28 11:30:47 UTC 2024
~/Downloads/build_typescript.txt:19709: >>> World built in 2351 seconds, =
ncpu: 8, make -j16

So, up to this point (extending the prior list):

buildworld       63a7e799b32c
installworld     63a7e799b32c
NOTE: As of here various tools and such no loner have the
      timestamps they had from 1c090bf880bf.
reboot into      63a7e799b32c
Update source to 2ee407b6068a
buildworld       2ee407b6068a
NOTE: As of here more than just the changes for
      2ee407b6068a have rebuilt. But it need not
      be everything that built originally for
      63a7e799b32c. The details will matter
      later for the consequences.

I claim that without the "Update source to"
this would still have taken around 2000 sec
because of the installworld of the 63a7e799b32c
materials: the things are reinstalled that
caused the original (not shown) llvm rebuild
and such that took the original (not shown)
time.

Installworld of 2ee407b6068a will be very
different for what is not changed at all
(and so does not get new timestamps from
the install). But at this point a subset
of 63a7e799b32c also got rebuilds and, so,
new timestamps for the next installworld
to put in place.

I'll note that, while 2351 sec is a lot of
activity, the number of files that will be
installed is not likely to be in direct
proportion to the build time. For example,
large files from llvm.

I'll note that without the -dM option, the make
is not explicit about the timestamp relationships
that it used to pick what to rebuild. No specific
evidence for that is present.

~/Downloads/build_typescript.txt:39267: >>> Kernel(s)  CANARY built in =
898 seconds, ncpu: 8, make -j16
~/Downloads/build_typescript.txt:39274: >>> Installing kernel CANARY on =
Sun Jan 28 12:24:57 UTC 2024
~/Downloads/build_typescript.txt:42089: >>> Installing kernel CANARY =
completed on Sun Jan 28 12:25:27 UTC 2024

installkernel does not change notable timestamp relationships of
tools and such vs. other files.

~/Downloads/build_typescript.txt:42988: >>> Installing everything =
started on Sun Jan 28 12:25:57 UTC 2024
~/Downloads/build_typescript.txt:81798: >>> Installing everything =
completed on Sun Jan 28 12:28:01 UTC 2024

This is going to get new timestamps based on 2ee407b6068a
changes and based on the partial rebuild of 63a7e799b32c,
so more than just what 2ee407b6068a would update on its own.
But it is not obvious how many of the partial rebuild of
63a7e799b32c material would touch something that leads to
future rebuilds: likely far less but possibly not zero.

~/Downloads/build_typescript.txt:82482: To remove old libraries run =
'make delete-old-libs'.
~/Downloads/build_typescript.txt:82483: >> make delete-old OK
~/Downloads/build_typescript.txt:82537: FreeBSD g1-48.catwhisker.org =
14.0-STABLE FreeBSD 14.0-STABLE #38 stable/14-n266551-63a7e799b32c: Sat =
Jan 27 11:40:05 UTC 2024     =
root@g1-r8.catwhisker.org:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY =
amd64 1400506 1400506

No reboot, so it did not report 2ee407b6068a, despite it
being built and installed (along with rebuilding and
reinstalling some 63a7e799b32c material).

~/Downloads/build_typescript.txt:82543: >>> World build started on Sun =
Jan 28 12:30:11 UTC 2024
~/Downloads/build_typescript.txt:100102: >>> World built in 116 seconds, =
ncpu: 8, make -j16

The timestamps from the partial 63a7e799b32c rebuild and
the 2ee407b6068a build activity are involved in determining
what gets rebuilt above. 2ee407b6068a does not contribute
much here. It is unclear how much the partial rebuild of
63a7e799b32c contributes to timestamps that would cause
more rebuilds. The 116 sec indicates: not much gets new
timestamps this time.

~/Downloads/build_typescript.txt:119629: >>> Kernel(s)  CANARY built in =
920 seconds, ncpu: 8, make -j16
~/Downloads/build_typescript.txt:119636: >>> Installing kernel CANARY on =
Sun Jan 28 12:47:27 UTC 2024
~/Downloads/build_typescript.txt:122450: >>> Installing kernel CANARY =
completed on Sun Jan 28 12:47:55 UTC 2024

installkernel does not change notable timestamp relationships of
tools and such vs. other files.

~/Downloads/build_typescript.txt:123346: >>> Installing everything =
started on Sun Jan 28 12:48:25 UTC 2024
~/Downloads/build_typescript.txt:162156: >>> Installing everything =
completed on Sun Jan 28 12:50:01 UTC 2024

This install's both the partial-63a7e799b32c-rebuild material
and the 2ee407b6068a material. The 116 sec figure suggests that
there is not man files with updated timestamps.

A reboot is involved here (or just below), so 2ee407b6068a will show up.

~/Downloads/build_typescript.txt:162840: To remove old libraries run =
'make delete-old-libs'.
~/Downloads/build_typescript.txt:162841: >> make delete-old OK
~/Downloads/build_typescript.txt:162895: FreeBSD g1-48.catwhisker.org =
14.0-STABLE FreeBSD 14.0-STABLE #40 stable/14-n266554-2ee407b6068a: Sun =
Jan 28 12:39:17 UTC 2024     =
root@g1-48.catwhisker.org:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY =
amd64 1400506 1400506

The 2ee407b6068a kernel now shows as being in operation.

~/Downloads/build_typescript.txt:162897: >>> Removing old libraries
~/Downloads/build_typescript.txt:162932: FreeBSD g1-48.catwhisker.org =
14.0-STABLE FreeBSD 14.0-STABLE #40 stable/14-n266554-2ee407b6068a: Sun =
Jan 28 12:39:17 UTC 2024     =
root@g1-48.catwhisker.org:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY =
amd64 1400506 1400506

Still 2ee407b6068a.

~/Downloads/build_typescript.txt:162938: >>> World build started on Sun =
Jan 28 23:17:05 UTC 2024
~/Downloads/build_typescript.txt:180497: >>> World built in 124 seconds, =
ncpu: 8, make -j16

It is possible here that little or no 63a7e799b32c related
timestamp changes that lead to rebuild activity were involved
in the above buildworld . It depends on the details of what
was rebuilt. the 116 sec and 124 sec figures both suggest:
no much overall.

~/Downloads/build_typescript.txt:200023: >>> Kernel(s)  CANARY built in =
901 seconds, ncpu: 8, make -j16
~/Downloads/build_typescript.txt:200030: >>> Installing kernel CANARY on =
Sun Jan 28 23:34:11 UTC 2024
~/Downloads/build_typescript.txt:202844: >>> Installing kernel CANARY =
completed on Sun Jan 28 23:34:39 UTC 2024

installkernel does not change notable timestamp relationships of
tools and such vs. other files.

~/Downloads/build_typescript.txt:203743: >>> Installing everything =
started on Sun Jan 28 23:35:09 UTC 2024
~/Downloads/build_typescript.txt:242553: >>> Installing everything =
completed on Sun Jan 28 23:37:16 UTC 2024

2ee407b6068a will still show up after the the reboot.

~/Downloads/build_typescript.txt:243237: To remove old libraries run =
'make delete-old-libs'.
~/Downloads/build_typescript.txt:243238: >> make delete-old OK
~/Downloads/build_typescript.txt:243292: FreeBSD g1-48.catwhisker.org =
14.0-STABLE FreeBSD 14.0-STABLE #41 stable/14-n266554-2ee407b6068a: Sun =
Jan 28 23:26:10 UTC 2024     =
root@g1-48.catwhisker.org:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY =
amd64 1400506 1400506

Yep, still 2ee407b6068a.

~/Downloads/build_typescript.txt:243294: >>> Removing old libraries


Overall this sequence fits what I expect. The above wording is
more detailed than my earlier quick summaries.


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BE3945B0-CDA1-4BEC-8BA5-2D66DCAA3C6B>