lib: Clean up how linux and gcc config is specified
The `platform` field is pointless nesting: it's just stuff that happens to be defined together, and that should be an implementation detail. This instead makes `linux-kernel` and `gcc` top level fields in platform configs. They join `rustc` there [all are optional], which was put there and not in `platform` in anticipation of a change like this. `linux-kernel.arch` in particular also becomes `linuxArch`, to match the other `*Arch`es. The next step after is this to combine the *specific* machines from `lib.systems.platforms` with `lib.systems.examples`, keeping just the "multiplatform" ones for defaulting.
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
# symbolic name and `patch' is the actual patch. The patch may
|
||||
# optionally be compressed with gzip or bzip2.
|
||||
kernelPatches ? []
|
||||
, ignoreConfigErrors ? stdenv.hostPlatform.platform.name != "pc" ||
|
||||
, ignoreConfigErrors ? stdenv.hostPlatform.linux-kernel.name != "pc" ||
|
||||
stdenv.hostPlatform != stdenv.buildPlatform
|
||||
, extraMeta ? {}
|
||||
|
||||
@@ -51,10 +51,10 @@
|
||||
, isLibre ? false
|
||||
, isHardened ? false
|
||||
|
||||
# easy overrides to stdenv.hostPlatform.platform members
|
||||
, autoModules ? stdenv.hostPlatform.platform.kernelAutoModules
|
||||
, preferBuiltin ? stdenv.hostPlatform.platform.kernelPreferBuiltin or false
|
||||
, kernelArch ? stdenv.hostPlatform.platform.kernelArch
|
||||
# easy overrides to stdenv.hostPlatform.linux-kernel members
|
||||
, autoModules ? stdenv.hostPlatform.linux-kernel.autoModules
|
||||
, preferBuiltin ? stdenv.hostPlatform.linux-kernel.preferBuiltin or false
|
||||
, kernelArch ? stdenv.hostPlatform.linuxArch
|
||||
|
||||
, ...
|
||||
}:
|
||||
@@ -87,7 +87,7 @@ let
|
||||
intermediateNixConfig = configfile.moduleStructuredConfig.intermediateNixConfig
|
||||
# extra config in legacy string format
|
||||
+ extraConfig
|
||||
+ lib.optionalString (stdenv.hostPlatform.platform ? kernelExtraConfig) stdenv.hostPlatform.platform.kernelExtraConfig;
|
||||
+ stdenv.hostPlatform.linux-kernel.extraConfig or "";
|
||||
|
||||
structuredConfigFromPatches =
|
||||
map ({extraStructuredConfig ? {}, ...}: {settings=extraStructuredConfig;}) kernelPatches;
|
||||
@@ -113,11 +113,11 @@ let
|
||||
nativeBuildInputs = [ perl gmp libmpc mpfr ]
|
||||
++ lib.optionals (lib.versionAtLeast version "4.16") [ bison flex ];
|
||||
|
||||
platformName = stdenv.hostPlatform.platform.name;
|
||||
platformName = stdenv.hostPlatform.linux-kernel.name;
|
||||
# e.g. "defconfig"
|
||||
kernelBaseConfig = if defconfig != null then defconfig else stdenv.hostPlatform.platform.kernelBaseConfig;
|
||||
kernelBaseConfig = if defconfig != null then defconfig else stdenv.hostPlatform.linux-kernel.baseConfig;
|
||||
# e.g. "bzImage"
|
||||
kernelTarget = stdenv.hostPlatform.platform.kernelTarget;
|
||||
kernelTarget = stdenv.hostPlatform.linux-kernel.target;
|
||||
|
||||
prePatch = kernel.prePatch + ''
|
||||
# Patch kconfig to print "###" after every question so that
|
||||
|
||||
Reference in New Issue
Block a user