about summary refs log tree commit diff
path: root/lib/systems
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2019-04-10 17:16:48 -0400
committerMatthew Bauer <mjbauer95@gmail.com>2019-04-19 12:00:32 -0400
commit59bb1dcbfb81fee9b727200ffc064cc6b2f05d59 (patch)
treecdcb2f1d0047826b491dff3b9dd718b44e49a3d7 /lib/systems
parent65f2b0a2a32bb0d84f55ca7bb8c9a33e8ba28713 (diff)
downloadnixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar.gz
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar.bz2
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar.lz
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar.xz
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.tar.zst
nixlib-59bb1dcbfb81fee9b727200ffc064cc6b2f05d59.zip
systems/parse.nix: fixup arm compatibilities
Diffstat (limited to 'lib/systems')
-rw-r--r--lib/systems/parse.nix46
1 files changed, 33 insertions, 13 deletions
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 8cc7d3ae271f..3e23a721f0d9 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -127,22 +127,42 @@ rec {
     (b == i386 && isCompatible a i486)
     (b == i486 && isCompatible a i586)
     (b == i586 && isCompatible a i686)
-    # NOTE: Not true in some cases. Like in WSL mode.
+
+    # XXX: Not true in some cases. Like in WSL mode.
     (b == i686 && isCompatible a x86_64)
 
-    # ARM
+    # ARMv4
     (b == arm && isCompatible a armv5tel)
-    (b == armv5tel && isCompatible a armv6m)
-    (b == armv6m && isCompatible a armv6l)
-    (b == armv6l && isCompatible a armv7a)
-    (b == armv7a && isCompatible a armv7r)
-    (b == armv7r && isCompatible a armv7m)
-    (b == armv7m && isCompatible a armv7l)
-    (b == armv7l && isCompatible a armv8a)
-    (b == armv8a && isCompatible a armv8r)
-    (b == armv8r && isCompatible a armv8m)
-    # NOTE: not always true! Some arm64 cpus don’t support arm32 mode.
-    (b == armv8m && isCompatible a aarch64)
+
+    # ARMv5
+    (b == armv5tel && isCompatible a armv6l)
+
+    # ARMv6
+    (b == armv6l && isCompatible a armv6m)
+    (b == armv6m && isCompatible a armv7l)
+
+    # ARMv7
+    (b == armv7l && isCompatible a armv7a)
+    (b == armv7l && isCompatible a armv7r)
+    (b == armv7l && isCompatible a armv7m)
+    (b == armv7a && isCompatible a armv8a)
+    (b == armv7r && isCompatible a armv8a)
+    (b == armv7m && isCompatible a armv8a)
+    (b == armv7a && isCompatible a armv8r)
+    (b == armv7r && isCompatible a armv8r)
+    (b == armv7m && isCompatible a armv8r)
+    (b == armv7a && isCompatible a armv8m)
+    (b == armv7r && isCompatible a armv8m)
+    (b == armv7m && isCompatible a armv8m)
+
+    # ARMv8
+    (b == armv8r && isCompatible a armv8a)
+    (b == armv8m && isCompatible a armv8a)
+
+    # XXX: not always true! Some arm64 cpus don’t support arm32 mode.
+    (b == aarch64 && a == armv8a)
+    (b == armv8a && isCompatible a aarch64)
+
     (b == aarch64 && a == aarch64_be)
     (b == aarch64_be && isCompatible a aarch64)