nixpkgs/pkgs/os-specific/linux/virtualbox/default.nix
David Guibert 1e77d0b975 kernel 4.14 require libelf to compile modules.
[...]
make modules -C /nix/store/h1vzl6bq4wif3m8dd1bw2p3fv4shjg3n-linux-4.14.9-dev/lib/modules/4.14.9/build EXTRA_CFLAGS=-Werror-implicit-function-declaration M=/tmp/nix-build-spl-kernel-2017-11-16-4.14.9.drv-0/source/build
/nix/store/h1vzl6bq4wif3m8dd1bw2p3fv4shjg3n-linux-4.14.9-dev/lib/modules/4.14.9/source/Makefile:939: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel". Stop.

This patch introduces kernel.moduleBuildDependencies to avoid the logic "stdenv.lib.optional (stdenv.lib.versionAtLeast kernel.version "4.14") libelf" in multiple places.

[dezgeg did some minor tweaks on top]
2017-12-29 23:08:17 +02:00

34 lines
839 B
Nix

{ stdenv, virtualbox, kernel, strace }:
stdenv.mkDerivation {
name = "virtualbox-modules-${virtualbox.version}-${kernel.version}";
src = virtualbox.modsrc;
hardeningDisable = [
"fortify" "pic" "stackprotector"
];
nativeBuildInputs = kernel.moduleBuildDependencies;
patches = [
./fix_kerndir.patch
./fix_kbuild.patch
];
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
INCLUDE_BASE = "${virtualbox.modsrc}";
makeFlags = [
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
];
preBuild = "makeFlagsArray+=(\"M=$(pwd)\")";
buildFlags = [ "modules" ];
installTargets = [ "modules_install" ];
enableParallelBuilding = true;
meta = virtualbox.meta // {
description = virtualbox.meta.description + " (kernel modules)";
};
}