Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Jan 2025 12:36:07 -0700
From:      "Edward Sanford Sutton, III" <mirror176@hotmail.com>
To:        questions@freebsd.org
Subject:   Re: 14.2-RELEASE buildworld failure
Message-ID:  <CO1PR11MB4770F303653DDAB43C464080E6E22@CO1PR11MB4770.namprd11.prod.outlook.com>
In-Reply-To: <202501240806.50O86h91025926@sdf.org>
References:  <202501240806.50O86h91025926@sdf.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/24/25 01:06, Scott Bennett wrote:
>       I have been trying in vain to upgrade from
> 
> FreeBSD hellas 12.4-RELEASE-p2 FreeBSD 12.4-RELEASE-p2 #9 releng/12.4-n235816-149768b65d61: Sat Feb 18 00:13:00 CST 2023     bennett@hellas:/usr/obj/usr/src/amd64.amd64/sys/hellas  amd64
> 
> to 14.2-RELEASE for some time now, but when I run "make buildworld" it fails
> during a linkedit step on complaints that it can't find a library that it wants.
> Here is an example of how it ends.
>       .
>       .
>       .
> --- all_subdir_libexec ---
> --- all_subdir_libexec/atf/atf-check/tests ---
> ===> libexec/atf/atf-check/tests (all)
> --- atf-check_test ---
> echo '#! /usr/libexec/atf-sh' > atf-check_test.tmp
> cat /usr/src/contrib/atf/atf-sh/atf-check_test.sh >>atf-check_test.tmp
> chmod +x atf-check_test.tmp
> mv atf-check_test.tmp atf-check_test
> --- Kyuafile ---
> --- atf-check.full ---
> /usr/local/libexec/ccache/world/c++ -target x86_64-unknown-freebsd14.2 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -O2 -pipe "-mtune=core2" -fno-common -march=core2 -DHAVE_CONFIG_H -I/usr/src/contrib/atf -DATF_SHELL='"/bin/sh"' -fPIE -g -gz=zlib -Wno-format-zero-length -nobuiltininc -idirafter /usr/lib/clang/13.0.0/include -fstack-protector-all -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wpointer-arith -Wno-uninitialized -Wdate-time -Wformat=2 -Wno-format-extra-args -Werror -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -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-format-nonliteral -Qunused-arguments -fPIE -std=c++11 -Wno-deprecated-declarations -Wno-c++11-extensions  -Wl,-zrelro -pie   -o atf-check.full  atf-check.o -lprivateatf-c++ -lprivateatf-c
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char, unsigned long) const
>>>> referenced by atf-check.cpp:345 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:345)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by atf-check.cpp:263 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:263)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by atf-check.cpp:313 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:313)
>>>>                atf-check.o:(parse_output_check_arg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)
>>>> referenced by string:1576 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1576)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by string:1576 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1576)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by string:1576 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1576)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced 5 more times
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*) const
>>>> referenced by atf-check.cpp:264 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:264)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by atf-check.cpp:314 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:314)
>>>>                atf-check.o:(parse_output_check_arg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)
>>>> referenced by string:3978 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:3978)
>>>>                atf-check.o:((anonymous namespace)::atf_check::process_option(int, char const*))
>>>> referenced by string:1254 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1254)
>>>>                atf-check.o:((anonymous namespace)::atf_check::main())
>>>> referenced by string:3978 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:3978)
>>>>                atf-check.o:(run_output_checks(std::__1::vector<(anonymous namespace)::output_check, std::__1::allocator<(anonymous namespace)::output_check> > const&, atf::fs::path const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
>>>> referenced 2 more times
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)
>>>> referenced by string:1258 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1258)
>>>>                atf-check.o:((anonymous namespace)::atf_check::main())
>>>> referenced by atf-check.cpp:589 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:589)
>>>>                atf-check.o:(run_output_checks(std::__1::vector<(anonymous namespace)::output_check, std::__1::allocator<(anonymous namespace)::output_check> > const&, atf::fs::path const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
>>>> referenced by istream:1269 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/istream:1269)
>>>>                atf-check.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline[abi:se180100]<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char))
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*)
>>>> referenced by string:3965 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:3965)
>>>>                atf-check.o:(get_monotonic_useconds())
>>>> referenced by string:3965 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:3965)
>>>>                atf-check.o:(cat_file(atf::fs::path const&))
>>>> referenced by string:3965 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:3965)
>>>>                atf-check.o:(run_output_checks(std::__1::vector<(anonymous namespace)::output_check, std::__1::allocator<(anonymous namespace)::output_check> > const&, atf::fs::path const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
>>>> referenced 5 more times
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::reserve(unsigned long)
>>>> referenced by atf-check.cpp:557 (/usr/src/contrib/atf/atf-sh/atf-check.cpp:557)
>>>>                atf-check.o:(run_output_checks(std::__1::vector<(anonymous namespace)::output_check, std::__1::allocator<(anonymous namespace)::output_check> > const&, atf::fs::path const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
>>>> referenced by sstream:420 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/sstream:420)
>>>>                atf-check.o:(std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_istringstream[abi:se180100](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int))
> 
> ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)
>>>> referenced by string:1196 (/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/string:1196)
>>>>                atf-check.o:(std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init_buf_ptrs[abi:se180100]())
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char, unsigned long) const [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string() [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::erase(unsigned long, unsigned long) [--no-allow-shlib-undefined]
> ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c++.so: undefined reference to std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char) [--no-allow-shlib-undefined]
> --- all_subdir_cddl ---
> make[5]: /usr/obj/usr/src/amd64.amd64/cddl/lib/libzpool/.depend, 1: ignoring stale .depend for /usr/obj/usr/src/amd64.amd64/cddl/lib/libicp/libicp_pie.a
> make[5]: /usr/obj/usr/src/amd64.amd64/cddl/lib/libzpool/.depend, 1: ignoring stale .depend for /usr/obj/usr/src/amd64.amd64/cddl/lib/libnvpair/libnvpair_pie.a
> --- libzpool.so.2.full ---
> building shared library libzpool.so.2
> --- all_subdir_libexec ---
> c++: error: linker command failed with exit code 1 (use -v to see invocation)
> *** [atf-check.full] Error code 1
> 
> make[5]: stopped in /usr/src/libexec/atf/atf-check
> --- all_subdir_cddl ---
> --- all_subdir_lib ---
> ctfconvert -L VERSION -g fini_test.pico
> --- all_subdir_bin ---
> ctfconvert -L VERSION -g chflags.o
>          8.28 real         0.98 user         0.97 sys
> 5770.159u 5426.451s 5:32:51.54 56.0%	708+388k 8457884+476362io 125159pf+25w
> hellas#	
> 
>       My /etc/make.conf contains the following.
> 
> ALLOW_UNSUPPORTED_SYSTEM=YES
> # added by SJB  11 Jan. 2007
> CPUTYPE?=core2
> #CPUTYPE?=penryn # gcc9 doesn't recognize this, so use core2 -mssse3 -msse4.1
> # added by SJB  8 Nov. 2011
> CFLAGS+="-mtune=core2"
> #CFLAGS+="-mtune=penryn" # see note for CPUTYPE above
> # added by SJB 14 Apr. 2013
> # updated by SJB  8 Dec. 2014
> SVNFLAGS?="-r RELENG_11"
> # build ports with clang stack protector
> WITH_SSP=yes
> SSP_CFLAGS=-fstack-protector-all
> # added for ports system use to avoid dialogs by SJB  4 May 2007
> BATCH=YES
> # added for new pkg system  --SJB  10 December 2014
> WITH_PKGNG=yes
> # build ports using ccache  --SJB  19 January 2015
> WITH_CCACHE_BUILD=yes
> ## buildworld and buildkernel using ccache  --SJB  26 January 2015
> .if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
> .if !defined(NOCCACHE) && exists(/usr/local/libexec/ccache/world/cc)
> CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
> CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
> CCACHE_COMPILERCHECK=content
> CCACHE_DIR=/buildwork/ccache.freebsd
> .endif
> .else
> CFLAGS+="-mssse3"
> CFLAGS+="-msse4.1"
> .endif
> # added to deal with ccache bug 8460  --SJB  2 November 2013
> # bug has been reported fixed, so try without this workaround
> #CCACHE_CPP2=1
> # added as a better specification of -j by SJB 17 November 2009
> MAKE_JOBS_NUMBER=4
> ## added to compile without profiling  --SJB  3 June 2007
> #NO_PROFILE=true
> # put build tree where there is plenty of temporary workspace
> WRKDIRPREFIX=/buildwork/ports
> #WRKDIRPREFIX=/work/portswork
> # Use OpenSSL from ports tree, not from base system
> #WITH_OPENSSL_PORT=YES
> #DEFAULT_VERSIONS+=  ssl=libressl
> DEFAULT_VERSIONS+=  ssl=openssl
> DEFAULT_VERSIONS+=bdb=5+
> DEFAULT_VERSIONS+= linux=c7_64
> DEFAULT_VERSIONS+=  perl5=5.32
> DEFAULT_VERSIONS+= python=3.9 python2=2.7 python3=3.9
> # Allow updating of Mesa3D from 7.4.4 to 7.6.1 and libdrm from 2.4.12 to 2.4.17
> WITHOUT_NOUVEAU=yes
> # Use ATLAS libraries in ports that use BLAS libraries
> OPTIONS_SET=ATLAS
> # Tell gnustep-related ports to use base system's compiler
> GNUSTEP_WITH_BASE_GCC=yes
> GNUSTEP_WITHOUT_LIBOBJC=yes
> # Pango
> #..if $(.CURDIR:M*/x11-toolkits/linux-pango)
> #DISABLE_VULNERABILITIES=yes
> #..endif
> QT4_OPTIONS= CUPS NAS QGTKSTYLE
> # Begin portconf settings
> # Do not touch these lines
> .if !empty(.CURDIR:M/usr/ports*) && exists(/usr/local/libexec/portconf)
> _PORTCONF!=/usr/local/libexec/portconf
> .if ${_PORTCONF} != "|"
> .for i in ${_PORTCONF:S/^|//:S/|/ /g}
> ${i:C/^([^=]*)=.*/\1/}=${i:C/^[^=]*=//:S/%/ /g}
> .endfor
> .endif
> .endif
> # End portconf settings
> 
>       My /etc/src.conf is as follows.  Note that PORTS_MODULES has been
> commented out for years.
> 
> # The PORTS_MODULES must be built and installed manually because the
> # mechanism of /etc/src.conf fails when installing into a ZFS clone
> # of the root file system mounted onto /mnt.  Leave the following
> # line commented, and remember to build them after installing world
> # and rebooting into the newly installed system.
> #PORTS_MODULES=emulators/virtualbox-ose-kmod graphics/drm-fbsd11.2-kmod sysutils/graid5 sysutils/pefs-kmod
> WITH_CCACHE_BUILD=yes
> WITH_CLANG_EXTRAS=yes
> WITH_CLANG_FULL=yes
> WITH_CTF=yes
> WITH_DEBUG_FILES=yes
> WITH_EXTRA_TCP_STACKS=yes
> WITH_LIBCPLUSPLUS=yes
> WITH_LINT=yes
> WITH_LLD_BOOTSTRAP=yes
> WITH_LLDB=yes
> WITH_LOADER_FIREWIRE=yes
> WITH_LOADER_GELI=yes
> WITH_ZONEINFO_LEAPSECONDS_SUPPORT=yes
> #WITHOUT_CLANG_BOOTSTRAP=yes
> WITHOUT_CROSS_COMPILER=yes
> WITHOUT_REPRODUCIBLE_BUILD=YES
> 
>       If someone more knowledgeable about the buildworld process can tell me
> what I need to do to get buildworld to run to completion so that I can upgrade,
> I could really use the help.  I have some installed ports and packages that
> are now often failing, but I can't upgrade them on this obsolete release.
>       Thanks in advance for any help.

   Some of the settings are old/outdated and can be removed and I admit 
I don't know what all of them even do. Settings that you only want to 
have applied to building world/kernel and not also apply to each prot's 
build are normally put into /etc/src.conf .
   I'd say its good to disable PORTS_MODULES as it causes building to 
freeze if building with a jobs count defined and any port opens up a 
configure dialog since the dialog must be answered to continue but the 
dialog can't reach the terminal for the user to answer it; if you want 
to use it then you need to preemptively make sure all dialogs are 
answered or remove the jobs count during the stage where they are built. 
At that point I just avoid the bug by building them separate; I use 
poudriere but its definitely a slower routine to do so.
   It is recommended to disable building with multiple jobs when 
upgrading instead of rebuilding though its normally not an issue; could 
try it anyway and definitely makes compiler output reporting more 
orderly+repeatable.
   I've also had various issues with cached results interfering with 
builds. Are you also using WITH_META_MODE defined in /etc/src-env.conf ?
   If you are wanting to skip 13 because of the "scary data loss" bug, 
remember that the same bug is present in 12 and all earlier versions too 
(though less of the tools were as capable of triggering it); I thought 
there was a sysctl that was recommended to further minimize its issues. 
The horrible freebsd-upgrade performance people mentioned going from 12 
to 13 and 13 to 14 should not impact upgrading from source. I'd avoid 
earlier 13 versions and go straight to its latest if possible; think it 
was 13.2 and arc_prune that had bad system performance overall but 
seemed to have other symptoms/issues of slowdown on my system beyond 
that. Most of my 13 performance issues were related to high memory use 
and short of that spiraling out of control I'd say it was otherwise 
relatively stable for me. If its about data concerns, those are best 
fixed by a backup.
   I had to do additional cleanup steps to go from 13 to 14 
successfully. Not sure what interfered and don't have the build errors 
on hand at the moment but I used the following for cleanup:

chflags -R noschg /usr/obj/usr;rm -rf /usr/obj/usr;cd /usr/src&&make 
cleandir&&make cleandir

   Those were from my old notes I had from years of upgrading a box. I 
don't recall notes that make me think going from 12 to 14 needs an 
intermediate step but I haven't tried it. Intermediate versions are 
recommended when unexplained failures occur.
   If cleanup doesn't fix it then you have to choose to try to narrow 
down which version you can jump to with your current configuration to 
determine what is breaking and/or simplify your configuration to see if 
your 12 to 14 leap is in iteself broken.
   If you tried a proper cleanup, tried disabling caching, tried 
building with 1 job, and not customizing the world/kernel build 
options/environment without success then I assume there is an 
intermediate step needed. You could try earlier versions of 14 if you 
still insist on trying to skip 13 in case its somehow something weird 
about certain upgrades to the compiler or something.
   You don't need to do an installworld/installkernel to test 'if' a 
build failure is still happening so you could completely remove 
customizations to the kernel, make.conf, etc. Once building works then 
you can start adding pieces back in.

>                                    Scott Bennett, Comm. ASMELG, CFIAG
> **********************************************************************
> * Internet:   bennett at sdf.org   *xor*   bennett at freeshell.org  *
> *--------------------------------------------------------------------*
> * "A well regulated and disciplined militia, is at all times a good  *
> * objection to the introduction of that bane of all free governments *
> * -- a standing army."                                               *
> *    -- Gov. John Hancock, New York Journal, 28 January 1790         *
> **********************************************************************
> 
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CO1PR11MB4770F303653DDAB43C464080E6E22>