From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: Peter Foley <pefoley@google.com>, passt-dev@passt.top
Subject: Re: [PATCH] Add missing includes to headers
Date: Tue, 24 Feb 2026 16:37:59 +1100 [thread overview]
Message-ID: <aZ05N9aQHR7y7rnN@zatzit> (raw)
In-Reply-To: <20260223173200.32bdaf93@elisabeth>
[-- Attachment #1: Type: text/plain, Size: 3113 bytes --]
On Mon, Feb 23, 2026 at 05:32:01PM +0100, Stefano Brivio wrote:
> On Mon, 23 Feb 2026 16:33:32 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Feb 19, 2026 at 01:44:54PM -0500, Peter Foley wrote:
> > > Support build systems like bazel that check that headers are
> > > self-contained.
> > >
> > > Signed-off-by: Peter Foley <pefoley@google.com>
> >
> > There are kind of two schools of thoughts on headers. One is that
> > every header should #include anything it relies on. The other is that
> > headers should #include nothing, and .c files should includde
> > everything they need in the right order. The advantages of the second
> > approach are that it makes it easier to keep #includes in .c files
> > minimal, and makes circular dependencies more obvious and easier to
> > dientanble.
> >
> > We've kinda sorta been using approach two in passt, but not entirely,
> > and honestly, it's not really working.
>
> I would argue it *is* pretty much working, because it builds without
> warnings against glibc and musl, with several versions of gcc and
> Clang, on a large number of distributions and architectures, which is
> what it needs to do.
Ok, let me qualify that. I mean that I frequently hit minor
irritations related to not-self-contained headers, and I'm not really
feeling the benefits of the approach.. That is to say, I don't feel
like the no-indirect-includes approach is working in the sense of
providing benefits to outweigh going the other direction.
> There are currently two warnings with (unreleased) gcc 16-ish and
> glibc, I still have to post patches for them, but they have nothing to
> do with includes.
>
> That being said, sure, it's not either approach and admittedly kind of
> arbitrary and rather messy.
Right.
> > So I'm happy to convert to the
> > former approach. However, if we're adding #includes in the headers so
> > they're self contained, then we should be able to also *remove* a
> > bunch of #includes from .c files (and other .h files) which were
> > previously only there to satisfy the indirect dependencies.
>
> Just for clarity, while I agree, this patch does *not* magically make
> that Peter's job. :)
Heh, fair enough.
> I'd say that making it build with Bazel is more useful at this stage so
> I would happily accept this patch by itself (I just need to find a
> moment to try out builds on musl and on a couple of distributions,
> first).
Also fair enough.
> The cleanup you propose can also be done independently at a later
> point, also because I'm fairly sure there are a bunch of left-over
> includes (also/mostly from myself) even before this change.
>
> Note that this kind of cleanup would also take a bit of testing that
> we currently can't automate, for example building against musl on
> Alpine or Void Linux.
>
> --
> Stefano
>
--
David Gibson (he or they) | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you, not the other way
| around.
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2026-02-24 5:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-19 17:45 Peter Foley
2026-02-21 17:57 ` Stefano Brivio
[not found] ` <CAAAKUPN=GPDp84tQAv4Kpxs-AzKR44pDkWda-AbXWaUomYN5eg@mail.gmail.com>
[not found] ` <CAAAKUPMP8goRHqk0VDn6UDWmyyPXpzs37UuCLL8x7wDp10tY6A@mail.gmail.com>
2026-02-23 17:35 ` Stefano Brivio
[not found] ` <CAAAKUPMQZetb9RYoxaUZGyp7dWm8pifmvEfyV3M4Q6+j9jw89g@mail.gmail.com>
2026-02-23 18:11 ` [PATCH v2] " Peter Foley
2026-02-23 19:05 ` [PATCH] " Stefano Brivio
[not found] ` <CAAAKUPMRYcbeTXZHX9aQtZfv4L=sBbzqSWqo-xG91F6r7f8M1w@mail.gmail.com>
2026-02-23 20:47 ` Stefano Brivio
[not found] ` <CAAAKUPPS8_7gJ1T677djyWJ8WbKSoijKsuM8J1cgLLD5HDPXgw@mail.gmail.com>
2026-02-23 23:00 ` Stefano Brivio
2026-02-24 5:43 ` David Gibson
2026-02-24 9:32 ` Stefano Brivio
[not found] ` <CAAAKUPMWQ2t5zT5-rZjvFDaEOSiA44mW9md25i58SDhE=YOMxA@mail.gmail.com>
2026-02-24 17:53 ` Stefano Brivio
[not found] ` <CAAAKUPOJhP2OvEyh6BJq8OUviv3UC-ev5ybvqprYkEVif1Carg@mail.gmail.com>
2026-02-24 20:03 ` Stefano Brivio
[not found] ` <CAAAKUPM6j6paYFMJgNpzj7RbsAzradSjpb166_epih9DN=3CnA@mail.gmail.com>
2026-02-24 21:18 ` Stefano Brivio
[not found] ` <CAAAKUPNo7z-jbFKTcMdTeVyAKz7nfwQm2sMeY30xU7KRJO5vuw@mail.gmail.com>
2026-02-24 22:49 ` Stefano Brivio
2026-02-25 23:23 ` David Gibson
2026-02-23 5:33 ` David Gibson
2026-02-23 16:32 ` Stefano Brivio
2026-02-24 5:37 ` David Gibson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZ05N9aQHR7y7rnN@zatzit \
--to=david@gibson.dropbear.id.au \
--cc=passt-dev@passt.top \
--cc=pefoley@google.com \
--cc=sbrivio@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).