15.0 upgrade feedback

But the threads you mention are here and there and getting sidetracked. And this does give one place to look.

So, I'll start. I tried to upgrade one machine using pkgbase. I wound up misreading the handbook guide, which is apparently not up to date anyway, and wound up with STABLE, rather than RELEASE. As the install is on ZFS, I had a 14.3-p6 BE, used that, tried again. I would say it sort of works. For example, I'm missing man--not man pages, but the command, missing sysrc, and few other odds and ends. It's in good enough shape that I can use it. At the moment, I'm taking my time, figuring out exactly what I need, and plan to do a fresh install of 15.0-RELEASE, and I think that where it asks if I want to use pkgbase or traditional, I'll use pkgbase as by the time of the next update, I expect the instructions will be correct.

I have a second, also expendable machine, that I pkgbasify-ed. I'm waiting for the handbook instructions to be updated so that they work. My main workstation isn't pkg basified, but I'll probably update that this weekend. Lastly, I have a multiboot laptop that I updated with freebsd-update. Everything seems fine, but firefox takes about 2 minutes to open. Again, the machine is rather expendable. I'm kind of holding off on the main workstation, till I get more feedback from these forums and elsewhere, as that machine is kind of important.

My (ill informed ) opinion so far is that pkgbase needs proper documentation of using it to upgrade. The standard freebsd-update seems to be fine, (save for my firefox issue, which I haven't yet tried to troubleshoot save for adding a test user and seeing if said user also has the problem, which it does. There are some error messages that show when I close it that I haven't yet researched.
 
Well... I upgraded my main FreeBSD VM to 15.0-RELEASE just now (with freebsd-update). That wasn't cool.

It's not about the OS, but the packages.

This time (I don't speak about the graphics which are always failing, but I always recover the thing), it was about two confidential web navigators, I mean chromium and firefox. They were unable to start because they needed /lib/libutil.so.9 which is a 14 lib (obviously, all the 14 libs have been deleted with the last freebsd-update install, but I ran before pkg-static upgrade).

I was on the quarterly repos and saw that both chromium and firefox were compiled on 14. I tried again pkg upgrade, but all was up-to-date. I switched on the latest repos and some upgrades went. firefox came compiled for 15 with the need of libutil.so.10 (yes!) and chromium, still compiled on 14, pulled misc/compat14x (which contains libutil.so.9).

So tell me, how to keep a functional desktop OS if you stay on quarterly repos?
I know the answer: wait. There is definitely something that isn't right in FreeBSD as a whole OS when major upgrades come.
 
Tried to build from source and the build stopped
Code:
--- fstatat.pico ---
*** [fstatat.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
--- fstatfs.pico ---
cc -march=i686 -mmmx -msse -msse2 -m32  -target x86_64-unknown-freebsd15.0  -DCOMPAT_LIBCOMPAT=\"32\"  -DCOMPAT_libcompat=\"32\"  -DCOMPAT_LIB32  --sysroot=/usr/obj/usr/src/amd64.amd64/tmp  -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -B/usr/obj/usr/src/amd64.amd64/tmp/usr/lib32 -fpic -DPIC  -D'_SYSCALL_BODY(name)=' -O2 -pipe -fno-common  -D_FORTIFY_SOURCE_read=_read -DNO__SCCSID -DNO__RCSID -I/usr/src/lib/libc/include -I/usr/src/include -I/usr/src/lib/libc/i386 -I/usr/src/lib/libsys/i386 -DNLS  -ftls-model=initial-exec -DCRT_IRELOC_REL -I/usr/src/lib/libc/csu/i386 -D__DBINTERFACE_PRIVATE -I/usr/src/contrib/gdtoa -I/usr/src/contrib/libc-vis -DINET6 -I/usr/obj/usr/src/amd64.amd64/obj-lib32/lib/libc -I/usr/src/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE -I/usr/src/lib/libmd -I/usr/src/contrib/jemalloc/include -I/usr/src/lib/libc/stdlib/malloc/jemalloc/include -D_USE_LG_VADDR_WIDE -DMALLOC_PRODUCTION -I/usr/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN -I/usr/src/lib/libc/rpc -DYP -DNS_CACHING -ffile-prefix-map=/usr/src=/usr/src -ffile-prefix-map=/usr/obj/usr/src/amd64.amd64=/usr/obj -g -gz=zlib -MD  -MF.depend.fstatfs.pico -MTfstatfs.pico -std=gnu17 -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wdate-time -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-error=unused-but-set-parameter -Wno-error=cast-function-type-mismatch -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter  -Qunused-arguments     -I/usr/src/lib/libutil -I/usr/src/lib/msun/i387 -I/usr/src/lib/msun/x86 -I/usr/src/lib/msun/src  -c /usr/src/lib/libc/sys/fstatfs.c -o fstatfs.pico
--- getdirentries.pico ---
cc: error: no such file or directory: '/usr/src/lib/libc/sys/getdirentries.c'
cc: error: no input files
*** [getdirentries.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
--- statfs.pico ---
cc: error: no such file or directory: '/usr/src/lib/libc/sys/statfs.c'
cc: error: no input files
*** [statfs.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
--- fstatfs.pico ---
cc: error: no such file or directory: '/usr/src/lib/libc/sys/fstatfs.c'
cc: error: no input files
*** [fstatfs.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
5 errors

make[4]: stopped in /usr/src/lib/libc

make[3]: stopped in /usr/src

make[2]: stopped in /usr/src
       14.51 real        85.42 user        32.41 sys
*** [build32] Error code 2

make[1]: stopped in /usr/src
1 error

make[1]: stopped in /usr/src

make: stopped in /usr/src

Also tried on a VM and got similar error

Code:
--- fstatat.pico ---
*** [fstatat.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
--- getdirentries.pico ---
cc: error: no such file or directory: '/usr/src/lib/libc/sys/getdirentries.c'
cc: error: no input files
*** [getdirentries.pico] Error code 1

make[4]: stopped in /usr/src/lib/libc
3 errors

make[4]: stopped in /usr/src/lib/libc

make[3]: stopped in /usr/src

make[2]: stopped in /usr/src
       21.88 real        71.47 user        26.44 sys
*** [build32] Error code 2

make[1]: stopped in /usr/src
1 error

make[1]: stopped in /usr/src

make: stopped in /usr/src
 
I update/upgrade exclusively from source, I didn't experience build errors on releng/15.0.

Have you perhaps set variables in /etc/make.conf, /etc/src.conf, /etc/src-env.conf, which could influence the build?
I do always build from source and the last 14.3 build was just OK. Now I downloaded 15.0 source with gitup (as awlays), but the

The only non-standard thing is
Code:
# cat /etc/src.conf
WITH_EXTRA_TCP_STACKS=1

This should not affect the make -j10 buildworld

Also, as I wrote here before, I tried this build on a VM and the build fails there as well.
 
/usr/src/lib/libc/sys/fstatfs.c
Something is really messed up. There is no such file in /usr/src/lib/libc/sys and the Makefile in the parent dir (libc) doesn't mention it, nor do any of the included Makefile.inc (in libc/Makefile). Look at the log of the make buildworld to see how you get to this point.
 
Something is really messed up. There is no such file in /usr/src/lib/libc/sys and the Makefile in the parent dir (libc) doesn't mention it, nor do any of the included Makefile.inc (in libc/Makefile). Look at the log of the make buildworld to see how you get to this point.
I think I did not understand - what and where should I look?

Also, on a VM I was able to build now, setting
Code:
# cat /etc/src.conf
WITH_EXTRA_TCP_STACKS=1

WITHOUT_LIB32=yes
WITHOUT_COMPAT_LIB32=yes

The World build completed

Code:
--- kyua.debug ---
objcopy --only-keep-debug kyua.full kyua.debug
--- kyua ---
objcopy --strip-debug --add-gnu-debuglink=kyua.debug  kyua.full kyua
      543.97 real      2412.23 user       232.44 sys
--- buildworld_epilogue ---
--------------------------------------------------------------
>>> World build completed on Sat Dec  6 17:27:06 EET 2025
>>> World built in 4450 seconds, ncpu: 5, make -j5
--------------------------------------------------------------
 
I think I did not understand - what and where should I look?
Generally I do this: "make -j8 buildworld buildkernel >& /tmp/err &". if the build fails I can poke around in the make output in /tmp/err near where the error occurred to see what may have gone wrong. Now that buildworld succeeded, you can ignore this or file it for future use!
 
I have that set as well (since the 14 branch), forgot about it, might be responsible, but haven't tried it.


grep(1)ing through the source code I can't find WITH_EXTRA_TCP_STACKS, where did you get that variable?
This is needed for
Code:
VBox ~# sysctl net.inet.tcp.functions_available
net.inet.tcp.functions_available:
Stack                           D Alias                            PCB count
freebsd                           freebsd                          0
rack                            * rack                             3

It is now working on VM

Code:
VBox ~# uname -aKU
FreeBSD VBox 15.0-RELEASE FreeBSD 15.0-RELEASE 7aedc8de6 RH_VIRT amd64 1500068 1500068
 
Generally I do this: "make -j8 buildworld buildkernel >& /tmp/err &".
If you get tired of typing the redirect to a log file, append "-jobs" to the build target (buildworld-jobs, buildkernel-jobs, etc). The downside is, the build will run with all available cpu cores.

src/UPDATING.
Code:
20230420:
        Add jobs.mk to save typing. Enables -j${JOB_MAX} and logging
        eg.
                make buildworld-jobs
        runs
                make -j${JOB_MAX} buildworld > ../buildworld.log 2>&1

        where JOB_MAX is derived from ncpus in local.sys.mk if not set in env.
src/share/mk/jobs.mk
 
grep(1)ing through the source code I can't find WITH_EXTRA_TCP_STACKS, where did you get that variable?
This is needed for
Code:
VBox ~# sysctl net.inet.tcp.functions_available
net.inet.tcp.functions_available:
Stack                           D Alias                            PCB count
freebsd                           freebsd                          0
rack                            * rack                             3

I don't think you need to set the variable anymore. On my system, no WITH_EXTRA_TCP_STACKS=1 is set as a build argument: /boot/loader.conf tcp_rack_load="YES":
Code:
root@15zfs:~ # sysctl net.inet.tcp.functions_available
net.inet.tcp.functions_available: 
Stack                           D Alias                            PCB count
freebsd                         * freebsd                          2
rack                              rack                             0

It appears to have been removed from the source code, or it should have been mentioned in sys/conf/NOTES.
 
If you get tired of typing the redirect to a log file, append "-jobs" to the build target (buildworld-jobs, buildkernel-jobs, etc). The downside is, the build will run with all available cpu cores.
:-) I have a script that builds any of the branches I am following for any supported arch. and puts their logs in ~/<arch>/<branch>/err! At one point I even adjusted -j based on # of cpus!

Example use:
mkw curr 15 14 -A aarch64 curr & # option -k to just build the kernel -w to just build the world, default is to build both
 
I have a script that builds any of the branches I am following for any supported arch. and puts their logs in ~/<arch>/<branch>/err! At one point I even adjusted -j based on # of cpus!
A custom script surely helps to keep the logs tidy, especially building multi-arch, multi-branch. I like your cpu core control, on my AMD ThinkPad 5700U I need to reduce the # of cpu cores when building, to have a usable xorg session without lagging (e.g. down from 16 to 10 cores).
 
Back
Top