Subject: Re: Kernel header changes break glibc build

From: Thomas Graf <[email-masked]>
Date: Wed, 6 Dec 2006 15:31:46 +0100

* Jakub Jelinek <[email-masked]> 2006-12-06 15:18
> There are the kernel's own headers and kernel ABI headers for userland use.
> Until recently the latter has been maintained by various distributions
> and manually occassionally updated to sync a little bit with kernel ABI
> additions (new syscalls, etc.)., but now, thanks to David, these are
> generated from kernel's own headers.  If the macros were part of
> such ABI

Macros can't possibly be part of an ABI :-) You probably mean API.

> (I don't think these macros were meant to be #ifdef __KERNEL__
> and just by omission exported to userland), then if you change
> the kernel headers (which of course you can do, that's kernel private
> headers), then you IMNSHO should also add magic to make headers_install
> to keep the kernel ABI headers for userland headers stable.

At the time they were added they were meant to be exported but netlink
has evolved and we now have a type safe API. Guess what, I'm going to
remove more bits of the old interface because they are no longer needed.

> Which in this case would mean if you decide rtnetlink.h shouldn't include
> the newly added if_addr.h that you add rules for generating the userland
> rtnetlink.h such that it will include linux/if_addr.h and define the
> macros you intentionally omitted.

Sure, moving these bits to some compat header which gets automatically
included by make install_headers instead of removing them sounds
like a good compromise, it just has to be clear that they are deprecated
and not supposed to be used by new code.