at 16.09-beta 71 lines 2.0 kB view raw
1{ stdenv, fetchurl, perl, cross ? null }: 2 3assert cross == null -> stdenv.isLinux; 4 5let 6 7 version = "4.4.10"; 8 9 kernelHeadersBaseConfig = 10 if cross == null 11 then stdenv.platform.kernelHeadersBaseConfig 12 else cross.platform.kernelHeadersBaseConfig; 13 14in 15 16stdenv.mkDerivation { 17 name = "linux-headers-${version}"; 18 19 src = fetchurl { 20 url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; 21 sha256 = "1kpjvvd9q9wwr3314q5ymvxii4dv2d27295bzly225wlc552xhja"; 22 }; 23 24 targetConfig = if cross != null then cross.config else null; 25 26 platform = 27 if cross != null then cross.platform.kernelArch else 28 if stdenv.system == "i686-linux" then "i386" else 29 if stdenv.system == "x86_64-linux" then "x86_64" else 30 if stdenv.system == "powerpc-linux" then "powerpc" else 31 if stdenv.isArm then "arm" else 32 if stdenv.platform ? kernelArch then stdenv.platform.kernelArch else 33 abort "don't know what the kernel include directory is called for this platform"; 34 35 buildInputs = [perl]; 36 37 extraIncludeDirs = 38 if cross != null then 39 (if cross.arch == "powerpc" then ["ppc"] else []) 40 else if stdenv.system == "powerpc-linux" then ["ppc"] else []; 41 42 buildPhase = '' 43 if test -n "$targetConfig"; then 44 export ARCH=$platform 45 fi 46 make ${kernelHeadersBaseConfig} SHELL=bash 47 make mrproper headers_check SHELL=bash 48 ''; 49 50 installPhase = '' 51 make INSTALL_HDR_PATH=$out headers_install 52 53 # Some builds (e.g. KVM) want a kernel.release. 54 mkdir -p $out/include/config 55 echo "${version}-default" > $out/include/config/kernel.release 56 ''; 57 58 # !!! hacky 59 fixupPhase = '' 60 ln -s asm $out/include/asm-$platform 61 if test "$platform" = "i386" -o "$platform" = "x86_64"; then 62 ln -s asm $out/include/asm-x86 63 fi 64 ''; 65 66 meta = with stdenv.lib; { 67 description = "Header files and scripts for Linux kernel"; 68 license = licenses.gpl2; 69 platforms = platforms.linux; 70 }; 71}