buildLinux: allow to override arch/modules/builtin

- Easy override of autoModules and preferBuiltin and kernelArch parameters (currently living in `hostSystem` set).
This commit is contained in:
Matthieu Coudron 2018-03-08 12:47:06 +09:00
parent 600e977898
commit 3ccc65a36c

View file

@ -33,6 +33,12 @@
hostPlatform != stdenv.buildPlatform hostPlatform != stdenv.buildPlatform
, extraMeta ? {} , extraMeta ? {}
, hostPlatform , hostPlatform
# easy overrides to hostPlatform.platform members
, autoModules ? hostPlatform.platform.kernelAutoModules
, preferBuiltin ? hostPlatform.platform.kernelPreferBuiltin or false
, kernelArch ? hostPlatform.platform.kernelArch
, ... , ...
} @ args: } @ args:
@ -65,7 +71,7 @@ let
in lib.concatStringsSep "\n" ([baseConfig] ++ configFromPatches); in lib.concatStringsSep "\n" ([baseConfig] ++ configFromPatches);
configfile = stdenv.mkDerivation { configfile = stdenv.mkDerivation {
inherit ignoreConfigErrors; inherit ignoreConfigErrors autoModules preferBuiltin kernelArch;
name = "linux-config-${version}"; name = "linux-config-${version}";
generateConfig = ./generate-config.pl; generateConfig = ./generate-config.pl;
@ -81,9 +87,6 @@ let
kernelBaseConfig = hostPlatform.platform.kernelBaseConfig; kernelBaseConfig = hostPlatform.platform.kernelBaseConfig;
# e.g. "bzImage" # e.g. "bzImage"
kernelTarget = hostPlatform.platform.kernelTarget; kernelTarget = hostPlatform.platform.kernelTarget;
autoModules = hostPlatform.platform.kernelAutoModules;
preferBuiltin = hostPlatform.platform.kernelPreferBuiltin or false;
arch = hostPlatform.platform.kernelArch;
prePatch = kernel.prePatch + '' prePatch = kernel.prePatch + ''
# Patch kconfig to print "###" after every question so that # Patch kconfig to print "###" after every question so that
@ -97,12 +100,12 @@ let
export buildRoot="''${buildRoot:-build}" export buildRoot="''${buildRoot:-build}"
# Get a basic config file for later refinement with $generateConfig. # Get a basic config file for later refinement with $generateConfig.
make HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc -C . O="$buildRoot" $kernelBaseConfig ARCH=$arch make HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc -C . O="$buildRoot" $kernelBaseConfig ARCH=$kernelArch
# Create the config file. # Create the config file.
echo "generating kernel configuration..." echo "generating kernel configuration..."
echo "$kernelConfig" > "$buildRoot/kernel-config" echo "$kernelConfig" > "$buildRoot/kernel-config"
DEBUG=1 ARCH=$arch KERNEL_CONFIG="$buildRoot/kernel-config" AUTO_MODULES=$autoModules \ DEBUG=1 ARCH=$kernelArch KERNEL_CONFIG="$buildRoot/kernel-config" AUTO_MODULES=$autoModules \
PREFER_BUILTIN=$preferBuiltin BUILD_ROOT="$buildRoot" SRC=. perl -w $generateConfig PREFER_BUILTIN=$preferBuiltin BUILD_ROOT="$buildRoot" SRC=. perl -w $generateConfig
''; '';