[GIT *] make headers_install

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Linus, please pull from git://git.infradead.org/hdrinstall-2.6.git

This contains an implementation of a 'make headers_install' target for
the kernel -- based on original work by Arnd Bergmann, modifed my myself
and then cleaned up by Sam. This copies _selected_ kernel headers out to
a separate directory, passing them through sed and BSD's 'unifdef' tool
to remove parts which userspace should not see.

(The BSD 'unifdef' tool is available at least in Fedora and Debian
through their standard package management tools. I believe that Sam
intends to follow up with a patch to add our own copy of unifdef into
the kernel scripts/ directory, as soon as he's fixed the dependency
issues with that.)

This isn't a departure from our current policy that random userspace
must not poke at kernel private headers. It's just an attempt to impose
some control over those places where we have to accept that people _do_
use the kernel's headers -- when building system libraries and tools,
and when building compilers.

Currently, the compiler-build scripts just use 'cp -a', while the
distributions tend to do their own thing to make it _slightly_ saner
than that, although it's a lot of work to do so. The result is wildly
inconsistent and often exposes things which we really don't want
userspace to have copies of.

By adding a 'make headers_install' target to the kernel, we regulate
those people who really do have to use kernel headers, and we can ensure
that we have a _consistent_ set of headers across all distributions,
which contains only what we _need_ to expose; ioctl definitions, etc.

An additional benefit is that comparing the results of 'make
headers_install' from one kernel release to the next allows us to spot
kernel<->user ABI changes in isolation and give them the extra review
that they deserve. I've already caught and fixed one potential problem
with 32-bit userspace on a 64-bit kernel this way.

The result of this export is already being used in the Fedora Core 6
test releases, and other distributions are either looking at switching
over to it or have done so already.

Ignoring the new Kbuild files which just list the files to be exported
from each directory under include/, the diffstat is as follows:

 Makefile                              |   17 ++++
 scripts/Makefile.headersinst          |  158 +++++++++++++++++++++++++++++++++
 scripts/hdrcheck.sh                   |    8 ++
 49 files changed, 399 insertions(+), 0 deletions(-)

David S. Miller:
      Restrict headers exported to userspace for SPARC and SPARC64

David Woodhouse:
      Basic implementation of 'make headers_install'
      Basic implementation of 'make headers_check'
      Add generic Kbuild files for 'make headers_install'
      Add Kbuild file for PowerPC 'make headers_install'
      Add Kbuild file for x86_64 'make headers_install'
      Add Kbuild file for i386 'make headers_install'
      Add Kbuild file for S390 'make headers_install'
      Add Kbuild file for IA64 'make headers_install'
      Add Kbuild file for SPARC 'make headers_install'
      Add Kbuild file for Alpha 'make headers_install'
      Add empty Kbuild files for 'make headers_install' in remaining arches.

Jean Delvare:
      Remove <linux/i2c-id.h> and <linux/i2c-algo-ite.h> from userspace export

-- 
dwmw2

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux