Re: Upgrading -RELEASE to -CURRENT

From: Josef 'Jeff' Sipek <jeffpc_at_josefsipek.net>
Date: Sat, 20 Apr 2024 02:05:17 UTC
On Fri, Apr 19, 2024 at 18:15:59 -0600, Warner Losh wrote:
> On Fri, Apr 19, 2024, 6:08 PM void <void@f-m.fm> wrote:
> 
> > On Fri, Apr 19, 2024 at 06:46:04PM -0400, Josef 'Jeff' Sipek wrote:
> >
> > >Is upgrading from 14.0-RELEASE directly to -CURRENT supposed to work?  I
> > >didn't see anything in the docs that says it shouldn't.
> >
> > I think the general principle is "upgrade to latest version of thing
> > before upgrading major version" so for 14.0 that would involve building &
> > installing 14-stable and then 15-current.
> >
> 
> 
> Last release to current almost always works. So 14.0 to current is doable.
> I did 14.0 beta1 -> current 3 weeks ago.
> 
> Etcupdate pre mode, Buildworld, buildkernel, installkernel, reboot,
> installworld, etcupdate, reboot -r
> 
> But OP said they did that twice, once for stale/14 and once for main so I'm
> not sure what is going on.  Need error message i think.

Ok, trying again:

0. install from ISO & freebsd-update to 14.0-RELEASE-p6; install git from pkg
1. git clone main (1bd4f769caf) into /usr/src
2. cd /usr/src
3. make buildworld -j48

   First build I get a fairly prompt failure:

   sh: llvm-min-tblgen: not found

   Some flailing around with 'make clean' and retrying the same buildworld
   gets past it.  At this point, I have llvm-min-tblgen{,.debug} in
   /usr/obj/...  (I'm assuming that there is some missing dependency in
   tools build.)

   Weirdly enough, from this point on, if blow everything away (git clean
   -fdx; rm -rf /usr/obj/*), the subsequent 'make buildworld -j48' is fine.

   So,

   a. the first time(?) I try buildworld, it fails because of missing
      llvm-min-tblgen
   b. subsequent buildworlds complete fine even if there is no OBJDIR and
      the tree is clean

4. make buildkernel -j48
5. etcupdate -p
6. make installkernel -j48
7. reboot (into single user mode)
8. zfs set readonly=off zroot/ROOT/default
9. zfs mount -a
10. cd /usr/src
11. make installworld -j48
12. etcupdate -B

    This prints "Failed to build new tree." and exits with 1

13. cc

    ld-elf.so.1: /lib/libcxxrt.so.1: version CXXABI_1.3.11 required by /lib/libc++.so.1 not found

14. reboot -r (sort of pointless to mention given that the system is already
    in a broken state)

(At this point, cc, and other C++-based programs fail to run.)

So, it looks like 'etcupdate -B' is upset for whatever reason.

I'll try to poke at various things, but I've seen these two failures (llvm-min-tblgen
and CXXABI) about half a dozen times when I try to go from 14.0-RELEASE to
-CURRENT, but *zero* times if I make a detour through -STABLE.

Thanks,

Jeff.

P.S. I've seen the same exact failures on my "antique" 4-core Nehalem.  So,
I don't think it has to do with the high parallelism (-j48) in the above
steps.