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"; 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 = '' installPhase = ''
mkdir -p $out mkdir -p $out

View File

@ -49,6 +49,9 @@ let
inherit (stdenv.lib) inherit (stdenv.lib)
hasAttr getAttr optional optionalString optionalAttrs maintainers platforms; 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 = '' installkernel = writeTextFile { name = "installkernel"; executable=true; text = ''
#!${stdenv.shell} -e #!${stdenv.shell} -e
mkdir -p $4 mkdir -p $4
@ -85,7 +88,7 @@ let
(isModular || (config.isDisabled "FIRMWARE_IN_KERNEL")); (isModular || (config.isDisabled "FIRMWARE_IN_KERNEL"));
in (optionalAttrs isModular { outputs = [ "out" "dev" ]; }) // { in (optionalAttrs isModular { outputs = [ "out" "dev" ]; }) // {
passthru = { passthru = {
inherit version modDirVersion config kernelPatches configfile; inherit version modDirVersion config kernelPatches configfile moduleBuildDependencies;
}; };
inherit src; inherit src;

View File

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

View File

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

View File

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

View File

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

View File

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