Re: clang/llvm-tblgen --- ld: error: undefined symbol: setupterm

From: Dimitry Andric <dim_at_FreeBSD.org>
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