summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Guibert <david.guibert@gmail.com>2017-12-28 09:11:36 +0100
committerDomen Kožar <domen@dev.si>2018-04-07 12:19:44 +0100
commitd64de62fcda6c18d1bcac133d033ab1150f4495c (patch)
treef9108adb0c4437239277d5c4d3a27db5dea2395d
parentlinux: Add 4.14 (diff)
downloadnixpkgs-d64de62fcda6c18d1bcac133d033ab1150f4495c.tar.gz
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]
-rw-r--r--pkgs/applications/virtualization/virtualbox/guest-additions/default.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix9
-rw-r--r--pkgs/os-specific/linux/spl/default.nix4
-rw-r--r--pkgs/os-specific/linux/sysdig/default.nix2
-rw-r--r--pkgs/os-specific/linux/tp_smapi/default.nix2
-rw-r--r--pkgs/os-specific/linux/virtualbox/default.nix2
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix2
7 files changed, 15 insertions, 8 deletions
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
index ed485ae48ef1..5d9bc10d14b1 100644
--- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
- buildInputs = [ patchelf cdrkit makeWrapper dbus ];
+ buildInputs = [ patchelf cdrkit makeWrapper dbus ] ++ kernel.moduleBuildDependencies;
installPhase = ''
mkdir -p $out
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index 83020ad35a2b..71a2754bfd05 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -1,4 +1,4 @@
-{ stdenv, runCommand, nettools, bc, perl, kmod, openssl, writeTextFile, ubootChooser }:
+{ stdenv, runCommand, nettools, bc, perl, kmod, openssl, writeTextFile, ubootChooser, libelf }:
let
readConfig = configfile: import (runCommand "config.nix" {} ''
@@ -40,6 +40,9 @@ let
inherit (stdenv.lib)
hasAttr getAttr optional optionalString optionalAttrs maintainers platforms;
+ # Dependencies that are required to build kernel modules
+ moduleBuildDependencies = stdenv.lib.optional (stdenv.lib.versionAtLeast version "4.14") libelf;
+
installkernel = writeTextFile { name = "installkernel"; executable=true; text = ''
#!${stdenv.shell} -e
mkdir -p $4
@@ -76,7 +79,7 @@ let
(isModular || (config.isDisabled "FIRMWARE_IN_KERNEL"));
in (optionalAttrs isModular { outputs = [ "out" "dev" ]; }) // {
passthru = {
- inherit version modDirVersion config kernelPatches configfile;
+ inherit version modDirVersion config kernelPatches configfile moduleBuildDependencies;
};
inherit src;
@@ -217,7 +220,7 @@ stdenv.mkDerivation ((drvAttrs config stdenv.platform (kernelPatches ++ nativeKe
enableParallelBuilding = true;
- nativeBuildInputs = [ perl bc nettools openssl ] ++ optional (stdenv.platform.uboot != null)
+ nativeBuildInputs = [ perl bc nettools openssl libelf ] ++ optional (stdenv.platform.uboot != null)
(ubootChooser stdenv.platform.uboot);
hardeningDisable = [ "bindnow" "format" "fortify" "stackprotector" "pic" ];
diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix
index d0fa82c5f7a3..48901fce0c41 100644
--- a/pkgs/os-specific/linux/spl/default.nix
+++ b/pkgs/os-specific/linux/spl/default.nix
@@ -20,9 +20,7 @@ let
inherit sha256;
};
- patches = [ ./const.patch ./install_prefix.patch ];
-
- nativeBuildInputs = [ autoreconfHook ];
+ nativeBuildInputs = [ autoreconfHook ] ++ optional (kernel != null) kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];
diff --git a/pkgs/os-specific/linux/sysdig/default.nix b/pkgs/os-specific/linux/sysdig/default.nix
index 7e337463ac1f..6ecfbf5d6f11 100644
--- a/pkgs/os-specific/linux/sysdig/default.nix
+++ b/pkgs/os-specific/linux/sysdig/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
buildInputs = [
cmake zlib luajit ncurses perl jsoncpp libb64 openssl curl jq gcc
- ];
+ ] ++ optional (kernel != null) kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];
diff --git a/pkgs/os-specific/linux/tp_smapi/default.nix b/pkgs/os-specific/linux/tp_smapi/default.nix
index 765305d0fdaf..df1ae3ad464b 100644
--- a/pkgs/os-specific/linux/tp_smapi/default.nix
+++ b/pkgs/os-specific/linux/tp_smapi/default.nix
@@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
name = "tp-smapi-${version}";
};
+ nativeBuildInputs = kernel.moduleBuildDependencies;
+
hardeningDisable = [ "pic" ];
makeFlags = [
diff --git a/pkgs/os-specific/linux/virtualbox/default.nix b/pkgs/os-specific/linux/virtualbox/default.nix
index 593c4400b7f4..de0f02fd10f2 100644
--- a/pkgs/os-specific/linux/virtualbox/default.nix
+++ b/pkgs/os-specific/linux/virtualbox/default.nix
@@ -7,6 +7,8 @@ stdenv.mkDerivation {
"fortify" "pic" "stackprotector"
];
+ nativeBuildInputs = kernel.moduleBuildDependencies;
+
makeFlags = [
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index ea1b4d962b1d..b61fbf67e589 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -30,6 +30,8 @@ let
patches = extraPatches;
+ nativeBuildInputs = [ autoreconfHook nukeReferences ]
+ ++ optional (kernel != null) kernel.moduleBuildDependencies;
buildInputs = [ autoreconfHook nukeReferences ]
++ optionals buildKernel [ spl ]
++ optionals buildUser [ zlib libuuid python attr ];