summary refs log tree commit diff
path: root/lib/systems/parse.nix
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-05-12 15:07:31 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-05-12 15:18:31 -0400
commitf2004e62870aa6b21dd52612295da973194c7c73 (patch)
tree7dcc88f1907c1a880d82ab00ee154631bce23543 /lib/systems/parse.nix
parent6f40d18d4432858199e14d2323b4f8503ee47a7e (diff)
downloadnixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar.gz
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar.bz2
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar.lz
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar.xz
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.tar.zst
nixpkgs-f2004e62870aa6b21dd52612295da973194c7c73.zip
lib: Fix float handling for Aarch32
Forgot to adjust default so abi with explicit float attr would be used.
Diffstat (limited to 'lib/systems/parse.nix')
-rw-r--r--lib/systems/parse.nix29
1 files changed, 17 insertions, 12 deletions
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 33daf079164..856ab297d5b 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -68,17 +68,17 @@ rec {
 
   cpuTypes = with significantBytes; setTypes types.openCpuType {
     arm      = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv5tel = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv6m   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv6l   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv7a   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv7r   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv7m   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv7l   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv8a   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv8r   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    armv8m   = { bits = 32; significantByte = littleEndian; family = "arm"; };
-    aarch64  = { bits = 64; significantByte = littleEndian; family = "arm"; };
+    armv5tel = { bits = 32; significantByte = littleEndian; family = "arm"; version = "5"; };
+    armv6m   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "6"; };
+    armv6l   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "6"; };
+    armv7a   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; };
+    armv7r   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; };
+    armv7m   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; };
+    armv7l   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; };
+    armv8a   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; };
+    armv8r   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; };
+    armv8m   = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; };
+    aarch64  = { bits = 64; significantByte = littleEndian; family = "arm"; version = "8"; };
 
     i686     = { bits = 32; significantByte = littleEndian; family = "x86"; };
     x86_64   = { bits = 64; significantByte = littleEndian; family = "x86"; };
@@ -271,7 +271,12 @@ rec {
       kernel = getKernel args.kernel;
       abi =
         /**/ if args ? abi       then getAbi args.abi
-        else if isLinux   parsed then abis.gnu
+        else if isLinux   parsed then
+          if isAarch32 parsed then
+            if lib.versionAtLeast (parsed.cpu.version or "0") "6"
+            then abis.gnueabihf
+            else abis.gnueabi
+          else abis.gnu
         else if isWindows parsed then abis.gnu
         else                     abis.unknown;
     };