summary refs log tree commit diff
path: root/pkgs/os-specific/linux
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2017-03-23 03:03:37 +0300
committerTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>2017-04-09 22:46:07 +0300
commitc0e77dba0e1c16e6ddae4edfd073804e3ab7b30c (patch)
tree99fd2ed4e9ac12a842ef04f72fafba3ef706652d /pkgs/os-specific/linux
parent1b94c30beb287c261077531ca7097f5ebae44f66 (diff)
downloadnixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar.gz
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar.bz2
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar.lz
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar.xz
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.tar.zst
nixlib-c0e77dba0e1c16e6ddae4edfd073804e3ab7b30c.zip
linux: add kernelPreferBuiltin platform option
This allows to use kernelAutoModules but still compile in any options that are set so in template config.
It's helpful for ARM and maybe other platforms where defaul configurations are useful because they compile in
modules that we and udev cannot autodetect now.
Diffstat (limited to 'pkgs/os-specific/linux')
-rw-r--r--pkgs/os-specific/linux/kernel/generate-config.pl3
-rw-r--r--pkgs/os-specific/linux/kernel/generic.nix3
2 files changed, 4 insertions, 2 deletions
diff --git a/pkgs/os-specific/linux/kernel/generate-config.pl b/pkgs/os-specific/linux/kernel/generate-config.pl
index 5574cc937af7..5bce3af94293 100644
--- a/pkgs/os-specific/linux/kernel/generate-config.pl
+++ b/pkgs/os-specific/linux/kernel/generate-config.pl
@@ -17,6 +17,7 @@ my $wd = getcwd;
 
 my $debug = $ENV{'DEBUG'};
 my $autoModules = $ENV{'AUTO_MODULES'};
+my $preferBuiltin = $ENV{'PREFER_BUILTIN'};
     
 $SIG{PIPE} = 'IGNORE';
 
@@ -73,7 +74,7 @@ sub runConfig {
                 my $question = $1; my $name = $2; my $alts = $3;
                 my $answer = "";
                 # Build everything as a module if possible.
-                $answer = "m" if $autoModules && $alts =~ /\/m/;
+                $answer = "m" if $autoModules && $alts =~ /\/m/ && !($preferBuiltin && $alts =~ /Y/);
                 $answer = $answers{$name} if defined $answers{$name};
                 print STDERR "QUESTION: $question, NAME: $name, ALTS: $alts, ANSWER: $answer\n" if $debug;
                 print OUT "$answer\n";
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index af14434b08f2..16b35e9aa3e2 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -55,6 +55,7 @@ let
     kernelBaseConfig = stdenv.platform.kernelBaseConfig;
     kernelTarget = stdenv.platform.kernelTarget;
     autoModules = stdenv.platform.kernelAutoModules;
+    preferBuiltin = stdenv.platform.kernelPreferBuiltin or false;
     arch = stdenv.platform.kernelArch;
 
     crossAttrs = let
@@ -92,7 +93,7 @@ let
       echo "generating kernel configuration..."
       echo "$kernelConfig" > kernel-config
       DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config AUTO_MODULES=$autoModules \
-           SRC=../$sourceRoot perl -w $generateConfig
+           PREFER_BUILTIN=$preferBuiltin SRC=../$sourceRoot perl -w $generateConfig
     '';
 
     installPhase = "mv .config $out";