default.nix (1533B)
1 { 2 stdenv 3 , buildPackages 4 , kernelSrc ? null 5 , modulesupport ? null 6 , targets ? [] 7 , kconfig ? {} 8 , openssl 9 , writeText 10 , lib 11 }: 12 let 13 writeConfig = import ../kernel/write-kconfig.nix { inherit lib writeText; }; 14 in stdenv.mkDerivation { 15 name = "kernel-modules"; 16 17 nativeBuildInputs = [buildPackages.stdenv.cc] ++ 18 (with buildPackages.pkgs; [ 19 bc bison flex 20 openssl 21 cpio 22 kmod 23 ]); 24 CC = "${stdenv.cc.bintools.targetPrefix}gcc"; 25 HOST_EXTRACFLAGS = with buildPackages.pkgs; 26 "-I${buildPackages.openssl.dev}/include -L${buildPackages.openssl.out}/lib"; 27 CROSS_COMPILE = stdenv.cc.bintools.targetPrefix; 28 ARCH = "mips"; # kernel uses "mips" here for both mips and mipsel 29 KBUILD_BUILD_HOST = "liminix.builder"; 30 31 buildPhase = '' 32 cat ${writeConfig "kconfig" kconfig} > .more-config 33 cat .more-config >> .config 34 make olddefconfig 35 for v in $(cat .more-config) ; do grep $v .config || (echo Missing $v && exit 1);done 36 # grep =m .config 37 make modules 38 ''; 39 src = modulesupport; 40 installPhase = '' 41 mkdir -p $out/lib/modules/0.0 42 find . -name \*.ko | cpio --verbose --make-directories -p $out/lib/modules/0.0 43 depmod -b $out -v 0.0 44 touch $out/load.sh 45 for i in ${lib.concatStringsSep " " targets}; do 46 modprobe -S 0.0 -d $out --show-depends $i >> $out/load.sh 47 done 48 tac < $out/load.sh | sed 's/^insmod/rmmod/g' > $out/unload.sh 49 ''; 50 }