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 23a44d02e85..7ec371d0e87 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 270be3a43cd..7233565a013 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 27c5ff565ca..e793cdd3ffd 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 7ec371d0e87..91b0a55fedd 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 e793cdd3ffd..5808154ba80 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 91b0a55fedd..383dd30bfdb 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 7233565a013..a5fed5acf2c 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 5808154ba80..88e2e4206d5 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 25a7211ef49..ea45813303a 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 }; }