dump_syms: Add consumers into passthru.tests
[NixPkgs.git] / lib / systems / inspect.nix
blob4e0bb8e672e9a701c1cfbe15a413686ca9e60fb2
1 { lib }:
2 with import ./parse.nix { inherit lib; };
3 with lib.attrsets;
4 with lib.lists;
6 let abis_ = abis; in
7 let abis = lib.mapAttrs (_: abi: builtins.removeAttrs abi [ "assertions" ]) abis_; in
9 rec {
10   patterns = rec {
11     isi686         = { cpu = cpuTypes.i686; };
12     isx86_32       = { cpu = { family = "x86"; bits = 32; }; };
13     isx86_64       = { cpu = { family = "x86"; bits = 64; }; };
14     isPower        = { cpu = { family = "power"; }; };
15     isPower64      = { cpu = { family = "power"; bits = 64; }; };
16     # This ABI is the default in NixOS PowerPC64 BE, but not on mainline GCC,
17     # so it sometimes causes issues in certain packages that makes the wrong
18     # assumption on the used ABI.
19     isAbiElfv2 = [
20       { abi = { abi = "elfv2"; }; }
21       { abi = { name = "musl"; }; cpu = { family = "power"; bits = 64; }; }
22     ];
23     isx86          = { cpu = { family = "x86"; }; };
24     isAarch32      = { cpu = { family = "arm"; bits = 32; }; };
25     isAarch64      = { cpu = { family = "arm"; bits = 64; }; };
26     isAarch        = { cpu = { family = "arm"; }; };
27     isMicroBlaze   = { cpu = { family = "microblaze"; }; };
28     isMips         = { cpu = { family = "mips"; }; };
29     isMips32       = { cpu = { family = "mips"; bits = 32; }; };
30     isMips64       = { cpu = { family = "mips"; bits = 64; }; };
31     isMips64n32    = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "n32"; }; };
32     isMips64n64    = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "64";  }; };
33     isMmix         = { cpu = { family = "mmix"; }; };
34     isRiscV        = { cpu = { family = "riscv"; }; };
35     isRiscV32      = { cpu = { family = "riscv"; bits = 32; }; };
36     isRiscV64      = { cpu = { family = "riscv"; bits = 64; }; };
37     isRx           = { cpu = { family = "rx"; }; };
38     isSparc        = { cpu = { family = "sparc"; }; };
39     isWasm         = { cpu = { family = "wasm"; }; };
40     isMsp430       = { cpu = { family = "msp430"; }; };
41     isVc4          = { cpu = { family = "vc4"; }; };
42     isAvr          = { cpu = { family = "avr"; }; };
43     isAlpha        = { cpu = { family = "alpha"; }; };
44     isOr1k         = { cpu = { family = "or1k"; }; };
45     isM68k         = { cpu = { family = "m68k"; }; };
46     isS390         = { cpu = { family = "s390"; }; };
47     isJavaScript   = { cpu = cpuTypes.js; };
49     is32bit        = { cpu = { bits = 32; }; };
50     is64bit        = { cpu = { bits = 64; }; };
51     isBigEndian    = { cpu = { significantByte = significantBytes.bigEndian; }; };
52     isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
54     isBSD          = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
55     isDarwin       = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
56     isUnix         = [ isBSD isDarwin isLinux isSunOS isCygwin isRedox ];
58     isMacOS        = { kernel = kernels.macos; };
59     isiOS          = { kernel = kernels.ios; };
60     isLinux        = { kernel = kernels.linux; };
61     isSunOS        = { kernel = kernels.solaris; };
62     isFreeBSD      = { kernel = { name = "freebsd"; }; };
63     isNetBSD       = { kernel = kernels.netbsd; };
64     isOpenBSD      = { kernel = kernels.openbsd; };
65     isWindows      = { kernel = kernels.windows; };
66     isCygwin       = { kernel = kernels.windows; abi = abis.cygnus; };
67     isMinGW        = { kernel = kernels.windows; abi = abis.gnu; };
68     isWasi         = { kernel = kernels.wasi; };
69     isRedox        = { kernel = kernels.redox; };
70     isGhcjs        = { kernel = kernels.ghcjs; };
71     isGenode       = { kernel = kernels.genode; };
72     isNone         = { kernel = kernels.none; };
74     isAndroid      = [ { abi = abis.android; } { abi = abis.androideabi; } ];
75     isGnu          = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf gnuabielfv1 gnuabielfv2 ];
76     isMusl         = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf muslabin32 muslabi64 ];
77     isUClibc       = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
79     isEfi          = map (family: { cpu.family = family; })
80                        [ "x86" "arm" "aarch64" ];
81   };
83   matchAnyAttrs = patterns:
84     if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns
85     else matchAttrs patterns;
87   predicates = mapAttrs (_: matchAnyAttrs) patterns;