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]
This commit is contained in:
David Guibert 2017-12-28 09:11:36 +01:00 committed by Tuomas Tynkkynen
parent 77cc63950a
commit 1e77d0b975
7 changed files with 13 additions and 5 deletions

View File

@ -36,7 +36,7 @@ stdenv.mkDerivation {
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
buildInputs = [ patchelf cdrkit makeWrapper dbus ];
buildInputs = [ patchelf cdrkit makeWrapper dbus ] ++ kernel.moduleBuildDependencies;
installPhase = ''
mkdir -p $out

View File

@ -49,6 +49,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
@ -85,7 +88,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;

View File

@ -25,7 +25,7 @@ let
patches = [ ./const.patch ./install_prefix.patch ];
nativeBuildInputs = [ autoreconfHook ];
nativeBuildInputs = [ autoreconfHook ] ++ optional (kernel != null) kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];

View File

@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
buildInputs = [
cmake zlib luajit ncurses perl jsoncpp libb64 openssl curl jq gcc
];
] ++ optional (kernel != null) kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];

View File

@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
name = "tp-smapi-${version}";
};
nativeBuildInputs = kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];
makeFlags = [

View File

@ -7,6 +7,8 @@ stdenv.mkDerivation {
"fortify" "pic" "stackprotector"
];
nativeBuildInputs = kernel.moduleBuildDependencies;
patches = [
./fix_kerndir.patch
./fix_kbuild.patch

View File

@ -38,7 +38,8 @@ let
patches = extraPatches;
nativeBuildInputs = [ autoreconfHook nukeReferences ];
nativeBuildInputs = [ autoreconfHook nukeReferences ]
++ optional (kernel != null) kernel.moduleBuildDependencies;
buildInputs =
optionals buildKernel [ spl ]
++ optionals buildUser [ zlib libuuid python attr ]