From 48f3fd2d49c59c1bc46d5a83ff353e25aecbf4be Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 19 Jan 2023 16:39:30 +0000 Subject: [PATCH 1/4] lib.platforms.armv7: init --- lib/systems/doubles.nix | 1 + lib/systems/inspect.nix | 3 +++ lib/tests/systems.nix | 1 + 3 files changed, 5 insertions(+) diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 23a44d02e85e..7ec371d0e871 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -68,6 +68,7 @@ in { none = []; arm = filterDoubles predicates.isAarch32; + armv7 = filterDoubles predicates.isArmv7; aarch64 = filterDoubles predicates.isAarch64; x86 = filterDoubles predicates.isx86; i686 = filterDoubles predicates.isi686; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 270be3a43cd3..7233565a0136 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -22,6 +22,9 @@ rec { ]; isx86 = { cpu = { family = "x86"; }; }; isAarch32 = { cpu = { family = "arm"; bits = 32; }; }; + isArmv7 = map ({ arch, ... }: { cpu = { inherit arch; }; }) + (lib.filter (cpu: lib.hasPrefix "armv7" cpu.arch or "") + (lib.attrValues cpuTypes)); isAarch64 = { cpu = { family = "arm"; bits = 64; }; }; isAarch = { cpu = { family = "arm"; }; }; isMicroBlaze = { cpu = { family = "microblaze"; }; }; diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index 27c5ff565ca0..e793cdd3ffd0 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -16,6 +16,7 @@ with lib.systems.doubles; lib.runTests { testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ wasi ++ windows ++ embedded ++ mmix ++ js ++ genode ++ redox); testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv6l-netbsd" "armv6l-none" "armv7a-linux" "armv7a-netbsd" "armv7l-linux" "armv7l-netbsd" "arm-none" "armv7a-darwin" ]; + testarmv7 = mseteq armv7 [ "armv7a-darwin" "armv7a-linux" "armv7l-linux" "armv7a-netbsd" "armv7l-netbsd" ]; testi686 = mseteq i686 [ "i686-linux" "i686-freebsd13" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ]; testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ]; testmmix = mseteq mmix [ "mmix-mmixware" ]; From 541a2a5e9170a6f633e24513359cfe92d8ba50af Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 19 Jan 2023 16:39:50 +0000 Subject: [PATCH 2/4] lib.platforms.power: init --- lib/systems/doubles.nix | 1 + lib/tests/systems.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 7ec371d0e871..91b0a55fedd3 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -76,6 +76,7 @@ in { microblaze = filterDoubles predicates.isMicroBlaze; mips = filterDoubles predicates.isMips; mmix = filterDoubles predicates.isMmix; + power = filterDoubles predicates.isPower; riscv = filterDoubles predicates.isRiscV; riscv32 = filterDoubles predicates.isRiscV32; riscv64 = filterDoubles predicates.isRiscV64; diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index e793cdd3ffd0..5808154ba805 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -20,6 +20,7 @@ with lib.systems.doubles; lib.runTests { testi686 = mseteq i686 [ "i686-linux" "i686-freebsd13" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ]; testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ]; testmmix = mseteq mmix [ "mmix-mmixware" ]; + testpower = mseteq power [ "powerpc-netbsd" "powerpc-none" "powerpc64-linux" "powerpc64le-linux" "powerpcle-none" ]; testriscv = mseteq riscv [ "riscv32-linux" "riscv64-linux" "riscv32-netbsd" "riscv64-netbsd" "riscv32-none" "riscv64-none" ]; testriscv32 = mseteq riscv32 [ "riscv32-linux" "riscv32-netbsd" "riscv32-none" ]; testriscv64 = mseteq riscv64 [ "riscv64-linux" "riscv64-netbsd" "riscv64-none" ]; From 6d165a94740e6c1bd1e7a701cf0c2bc66d007fc5 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 19 Jan 2023 16:40:01 +0000 Subject: [PATCH 3/4] lib.platforms.s390x: init --- lib/systems/doubles.nix | 1 + lib/systems/inspect.nix | 1 + lib/tests/systems.nix | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 91b0a55fedd3..383dd30bfdb2 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -85,6 +85,7 @@ in { or1k = filterDoubles predicates.isOr1k; m68k = filterDoubles predicates.isM68k; s390 = filterDoubles predicates.isS390; + s390x = filterDoubles predicates.isS390x; js = filterDoubles predicates.isJavaScript; bigEndian = filterDoubles predicates.isBigEndian; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 7233565a0136..a5fed5acf2c5 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -47,6 +47,7 @@ rec { isOr1k = { cpu = { family = "or1k"; }; }; isM68k = { cpu = { family = "m68k"; }; }; isS390 = { cpu = { family = "s390"; }; }; + isS390x = { cpu = { family = "s390"; bits = 64; }; }; isJavaScript = { cpu = cpuTypes.js; }; is32bit = { cpu = { bits = 32; }; }; diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index 5808154ba805..88e2e4206d56 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -24,6 +24,7 @@ with lib.systems.doubles; lib.runTests { testriscv = mseteq riscv [ "riscv32-linux" "riscv64-linux" "riscv32-netbsd" "riscv64-netbsd" "riscv32-none" "riscv64-none" ]; testriscv32 = mseteq riscv32 [ "riscv32-linux" "riscv32-netbsd" "riscv32-none" ]; testriscv64 = mseteq riscv64 [ "riscv64-linux" "riscv64-netbsd" "riscv64-none" ]; + tests390x = mseteq s390x [ "s390x-linux" "s390x-none" ]; testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd13" "x86_64-genode" "x86_64-redox" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ]; testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]; From 9c04fcb25f633980b7cb4484d5138fe6fb11583f Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 19 Jan 2023 16:40:53 +0000 Subject: [PATCH 4/4] valgrind: make meta.platforms more accurate Valgrind has to do lots of architecture- and OS-specific stuff, so it only works on a defined set of platforms. So rather than marking platforms as bad one by one, let's set meta.platforms to the actual set of platforms supported by Valgrind, as listed in its configure script. --- pkgs/development/tools/analysis/valgrind/default.nix | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkgs/development/tools/analysis/valgrind/default.nix b/pkgs/development/tools/analysis/valgrind/default.nix index 25a7211ef49d..ea45813303a6 100644 --- a/pkgs/development/tools/analysis/valgrind/default.nix +++ b/pkgs/development/tools/analysis/valgrind/default.nix @@ -119,13 +119,9 @@ stdenv.mkDerivation rec { license = lib.licenses.gpl2Plus; maintainers = [ lib.maintainers.eelco ]; - platforms = lib.platforms.unix; - badPlatforms = [ - "armv5tel-linux" "armv6l-linux" "armv6m-linux" - "sparc-linux" "sparc64-linux" - "riscv32-linux" "riscv64-linux" - "alpha-linux" - ]; + platforms = with lib.platforms; lib.intersectLists + (x86 ++ power ++ s390x ++ armv7 ++ aarch64 ++ mips) + (darwin ++ freebsd ++ illumos ++ linux); broken = stdenv.isDarwin || stdenv.hostPlatform.isStatic; # https://hydra.nixos.org/build/128521440/nixlog/2 }; }