linux: parse configfile at eval-time if possible (#434608)

This commit is contained in:
K900 2025-08-18 09:18:01 +03:00 committed by GitHub
commit 8c412c3fe6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,7 +2,6 @@
lib, lib,
stdenv, stdenv,
buildPackages, buildPackages,
runCommand,
bc, bc,
bison, bison,
flex, flex,
@ -33,16 +32,24 @@ let
readConfig = readConfig =
configfile: configfile:
import lib.listToAttrs (
(runCommand "config.nix" { } '' map
echo "{" > "$out" (
while IFS='=' read key val; do line:
[ "x''${key#CONFIG_}" != "x$key" ] || continue let
no_firstquote="''${val#\"}"; match = lib.match "(.*)=\"?(.*)\"?" line;
echo ' "'"$key"'" = "'"''${no_firstquote%\"}"'";' >> "$out" in
done < "${configfile}" {
echo "}" >> $out name = lib.elemAt match 0;
'').outPath; value = lib.elemAt match 1;
}
)
(
lib.filter (line: !(lib.hasPrefix "#" line || line == "")) (
lib.splitString "\n" (builtins.readFile configfile)
)
)
);
in in
lib.makeOverridable ( lib.makeOverridable (
{ {
@ -65,7 +72,9 @@ lib.makeOverridable (
configfile, configfile,
# Manually specified nixexpr representing the config # Manually specified nixexpr representing the config
# If unspecified, this will be autodetected from the .config # If unspecified, this will be autodetected from the .config
config ? lib.optionalAttrs allowImportFromDerivation (readConfig configfile), config ? lib.optionalAttrs (builtins.isPath configfile || allowImportFromDerivation) (
readConfig configfile
),
# Custom seed used for CONFIG_GCC_PLUGIN_RANDSTRUCT if enabled. This is # Custom seed used for CONFIG_GCC_PLUGIN_RANDSTRUCT if enabled. This is
# automatically extended with extra per-version and per-config values. # automatically extended with extra per-version and per-config values.
randstructSeed ? "", randstructSeed ? "",