stdenv: start deprecating non-list mesonFlags
the motivation for this is to simplify stdenv and ease the job of reviewers due to them needing to tell contributors about the defacto rule that mesonFlags should be a list of strings
This commit is contained in:
parent
a56995cf80
commit
ca2ca8b194
|
@ -361,6 +361,43 @@ else let
|
|||
in
|
||||
explicitFlags ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) crossFlags;
|
||||
|
||||
mesonFlags =
|
||||
let
|
||||
explicitFlags =
|
||||
if lib.isString mesonFlags then lib.warn
|
||||
"String 'mesonFlags' is deprecated and will be removed in release 23.05. Please use a list of strings. Derivation name: ${derivationArg.name}, file: ${pos.file or "unknown file"}"
|
||||
[mesonFlags]
|
||||
else if mesonFlags == null then
|
||||
lib.warn
|
||||
"Null 'mesonFlags' is deprecated and will be removed in release 23.05. Please use a empty list instead '[]'. Derivation name: ${derivationArg.name}, file: ${pos.file or "unknown file"}"
|
||||
[]
|
||||
else
|
||||
mesonFlags;
|
||||
|
||||
# See https://mesonbuild.com/Reference-tables.html#cpu-families
|
||||
cpuFamily = platform: with platform;
|
||||
/**/ if isAarch32 then "arm"
|
||||
else if isAarch64 then "aarch64"
|
||||
else if isx86_32 then "x86"
|
||||
else if isx86_64 then "x86_64"
|
||||
else platform.parsed.cpu.family + builtins.toString platform.parsed.cpu.bits;
|
||||
|
||||
crossFile = builtins.toFile "cross-file.conf" ''
|
||||
[properties]
|
||||
needs_exe_wrapper = true
|
||||
|
||||
[host_machine]
|
||||
system = '${stdenv.targetPlatform.parsed.kernel.name}'
|
||||
cpu_family = '${cpuFamily stdenv.targetPlatform}'
|
||||
cpu = '${stdenv.targetPlatform.parsed.cpu.name}'
|
||||
endian = ${if stdenv.targetPlatform.isLittleEndian then "'little'" else "'big'"}
|
||||
|
||||
[binaries]
|
||||
llvm-config = 'llvm-config-native'
|
||||
'';
|
||||
crossFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "--cross-file=${crossFile}" ];
|
||||
in crossFlags ++ explicitFlags;
|
||||
|
||||
inherit patches;
|
||||
|
||||
inherit doCheck doInstallCheck;
|
||||
|
@ -372,29 +409,6 @@ else let
|
|||
# most people won't care about these anyways
|
||||
outputHashAlgo = attrs.outputHashAlgo or "sha256";
|
||||
outputHashMode = attrs.outputHashMode or "recursive";
|
||||
} // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
|
||||
mesonFlags = if mesonFlags == null then null else let
|
||||
# See https://mesonbuild.com/Reference-tables.html#cpu-families
|
||||
cpuFamily = platform: with platform;
|
||||
/**/ if isAarch32 then "arm"
|
||||
else if isAarch64 then "aarch64"
|
||||
else if isx86_32 then "x86"
|
||||
else if isx86_64 then "x86_64"
|
||||
else platform.parsed.cpu.family + builtins.toString platform.parsed.cpu.bits;
|
||||
crossFile = builtins.toFile "cross-file.conf" ''
|
||||
[properties]
|
||||
needs_exe_wrapper = true
|
||||
|
||||
[host_machine]
|
||||
system = '${stdenv.targetPlatform.parsed.kernel.name}'
|
||||
cpu_family = '${cpuFamily stdenv.targetPlatform}'
|
||||
cpu = '${stdenv.targetPlatform.parsed.cpu.name}'
|
||||
endian = ${if stdenv.targetPlatform.isLittleEndian then "'little'" else "'big'"}
|
||||
|
||||
[binaries]
|
||||
llvm-config = 'llvm-config-native'
|
||||
'';
|
||||
in [ "--cross-file=${crossFile}" ] ++ mesonFlags;
|
||||
} // lib.optionalAttrs (enableParallelBuilding) {
|
||||
enableParallelChecking = attrs.enableParallelChecking or true;
|
||||
} // lib.optionalAttrs (hardeningDisable != [] || hardeningEnable != [] || stdenv.hostPlatform.isMusl) {
|
||||
|
|
Loading…
Reference in a new issue