 751920c8fc
			
		
	
	751920c8fc
	
	
	
		
			
			This is a hefty change * add support for kernel backports project * build wireless stack/drivers as modules from a backported kernel * create a service to load/unload the modules
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { stdenv
 | |
| , git
 | |
| , python2
 | |
| , which
 | |
| , fetchgit
 | |
| , fetchpatch
 | |
| , fetchFromGitHub
 | |
| , autoreconfHook
 | |
| , coccinelle
 | |
| }:
 | |
| let
 | |
|   donorTree = fetchFromGitHub {
 | |
|     owner = "torvalds";
 | |
|     repo = "linux";
 | |
|     rev = 	"e2c1a934fd8e4288e7a32f4088ceaccf469eb74c"; # 5.15.94
 | |
|     hash= "sha256-Jg3EgL86CseuzYMAlUG3CDWPCo8glMSIZs10l7EuhWI=";
 | |
|   };
 | |
|   backports = stdenv.mkDerivation {
 | |
|     name = "linux-backports";
 | |
|     version = "dfe0f60ca8a";
 | |
|     nativeBuildInputs = [ python2 ];
 | |
| 
 | |
|     src = fetchgit {
 | |
|       url = "https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git";
 | |
|       name = "backports";
 | |
|       rev = "dfe0f60ca8a1065e63b4db703b3bd2708ee23a0e";
 | |
|       hash = "sha256-V+unO0rCom+TZS7WuaXFrb3C1EBImmflCPuOoP+LvBY=";
 | |
|     };
 | |
|     buildPhase = ''
 | |
|       patchShebangs .
 | |
|     '';
 | |
|     installPhase = ''
 | |
|       mkdir -p $out
 | |
|       cp -a . $out
 | |
|       rm $out/patches/0073-netdevice-mtu-range.cocci
 | |
|       # fq.patch is obsoleted by kernel commit 48a54f6bc45 and no longer
 | |
|       # applies
 | |
|       # rm $out/patches/0091-fq-no-siphash_key_t/fq.patch
 | |
|       # don't know why this doesn't apply but it's only important for
 | |
|       # compiling against linux < 4.1
 | |
|       # rm $out/patches/0058-ptp_getsettime64/ptp_getsettime64.cocci
 | |
|     '';
 | |
|     patches = [
 | |
|       # (fetchpatch {
 | |
|       #   url = "https://github.com/telent/nixwrt/blob/28ff2559e811c740b0a2922f52291b335804857b/nixwrt/kernel/gentree-writable-outputs.patch";
 | |
|       #   hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
 | |
|       # })#
 | |
|       ./gentree-writable-outputs.patch
 | |
| #      ./update-usb-sg-backport-patch.patch
 | |
| #      ./backport_kfree_sensitive.patch
 | |
|     ];
 | |
|   };
 | |
| in stdenv.mkDerivation rec {
 | |
|   inherit donorTree;
 | |
|   KERNEL_VERSION = builtins.substring 0 11 donorTree.rev;
 | |
|   BACKPORTS_VERSION = backports.version;
 | |
|   name = "backported-kernel-${KERNEL_VERSION}-${BACKPORTS_VERSION}";
 | |
| 
 | |
|   # gentree uses "which" at runtime to test for the presence of git,
 | |
|   # and I don't have the patience to patch it out. There is no other
 | |
|   # reason we need either of them as build inputs.
 | |
|   depsBuildBuild = [ coccinelle ];
 | |
|   nativeBuildInputs = [ which git python2 ];
 | |
| 
 | |
|   phases = [
 | |
|     "backportFromFuture" "installPhase"
 | |
|   ];
 | |
| 
 | |
|   backportFromFuture = ''
 | |
|     echo $KERNEL_VERSION $BACKPORTS_VERSION
 | |
|     WORK=`pwd`/build
 | |
|     mkdir -p $WORK
 | |
|     cat ${backports}/copy-list > copy-list
 | |
|     echo 'include/linux/key.h' >> copy-list
 | |
|     python  ${backports}/gentree.py --verbose --clean  --copy-list copy-list ${donorTree} $WORK
 | |
|   '';
 | |
|   installPhase = ''
 | |
|     cp -a ./build/ $out
 | |
|   '';
 | |
| }
 |