Re: clang/llvm-tblgen --- ld: error: undefined symbol: setupterm
Date: Sat, 09 Oct 2021 17:09:13 UTC
On 9 Oct 2021, at 15:40, Warner Losh <imp@bsdimp.com> wrote: > > On Sat, Oct 9, 2021, 5:59 AM Dimitry Andric <dim@freebsd.org> wrote: > On 9 Oct 2021, at 13:37, Dimitry Andric <dim@FreeBSD.org> wrote: > > > > On 9 Oct 2021, at 09:46, FreeBSD User <freebsd@walstatt-de.de> wrote: > >> > >> On recent CURRENT (FreeBSD 14.0-CURRENT #2 main-n249971-0525ece3554e: > >> Fri Oct 8 15:17:34 CEST 2021 amd64) building of an 13-STABLE based > >> appliance failed very early in the build process of the 13-STABLE > >> sources as shown below. 13-STABLE is most recent, since the sources are > >> fetched every time the build process is triggered. > > ... > >> /pool/home/ohartmann/Projects/router/router/apu2c4/src/tools/install.sh > >> -s -o root -g wheel -m 555 compile_et > >> /pool/home/ohartmann/Projects/router/router/apu2 > >> c4/world/amd64/ALERICH_13-STABLE_amd64/pool/home/ohartmann/Projects/router/router/apu2c4/src/amd64.amd64/tmp/legacy/usr/bin/compile_et > >> --- _bootstrap-tools-usr.bin/clang/llvm-tblgen --- ld: error: undefined > >> symbol: setupterm > >>>>> referenced by Process.cpp > >>>>> Process.o:(llvm::sys::Process::FileDescriptorHasColors(int)) > > > > It is complaining about ncurses functions; it seems that even though the link step gets -lncursesw added, it still is not able to find the symbol: > > Okay, this is because recently on -CURRENT, libtinfow got split off from > libncursesw: https://cgit.freebsd.org/src/commit/?id=396851c20aebd > > This affects such cross-builds obviously, and manually adding -ltinfow > to the link command line makes it link correctly. > > However, the 396851c20aebd commit is probably not suitable for MFC'ing > to stable/13. Maybe we need to put some kind of kludge in > share/mk/src.libnames.mk for this, or in the top-level Makefile.inc1? > > Baptiste, any ideas? :) > > Add setupterm() to libegacy as a nop. That's not enough I think, it requires more ncurses functions than just setupterm. And it actually calls them and checks the return values too, IIRC. :) -Dimitry