Re: NanoBSD: CURRENT unable to compile 13-STABLE : error: a function definition without a prototype is deprecated ... in C

From: Warner Losh <imp_at_bsdimp.com>
Date: Tue, 28 Feb 2023 03:44:31 UTC
On Mon, Feb 27, 2023 at 3:46 PM Dimitry Andric <dim@freebsd.org> wrote:

> On 27 Feb 2023, at 22:23, Paul Mather <paul@gromit.dlib.vt.edu> wrote:
> >
> > On Feb 27, 2023, at 2:57 PM, Dimitry Andric <dim@FreeBSD.org> wrote:
> >
> >> On 27 Feb 2023, at 19:19, FreeBSD User <freebsd@walstatt-de.de> wrote:
> >>>
> >>> Running recent CURRENT as host (FreeBSD 14.0-CURRENT #23
> main-n261147-b8bb73ab724b: Sun Feb 26
> >>> 17:39:38 CET 2023 amd64), and nanoBSD (recent 13-STABLE, git
> stable/13).
> >>>
> >>> Building an appliance based on 13-STABLE sources, a customized kernel
> via nanoBSD, since a
> >>> couple of weeks for now building the sources fails in kernel sources:
> >>>
> >>> [...]
> >>> --- modules-all ---
> >>> --- all_subdir_an ---
> >>>
> /pool/home/ohartmann/Projects/router/router/apu2c4/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]
> >>> [..]
> >>>
> >>> Disabling all wireless options in the kernel config starts dropping
> errors of a similar kind
> >>> on other kernel places.
> >>>
> >>> Compiling on FBSD 13-STABLE seems to be all right.
> >>>
> >>> Can this be fixed. please? What causes the error and how can this be
> resolved if the subtree
> >>> of FreeBSD's sources is a submodule?
> >>
> >> Not sure what you mean with "subtree is a submodule", but this is likely
> >> caused by skipping the cross-tools stage somehow. Do you have any
> >> specific make.conf or src.conf settings for that?
> >
> >
> > I got bitten by this recently.  In my case, it was Poudriere (running on
> 14-CURRENT) trying to build a 13-STABLE jail.  The Poudriere jail's
> "src.conf" was taken from the actual system for which Poudriere builds
> packages.  It had (amongst others) these two options:
> >
> > WITH_SYSTEM_COMPILER=yes
> > WITHOUT_CROSS_COMPILER=yes
> >
> >
> > When I commented these out in the jail-src.conf Poudriere file the jail
> built correctly.
> >
> > I figure the system built fine because its system compiler is LLVM
> 14.x.  The Poudriere system compiler is LLVM 15.x, which has the breaking
> change wrt. old-style prototypes.
>
> Yes, that is what I suspected in Oliver's case: if you skip the
> cross-tools stage in a buildworld of stable/13 on a 14-CURRENT host, by
> setting WITH_SYSTEM_COMPILER, you are bound to run into compilation
> errors that have been fixed in 14-CURRENT, but not yet MFC'd.
>
> The safest solution is to let cross-tools do its thing, which will check
> the host compiler, and automatically build an appropriate version of the
> compiler and linker for the stable branch, if required.
>
> That said, I will be merging clang 15.0.7 and a bunch of other things
> that should solve all these errors to stable/13 at some point, but not
> before the 13.2-RELEASE is out. This is to avoid making life more
> difficult for our release engineering team.
>

In the meantime, I think you can disable -Werror with MK_WERROR=no in one
of the nanobsd config file. The warnings are significantly less relevant
for stable/xx
because they are not likely to inspire people to fix them like they would
on main.

And to fix these, you'd need to merge the fixes from head, or at least the
neutering
of large classes of errors like we had (still have?) in main....

Warner


> -Dimitry
>
>