Re: NanoBSD: CURRENT unable to compile 13-STABLE : ld: error: args.o: Opaque pointers are only supported in -opaque-pointers mode (Producer: 'LLVM15.0.7' Reader: 'LLVM 14.0.5')

From: FreeBSD User <freebsd_at_walstatt-de.de>
Date: Thu, 30 Mar 2023 15:14:59 UTC
Am Thu, 30 Mar 2023 16:56:09 +0200
Mateusz Guzik <mjguzik@gmail.com> schrieb:

> On 3/30/23, Mateusz Guzik <mjguzik@gmail.com> wrote:
> > On 3/30/23, FreeBSD User <freebsd@walstatt-de.de> wrote:  
> >> Hello folks,
> >>
> >> some strange misbehaviour in a NanoBSD compilation is driving me nuts.
> >> Recently I posted some
> >> error messages regarding
> >>
> >> [...]
> >> src/sys/dev/an/if_an_pci.c:143:1: error: a
> >> function definition without a prototype is deprecated in all versions of
> >> C
> >> and is not
> >> supported in C2x [-Werror,-Wdeprecated-non-prototype]
> >> [...]
> >>
> >> but being able compiling the kernel was "a lucky shot/mistake" and in the
> >> vain of discussion
> >> it has been revealed that my nanoBSD specific "make.conf/src.conf"
> >> configurations were wrong.
> >>
> >> So, again:
> >>
> >> The builder host is a recent CURRENT (FreeBSD 14.0-CURRENT #2
> >> main-n261876-f5a365e51fee: Thu
> >> Mar 30 11:23:19 CEST 2023 amd64), the target is a most recent 13-STABLE
> >> (git
> >> pull on a
> >> daily/hourly/most recentl basis when trying to build).
> >>
> >> As I understand the src/buildworld config, it seems crucial to have
> >> CURRENT
> >> and 13-STABLE
> >> somehow separated due to their divergende in used LLVM/CLANG (CURRENT has
> >> LLVM 15, 13-STABLE
> >> is with LLVM 14).
> >>
> >> Putting
> >>
> >> WITHOUT_SYSTEM_COMPILER=YES
> >> WITHOUT_SYSTEM_LINKER=YES
> >>
> >> into CONF_BUILD= AND CONF_WORLD= of NanoBSD configuration should prevent
> >> the
> >> usage of
> >> CURRENT's LLVM 15 and instead a cross compiling with 13-STABLE's LLVM 14
> >> compiler and linker
> >> should be used to buildworld.
> >>
> >> But this doesn't seem to happen (at least in my case), since buildworld
> >> fails to build with:
> >>
> >> [...]
> >> cc -target x86_64-unknown-freebsd13.2
> >> --sysroot=/pool/home/ohartmann/Projects/router/router/apu2c4/world/obj/amd64/ALERICH_13-STABLE_amd64/pool/home/ohartmann/Projects/router/router/apu2c4/src/amd64.amd64/tmp
> >> -B/pool/home/ohartmann/Projects/router/router/apu2c4/world/obj/amd64/ALERICH_13-STABLE_amd64/pool/home/ohartmann/Projects/router/router/apu2c4/src/amd64.amd64/tmp/usr/bin
> >> -O2 -pipe -fno-common -DMAINEXEC=bc -DNLSPATH=/usr/share/nls/%L/%N.cat
> >> -DBUILD_TYPE=A
> >> -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_PROMPT=0 -DBC_DEFAULT_SIGINT_RESET
> >> -DBC_DEFAULT_TTY_MODE
> >> -DBC_ENABLED -DBC_ENABLE_EDITLINE -DBC_ENABLE_EXTRA_MATH
> >> -DBC_ENABLE_LIBRARY=0
> >> -DBC_ENABLE_LONG_OPTIONS -DBC_ENABLE_HISTORY -DBC_ENABLE_PROMPT
> >> -DBC_ENABLE_RAND
> >> -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_SIGINT_RESET -DDC_DEFAULT_TTY_MODE=0
> >> -DDC_ENABLED -DNDEBUG
> >> -I/pool/home/ohartmann/Projects/router/router/apu2c4/src/contrib/bc/include
> >> -DBC_ENABLE_NLS=1
> >> -flto -DNDEBUG -fPIE -mretpoline -ftrivial-auto-var-init=zero
> >> -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
> >> -std=gnu99
> >> -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Wall
> >> -Wno-format-y2k -W
> >> -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
> >> -Wpointer-arith -Wreturn-type
> >> -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter
> >> -Wcast-align
> >> -Wchar-subscripts -Wnested-externs -Wold-style-definition
> >> -Wno-pointer-sign
> >> -Wmissing-variable-declarations -Wthread-safety -Wno-empty-body
> >> -Wno-string-plus-int
> >> -Wno-unused-const-variable -Wno-error=unused-but-set-variable
> >> -Qunused-arguments  -Wl,-zrelro
> >> -pie -Wl,-zretpolineplt   -o gh-bc args.o bc.o bc_lex.o bc_parse.o data.o
> >> dc.o dc_lex.o
> >> dc_parse.o file.o history.o lang.o lex.o main.o num.o opt.o parse.o
> >> program.o rand.o read.o
> >> vector.o vm.o bc_help.o dc_help.o lib.o lib2.o   -ledit ld: error:
> >> args.o:
> >> Opaque pointers are
> >> only supported in -opaque-pointers mode (Producer: 'LLVM15.0.7' Reader:
> >> 'LLVM 14.0.5') cc:
> >> error: linker command failed with exit code 1 (use -v to see invocation)
> >> ***
> >> [gh-bc] Error
> >> code 1
> >>
> >> make[5]: stopped in
> >> /pool/home/ohartmann/Projects/router/router/apu2c4/src/usr.bin/gh-bc
> >> [...]
> >>
> >>
> >> I'm now out of options here :-(
> >>  
> >
> > are you even using the dev/an driver?
> >
> > you should probably just remove it from the kernel (and any other
> > driver of the sort)
> >
> > ultimately you should be able to stick to the compiler from main. in
> > the worst case the commit to turn "function definition without a
> > prototype is deprecated" from errors to warnings could be merged to
> > stable/13 to facilitate the build
> >
> > it may be you will be able to get away with modifying CFLAGS like so:
> > CFLAGS+=-Wno-deprecated-non-prototype
> >
> > in src.conf and/or make.conf
> >  
> 
> So I looked into it and landed
> https://cgit.FreeBSD.org/src/commit/?id=82eb549f800e08158802b74bef62e7db0939a3fe
> 
> As of that commit I can both buildworld and buildkernel a stable/13
> tree while running main, without any magic to change compilers.
> 

Running poudriere on another most recent CURRENT box with a 13-STABLE jail also gives me the
ability to build a clean 13-STABLE jail (buildworld from sources from another source tree like
it is done for FreeBSD-pkgbase, then updating jail's with poudriere's -m
src=/path/to/13-STABLE/src) - the only pity is that due to a chflags problem during install I
have to delete the jail first and then recreate it to install the new compiled 13-STABLE
binaries. Quint essence: Since a couple of weeks for now I can build 13-STABLE on CURRENT that
way. But I can't build NanoBSD as reported above.

-- 
O. Hartmann