Re: [PATCH net-next v3 11/11] wireguard: netlink: generate netlink code
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
Date: 2025-11-20 00:54:56
Also in:
lkml
On Tue, Nov 18, 2025 at 05:00:45PM -0800, Jakub Kicinski wrote:
On Tue, 18 Nov 2025 23:51:37 +0100 Jason A. Donenfeld wrote:quoted
I mean, there is *tons* of generated code in the kernel. This is how it works. And you *want the output to change when the tool changes*. That's literally the point. It would be like if you wanted to check in all the .o files, in case the compiler started generating different output, or if you wanted the objtool output or anything else to be checked in. And sheerly from a git perspective, it seems outrageous to touch a zillion files every time the ynl code changes. Rather, the fact that it's generated on the fly ensures that the ynl generator stays correctly implemented. It's the best way to keep that code from rotting.CI checks validate that the files are up to date. There has been no churn to the kernel side of the generated code. Let's be practical.
Okay, it sounds like neither of you want to do this. Darn. I really hate
having generated artifacts laying around that can be created efficiently
at compile time. But okay, so it goes. I guess we'll do that.
I would like to ask two things, then, which may or may not be possible:
1) Can we put this in drivers/net/wireguard/generated/netlink.{c.h}
And then in the Makefile, do `wireguard-y += netlink.o generated/netlink.o`
on one line like that. I prefer this to keeping it in the same
directory with the awkward -gen suffix.
2) In the header of each generated file, automatically write out the
command that was used to generate it. Here's an example of this good
habit from Go: https://github.com/golang/go/blob/master/src/syscall/zsyscall_linux_amd64.go
Jason