From 175d4ab1db65088c008e667f0423efbf325c179f Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 19 Mar 2018 22:14:45 -0400 Subject: lib: Make platform predicates greppable Should have commited on here and on merged master to begin with, but I didn't, so instead I cherry-pick. (cherry picked from commit 88c04a8b6b6714a61c8a28ec8bbd5ecf580ed2c7) --- lib/systems/for-meta.nix | 28 ++++++++--------- lib/systems/inspect.nix | 80 +++++++++++++++++++++++------------------------- 2 files changed, 53 insertions(+), 55 deletions(-) (limited to 'lib') diff --git a/lib/systems/for-meta.nix b/lib/systems/for-meta.nix index 0a7a4bf5b0cc..fa713b1e6136 100644 --- a/lib/systems/for-meta.nix +++ b/lib/systems/for-meta.nix @@ -7,21 +7,21 @@ in rec { inherit (lib.systems.doubles) all mesaPlatforms; none = []; - arm = [ patterns.Arm ]; - aarch64 = [ patterns.Aarch64 ]; - x86 = [ patterns.x86 ]; - i686 = [ patterns.i686 ]; - x86_64 = [ patterns.x86_64 ]; - mips = [ patterns.Mips ]; + arm = [ patterns.isArm ]; + aarch64 = [ patterns.isAarch64 ]; + x86 = [ patterns.isx86 ]; + i686 = [ patterns.isi686 ]; + x86_64 = [ patterns.isx86_64 ]; + mips = [ patterns.isMips ]; - cygwin = [ patterns.Cygwin ]; - darwin = [ patterns.Darwin ]; - freebsd = [ patterns.FreeBSD ]; + cygwin = [ patterns.isCygwin ]; + darwin = [ patterns.isDarwin ]; + freebsd = [ patterns.isFreeBSD ]; # Should be better, but MinGW is unclear, and HURD is bit-rotted. gnu = [ { kernel = parse.kernels.linux; abi = parse.abis.gnu; } ]; - illumos = [ patterns.SunOS ]; - linux = [ patterns.Linux ]; - netbsd = [ patterns.NetBSD ]; - openbsd = [ patterns.OpenBSD ]; - unix = patterns.Unix; # Actually a list + illumos = [ patterns.isSunOS ]; + linux = [ patterns.isLinux ]; + netbsd = [ patterns.isNetBSD ]; + openbsd = [ patterns.isOpenBSD ]; + unix = patterns.isUnix; # Actually a list } diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index ab220af46e30..a7bd17f68a45 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -5,51 +5,49 @@ with lib.lists; rec { patterns = rec { - i686 = { cpu = cpuTypes.i686; }; - x86_64 = { cpu = cpuTypes.x86_64; }; - PowerPC = { cpu = cpuTypes.powerpc; }; - x86 = { cpu = { family = "x86"; }; }; - Arm = { cpu = { family = "arm"; }; }; - Aarch64 = { cpu = { family = "aarch64"; }; }; - Mips = { cpu = { family = "mips"; }; }; - RiscV = { cpu = { family = "riscv"; }; }; - Wasm = { cpu = { family = "wasm"; }; }; - - "32bit" = { cpu = { bits = 32; }; }; - "64bit" = { cpu = { bits = 64; }; }; - BigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; - LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; - - BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; - Unix = [ BSD Darwin Linux SunOS Hurd Cygwin ]; - - Darwin = { kernel = kernels.darwin; }; - Linux = { kernel = kernels.linux; }; - SunOS = { kernel = kernels.solaris; }; - FreeBSD = { kernel = kernels.freebsd; }; - Hurd = { kernel = kernels.hurd; }; - NetBSD = { kernel = kernels.netbsd; }; - OpenBSD = { kernel = kernels.openbsd; }; - Windows = { kernel = kernels.windows; }; - Cygwin = { kernel = kernels.windows; abi = abis.cygnus; }; - MinGW = { kernel = kernels.windows; abi = abis.gnu; }; - - Android = [ { abi = abis.android; } { abi = abis.androideabi; } ]; - Musl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; - - Kexecable = map (family: { kernel = kernels.linux; cpu.family = family; }) - [ "x86" "arm" "aarch64" "mips" ]; - Efi = map (family: { cpu.family = family; }) - [ "x86" "arm" "aarch64" ]; - Seccomputable = map (family: { kernel = kernels.linux; cpu.family = family; }) - [ "x86" "arm" "aarch64" "mips" ]; + isi686 = { cpu = cpuTypes.i686; }; + isx86_64 = { cpu = cpuTypes.x86_64; }; + isPowerPC = { cpu = cpuTypes.powerpc; }; + isx86 = { cpu = { family = "x86"; }; }; + isArm = { cpu = { family = "arm"; }; }; + isAarch64 = { cpu = { family = "aarch64"; }; }; + isMips = { cpu = { family = "mips"; }; }; + isRiscV = { cpu = { family = "riscv"; }; }; + isWasm = { cpu = { family = "wasm"; }; }; + + is32bit = { cpu = { bits = 32; }; }; + is64bit = { cpu = { bits = 64; }; }; + isBigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; + isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; + + isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; + isUnix = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ]; + + isDarwin = { kernel = kernels.darwin; }; + isLinux = { kernel = kernels.linux; }; + isSunOS = { kernel = kernels.solaris; }; + isFreeBSD = { kernel = kernels.freebsd; }; + isHurd = { kernel = kernels.hurd; }; + isNetBSD = { kernel = kernels.netbsd; }; + isOpenBSD = { kernel = kernels.openbsd; }; + isWindows = { kernel = kernels.windows; }; + isCygwin = { kernel = kernels.windows; abi = abis.cygnus; }; + isMinGW = { kernel = kernels.windows; abi = abis.gnu; }; + + isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; + isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; + + isKexecable = map (family: { kernel = kernels.linux; cpu.family = family; }) + [ "x86" "arm" "aarch64" "mips" ]; + isEfi = map (family: { cpu.family = family; }) + [ "x86" "arm" "aarch64" ]; + isSeccomputable = map (family: { kernel = kernels.linux; cpu.family = family; }) + [ "x86" "arm" "aarch64" "mips" ]; }; matchAnyAttrs = patterns: if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns else matchAttrs patterns; - predicates = mapAttrs' - (name: value: nameValuePair ("is" + name) (matchAnyAttrs value)) - patterns; + predicates = mapAttrs (_: matchAnyAttrs) patterns; } -- cgit v1.2.3