From 56e0943b0855c7b0501f84d4ce43e083b9d13b27 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 8 Jan 2018 16:13:28 +0300 Subject: makeModulesClosure: support firmware Link it in stage 1. --- pkgs/build-support/kernel/modules-closure.nix | 4 ++-- pkgs/build-support/kernel/modules-closure.sh | 9 +++++++++ pkgs/build-support/vm/default.nix | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) (limited to 'pkgs/build-support') diff --git a/pkgs/build-support/kernel/modules-closure.nix b/pkgs/build-support/kernel/modules-closure.nix index 9940e611124c9..a527770adcd7b 100644 --- a/pkgs/build-support/kernel/modules-closure.nix +++ b/pkgs/build-support/kernel/modules-closure.nix @@ -3,13 +3,13 @@ # the modules identified by `rootModules', plus their dependencies. # Also generate an appropriate modules.dep. -{ stdenvNoCC, kernel, nukeReferences, rootModules +{ stdenvNoCC, kernel, firmware, nukeReferences, rootModules , kmod, allowMissing ? false }: stdenvNoCC.mkDerivation { name = kernel.name + "-shrunk"; builder = ./modules-closure.sh; buildInputs = [ nukeReferences kmod ]; - inherit kernel rootModules allowMissing; + inherit kernel firmware rootModules allowMissing; allowedReferences = ["out"]; } diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh index 8a31c760da07a..8287c1672d062 100644 --- a/pkgs/build-support/kernel/modules-closure.sh +++ b/pkgs/build-support/kernel/modules-closure.sh @@ -33,4 +33,13 @@ for module in $closure; do echo $target >> $out/insmod-list done +mkdir -p $out/lib/firmware +for module in $closure; do + for i in $(modinfo -F firmware $module); do + mkdir -p "$out/lib/firmware/$(dirname "$i")" + echo "firmware for $module: $i" + cp "$firmware/lib/firmware/$i" "$out/lib/firmware/$i" 2>/dev/null || if test -z "$allowMissing"; then exit 1; fi + done +done + depmod -b $out -a $version diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index d599f9bbb65f8..642365bdeb5cb 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -26,6 +26,7 @@ rec { modulesClosure = makeModulesClosure { inherit kernel rootModules; + firmware = kernel; }; -- cgit 1.4.1