nixpkgs/pkgs/os-specific/linux/kernel-headers/3.3.5.nix
Eelco Dolstra ab53df106f Get the 3.3.5 kernel headers to build in the stdenv bootstrap
We don't have xz early in the bootstrap, so use the bz2 tarball.  Also
add SHELL=bash to get it to build.
2012-09-26 14:14:07 -04:00

63 lines
1.8 KiB
Nix

{ stdenv, fetchurl, perl, cross ? null }:
assert cross == null -> stdenv.isLinux;
let
version = "3.3.5";
kernelHeadersBaseConfig = if cross == null then
stdenv.platform.kernelHeadersBaseConfig
else
cross.platform.kernelHeadersBaseConfig;
in
stdenv.mkDerivation {
name = "linux-headers-${version}";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.bz2";
sha256 = "0144qc3ginldm2i6sy8g55y4k1yw3dy3dnl1hiv7v7rlqnljx5d5";
};
targetConfig = if (cross != null) then cross.config else null;
platform =
if cross != null then cross.platform.kernelArch else
if stdenv.system == "i686-linux" then "i386" else
if stdenv.system == "x86_64-linux" then "x86_64" else
if stdenv.system == "powerpc-linux" then "powerpc" else
if stdenv.isArm then "arm" else
if stdenv.platform ? kernelArch then stdenv.platform.kernelArch else
abort "don't know what the kernel include directory is called for this platform";
buildInputs = [perl];
extraIncludeDirs =
if cross != null then
(if cross.arch == "powerpc" then ["ppc"] else [])
else if stdenv.system == "powerpc-linux" then ["ppc"] else [];
buildPhase = ''
if test -n "$targetConfig"; then
export ARCH=$platform
fi
make ${kernelHeadersBaseConfig} SHELL=bash
make mrproper headers_check SHELL=bash
'';
installPhase = ''
make INSTALL_HDR_PATH=$out headers_install
# Some builds (e.g. KVM) want a kernel.release.
mkdir -p $out/include/config
echo "${version}-default" > $out/include/config/kernel.release
'';
# !!! hacky
fixupPhase = ''
ln -s asm $out/include/asm-$platform
if test "$platform" = "i386" -o "$platform" = "x86_64"; then
ln -s asm $out/include/asm-x86
fi
'';
}