qemu: switch to building wireless as kernel modules
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
This commit is contained in:
80
pkgs/kernel-backport/default.nix
Normal file
80
pkgs/kernel-backport/default.nix
Normal file
@@ -0,0 +1,80 @@
|
||||
{ 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
|
||||
'';
|
||||
}
|
Reference in New Issue
Block a user