Re: WITHOUT_PF breaks buildworld

From: Kristof Provost <kp_at_FreeBSD.org>
Date: Wed, 22 Dec 2021 15:27:52 UTC
On 22 Dec 2021, at 8:21, Konrad Sewiłło-Jopek wrote:
> Hi,
>
> I think the reason is somewhere in tools/build/test-includes:
>
> --- net/if_pfsync.o ---
> In file included from net/if_pfsync.c:1:
> In file included from
> [...]freebsd/arm64.aarch64/tmp/usr/include/net/if_pfsync.h:56:
> [...]freebsd/arm64.aarch64/tmp/usr/include/net/pfvar.h:65:10: fatal error:
> 'netpfil/pf/pf.h' file not found
> #include <netpfil/pf/pf.h>
>          ^~~~~~~~~~~~~~~~~
> 1 error generated.
> *** [net/if_pfsync.o] Error code 1
>
> make[3]: stopped in [...]freebsd/tools/build/test-includes
> --- net/pfvar.o ---
> In file included from net/pfvar.c:1:
> [...]freebsd/arm64.aarch64/tmp/usr/include/net/pfvar.h:65:10: fatal error:
> 'netpfil/pf/pf.h' file not found
> #include <netpfil/pf/pf.h>
>          ^~~~~~~~~~~~~~~~~
> 1 error generated.
> *** [net/pfvar.o] Error code 1
>
> make[3]: stopped in [...]freebsd/tools/build/test-includes
> 2 errors
>
> make[3]: stopped in [...]freebsd/tools/build/test-includes
> *** [test-includes] Error code 2
>
> make[2]: stopped in [...]freebsd
> 1 error
>
> Best regards,
> Konrad Sewiłło-Jopek
>
>
> niedz., 19 gru 2021 o 12:26 Gary Jennejohn <gljennjohn@gmail.com>
> napisał(a):
>
>> On Sun, 19 Dec 2021 19:05:35 +0800
>> Alastair Hogge <agh@riseup.net> wrote:
>>
>>> On Sunday, 19 December 2021 6:47:23 PM AWST Gary Jennejohn wrote:
>>>> Some recent change, probably in a .mk file, breaks builworld on HEAD
>>>> when WITHOUT_PF is enabled in src.conf.
>>>
>>> I have had to disable WITHOUT_PF since 2020-07-27, but probably earlier.
>>>
>>
>> Hmm.  I did a successful buildworld a few days ago with WITHOUT_PF
>> enabled, so it's new breakge for me at least.
>>
>> I don't enable pf in the kernel and don't need it in userland.
>>
>>>> Disabling WITHOUT_PF results in a successful buildworld.
>>>>
>>>> The reported error is that netpfil/pf/pf.h can't be found.
>>>
>>> Some ports depend on that too.
>>>
>>
This is the test-includes target, which validates that include files are self-contained (that is, you can ‘#include <$file>’ without prerequisites.
The target fails because it looks at all headers in /usr/src/sys and then tries to build them, but some of those headers (like the pf headers) include other headers that may not be getting installed because they’re disabled.

I’m not quite sure how to best fix this.

Note that it is not happening because some pf tools are still getting built. This is a validation target that fails.

We could potentially add the pf headers to BADHDRS depending on the WITHOUT_ flag, but that would mean manually maintaining badfiles.inc.
Or perhaps we should keep installing the pf headers even when WITHOUT_PF is set, but I’m not actually sure how we convince the build system to do that. Or if it’s a good idea.

Warner might have better ideas on how to fix this.

Kristof