On Thu, Sep 25, 2025 at 12:17:27PM +0200, Morten Brørup wrote: > > From: Bruce Richardson [mailto:[email protected]] > > Sent: Thursday, 25 September 2025 11.32 > > > > On Thu, Sep 25, 2025 at 10:42:47AM +0200, David Marchand wrote: > > > Hello Bruce, > > > > > > On Thu, 25 Sept 2025 at 10:00, Bruce Richardson > > > <[email protected]> wrote: > > > > > > > > On Wed, Sep 24, 2025 at 07:25:34PM +0200, David Marchand wrote: > > > > > A problem with the current headers check is that it relies on > > > > > meson dependencies objects that come with their > > include_directories > > > > > directives, and all of those point at the library / driver > > sources. > > > > > > > > > > This means that we won't detect a public header including a > > private > > > > > (as in, not exported) header, or a driver only header. > > > > > > > > > > To address this issue, a staging directory is added and every > > header > > > > > is copied to it. > > > > > > > > > > Drivers and library headers are staged to two different > > directories > > > > > and the check is updated accordingly. > > > > > > > > > > Signed-off-by: David Marchand <[email protected]> > > > > > > > > In general looks ok to me. > > > > One small comment though - can we not have "staging" as a top-level > > > > directory, but instead hide it inside the buildtools directory, or > > even the > > > > chkincs directory? I dislike having too many subdirectories > > directly off > > > > the root of the project, especially ones purely for internal > > tooling. > > > > > > Well, at first I was trying to change the whole build process iow > > rely > > > only on the staging directory and remove all the include_directories: > > > directives from the declare_dependency() objects. > > > Libraries and apps were ok, but there were a *lot* of complications > > > with drivers (what a *huge mess*, especially for NXP drivers with > > > "compat.h" includes, and Marvell drivers to a smaller extent). > > > I may retry in the future with some AI tool that will brute force > > this :-). > > > > > > For now, I gave up but did not reconsider the location of the staging > > part. > > > Moving to buildtools is indeed saner as it is only for the check now, > > > and I can also make this staging stuff dependent on the > > check_includes > > > option now. > > > > > > > I wonder should we just consider making chkincs an install-time job > > rather > > than a build-time one? We could look to build chkincs using a custom > > install script (meson.add_install_script) after the header copies are > > already done for us. That should cut down on the complexity within the > > build system, but it does mean an additional install step to a > > temporary > > directory to get it to run. However, for use in our CI I don't see why > > having an install step with DEST_DIR set to /tmp shouldn't be feasible. > > Such a temporary directory should be local to the developer's working > directory. > (The CI might have different needs; that's not what I'm commenting.) > > Furthermore, test building for upstreaming should remain simple. I use > something like: > meson setup -Dplatform=generic -Dcheck_includes=true build > ninja -C build > Build testing for upstreaming should really be done using test-meson-builds.sh to test a variety of scenarios and cross-compilation - including 32-bit - if possible. That script also does a test install, so running the check_includes from the install step would be automatically covered there.
/Bruce

