Date: Fri, 29 Dec 2023 10:09:07 -0700 From: Warner Losh <imp@bsdimp.com> To: Michael Tuexen <tuexen@freebsd.org> Cc: Konstantin Belousov <kostikbel@gmail.com>, Dimitry Andric <dim@freebsd.org>, Nuno Teixeira <eduardo@freebsd.org>, FreeBSD CURRENT <freebsd-current@freebsd.org> Subject: Re: devel/nspr: Fails to build on 1500008 5f71f9636efa Message-ID: <CANCZdfoPrsQkUekEqpVdf8saXkWq2DOkM57nHEm1dGJyHbM02w@mail.gmail.com> In-Reply-To: <CE216A44-E255-4334-A632-35C4B605D2D2@freebsd.org> References: <CAFDf7U%2BxbTuhS7nUzeZgVknMPyyfYxuakFtrE4=h-1LtFK_Yig@mail.gmail.com> <9EE91B0D-6CFB-464E-AB9C-3A15D77D55FB@freebsd.org> <CAFDf7UJBY9a=SX_iTE2TOxK_r%2BaK1NDizMdebuYeaL6Zb89QbQ@mail.gmail.com> <CAFDf7ULcNYuD4ZAWXCjgbcWBbdmWw2b0O1vb9phqjXCP5VhpJA@mail.gmail.com> <C5D01D64-82F6-4713-8156-1D3B68D2E1EA@FreeBSD.org> <ZY7EqD4QcV1K0zcA@kib.kiev.ua> <FDE0A068-FBB2-4704-BE58-3E44B048722B@freebsd.org> <CE216A44-E255-4334-A632-35C4B605D2D2@freebsd.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] On Fri, Dec 29, 2023, 6:52 AM <tuexen@freebsd.org> wrote: > > > > On Dec 29, 2023, at 14:43, tuexen@freebsd.org wrote: > > > >> On Dec 29, 2023, at 14:07, Konstantin Belousov <kostikbel@gmail.com> > wrote: > >> > >> On Fri, Dec 29, 2023 at 01:50:34PM +0100, Dimitry Andric wrote: > >>> The problem is really that our kernel headers (those under sys/) > require C99. The only thing that > https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8 > did was move two static inline functions from sys/netinet/tcp_var.h to > sys/netinet/tcp.h, and it looks like the former header is never directly > included by ports. The latter is, so those ports should be switched to C99, > or the sys/netinet/tcp.h header should be fixed to use __inline instead. > >>> > >> netinet/tcp.h is required by POSIX, and as far as we support > applications > >> using C89, it must stay C89 compatible. > >> > >> But why userspace would need these newish accessors at all? IMO at > least > > TCP is now using flags that are not contained in the th_flags field > anymore, > > but also use the th_x2 field. > > > > People were assuming that all flags are in th_flags and th_x2 is not > used and > > used it for internal processing. This was causing problems. > > > > Using the accessor functions hides the split between th_flags and th_x2. > > See, for example, > > > https://cgit.FreeBSD.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8 > < > https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8 > > > >> for userspace they do not add any value except additional namespace > pollution. > >> They should be hidden under #ifdef _KERNEL. > > That might be possible. A kernel build with this completes. Haven't > checked a > > buildlworld. Will report when its done. > Thinking about it: since we expose the TCP flags to the world, we should > also expose the accessors related to it. > Yea. __inline is the way to go. I should add this test to the includes test we already run at buildworld time... Warner Best regards > Michael > > > > Best regards > > Michael > >> > >>> -Dimitry > >>> > >>>> On 29 Dec 2023, at 13:30, Nuno Teixeira <eduardo@freebsd.org> wrote: > >>>> > >>>> (...) > >>>> -ansi == Same as -std=c89 > >>>> > >>>> So it seems correct to remove it when -std=c99 is used. > >>>> > >>>> Nuno Teixeira <eduardo@freebsd.org> escreveu no dia sexta, > 29/12/2023 à(s) 12:03: > >>>> > >>>> > >>>> > >>>> I think we have two options: > >>>> 1. Build the ports with a C version of at least C99. > >>>> > >>>> - Adding USE_CSTD=c99 > >>>> - Removing -ansi: > >>>> --- configure.orig 2023-12-29 11:54:11 UTC > >>>> +++ configure > >>>> - CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall" > >>>> + CFLAGS="$CFLAGS $(DSO_CFLAGS) -Wall" > >>>> > >>>> Fix build. > >>>> > >>>> Notes: > >>>> > >>>> Adding USE_CSTD=c99 doesn't fix build by itself like we seen on some > ports that were fixed by it. > >>>> > >>>> Something have changed from current 1500007 to 1500008. > >>>> > >>>> 2. Remove the inline from tcp_[gs]et_flags(). > >>>> > >>>> Best regards > >>>> Michael > >>>>> -- > >>>>> Nuno Teixeira > >>>>> FreeBSD Committer (ports) > >>>> > >>>> > >>>> > >>>> -- > >>>> Nuno Teixeira > >>>> FreeBSD Committer (ports) > >>>> > >>>> > >>>> -- > >>>> Nuno Teixeira > >>>> FreeBSD Committer (ports) > >>> > >>> > > > > > > > [-- Attachment #2 --] <div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 29, 2023, 6:52 AM <<a href="mailto:tuexen@freebsd.org">tuexen@freebsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br> <br> > On Dec 29, 2023, at 14:43, <a href="mailto:tuexen@freebsd.org" target="_blank" rel="noreferrer">tuexen@freebsd.org</a> wrote:<br> > <br> >> On Dec 29, 2023, at 14:07, Konstantin Belousov <<a href="mailto:kostikbel@gmail.com" target="_blank" rel="noreferrer">kostikbel@gmail.com</a>> wrote:<br> >> <br> >> On Fri, Dec 29, 2023 at 01:50:34PM +0100, Dimitry Andric wrote:<br> >>> The problem is really that our kernel headers (those under sys/) require C99. The only thing that <a href="https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8" rel="noreferrer noreferrer" target="_blank">https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8</a> did was move two static inline functions from sys/netinet/tcp_var.h to sys/netinet/tcp.h, and it looks like the former header is never directly included by ports. The latter is, so those ports should be switched to C99, or the sys/netinet/tcp.h header should be fixed to use __inline instead.<br> >>> <br> >> netinet/tcp.h is required by POSIX, and as far as we support applications<br> >> using C89, it must stay C89 compatible.<br> >> <br> >> But why userspace would need these newish accessors at all? IMO at least<br> > TCP is now using flags that are not contained in the th_flags field anymore,<br> > but also use the th_x2 field.<br> > <br> > People were assuming that all flags are in th_flags and th_x2 is not used and<br> > used it for internal processing. This was causing problems.<br> > <br> > Using the accessor functions hides the split between th_flags and th_x2.<br> > See, for example,<br> > <a href="https://cgit.FreeBSD.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8" rel="noreferrer noreferrer" target="_blank">https://cgit.FreeBSD.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8</a> <<a href="https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8" rel="noreferrer noreferrer" target="_blank">https://cgit.freebsd.org/src/commit/?id=a8b70cf26030d68631200619bd1b0ad35b34b6b8</a>><br> >> for userspace they do not add any value except additional namespace pollution.<br> >> They should be hidden under #ifdef _KERNEL.<br> > That might be possible. A kernel build with this completes. Haven't checked a<br> > buildlworld. Will report when its done.<br> Thinking about it: since we expose the TCP flags to the world, we should<br> also expose the accessors related to it.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Yea. __inline is the way to go.</div><div dir="auto"><br></div><div dir="auto">I should add this test to the includes test we already run at buildworld time...</div><div dir="auto"><br></div><div dir="auto">Warner</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Best regards<br> Michael<br> > <br> > Best regards<br> > Michael<br> >> <br> >>> -Dimitry<br> >>> <br> >>>> On 29 Dec 2023, at 13:30, Nuno Teixeira <<a href="mailto:eduardo@freebsd.org" target="_blank" rel="noreferrer">eduardo@freebsd.org</a>> wrote:<br> >>>> <br> >>>> (...)<br> >>>> -ansi == Same as -std=c89<br> >>>> <br> >>>> So it seems correct to remove it when -std=c99 is used.<br> >>>> <br> >>>> Nuno Teixeira <<a href="mailto:eduardo@freebsd.org" target="_blank" rel="noreferrer">eduardo@freebsd.org</a>> escreveu no dia sexta, 29/12/2023 à(s) 12:03:<br> >>>> <br> >>>> <br> >>>> <br> >>>> I think we have two options:<br> >>>> 1. Build the ports with a C version of at least C99.<br> >>>> <br> >>>> - Adding USE_CSTD=c99<br> >>>> - Removing -ansi:<br> >>>> --- configure.orig 2023-12-29 11:54:11 UTC<br> >>>> +++ configure<br> >>>> - CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"<br> >>>> + CFLAGS="$CFLAGS $(DSO_CFLAGS) -Wall"<br> >>>> <br> >>>> Fix build.<br> >>>> <br> >>>> Notes:<br> >>>> <br> >>>> Adding USE_CSTD=c99 doesn't fix build by itself like we seen on some ports that were fixed by it.<br> >>>> <br> >>>> Something have changed from current 1500007 to 1500008.<br> >>>> <br> >>>> 2. Remove the inline from tcp_[gs]et_flags().<br> >>>> <br> >>>> Best regards<br> >>>> Michael<br> >>>>> -- <br> >>>>> Nuno Teixeira<br> >>>>> FreeBSD Committer (ports)<br> >>>> <br> >>>> <br> >>>> <br> >>>> -- <br> >>>> Nuno Teixeira<br> >>>> FreeBSD Committer (ports)<br> >>>> <br> >>>> <br> >>>> -- <br> >>>> Nuno Teixeira<br> >>>> FreeBSD Committer (ports)<br> >>> <br> >>> <br> > <br> > <br> <br> <br> </blockquote></div></div></div>help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfoPrsQkUekEqpVdf8saXkWq2DOkM57nHEm1dGJyHbM02w>
