diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2018-03-19 22:41:06 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2018-04-25 15:28:55 -0400 |
commit | ba52ae50488de85a9cf60a3a04f1c9ca7122ec74 (patch) | |
tree | 48f98024c9244c5d3142ee224d52b267f03853f0 | |
parent | e40213ed24dea5c816b12f13cbf6606323e31637 (diff) |
treewide: isArm -> isAarch32
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.
The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:
```
ISA: ARMv8 {-A, -R, -M}
/ \
Mode: Aarch32 Aarch64
| / \
Encoding: A64 A32 T32
```
At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.
The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilĂ we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.
[1]: https://developer.arm.com/products/architecture/a-profile
69 files changed, 110 insertions, 107 deletions
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 012a1786a3cc..c6618083ce72 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -26,7 +26,7 @@ in rec { none = []; - arm = filterDoubles predicates.isArm; + arm = filterDoubles predicates.isAarch32; aarch64 = filterDoubles predicates.isAarch64; x86 = filterDoubles predicates.isx86; i686 = filterDoubles predicates.isi686; diff --git a/lib/systems/for-meta.nix b/lib/systems/for-meta.nix index 43c0195c3f18..9e85cea3ad11 100644 --- a/lib/systems/for-meta.nix +++ b/lib/systems/for-meta.nix @@ -7,7 +7,7 @@ in rec { all = [ {} ]; # `{}` matches anything none = []; - arm = [ patterns.isArm ]; + arm = [ patterns.isAarch32 ]; aarch64 = [ patterns.isAarch64 ]; x86 = [ patterns.isx86 ]; i686 = [ patterns.isi686 ]; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index d7fabf684b72..b87320594cab 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -9,8 +9,8 @@ rec { isx86_64 = { cpu = cpuTypes.x86_64; }; isPowerPC = { cpu = cpuTypes.powerpc; }; isx86 = { cpu = { family = "x86"; }; }; - isArm = { cpu = { family = "arm"; }; }; - isAarch64 = { cpu = { family = "aarch64"; }; }; + isAarch32 = { cpu = { family = "arm"; bits = 32; }; }; + isAarch64 = { cpu = { family = "arm"; bits = 64; }; }; isMips = { cpu = { family = "mips"; }; }; isRiscV = { cpu = { family = "riscv"; }; }; isWasm = { cpu = { family = "wasm"; }; }; @@ -41,6 +41,9 @@ rec { isEfi = map (family: { cpu.family = family; }) [ "x86" "arm" "aarch64" ]; + + # Deprecated + isArm = isAarch32; }; matchAnyAttrs = patterns: diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 381108d76fe2..018fd172e687 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -72,7 +72,7 @@ rec { armv6l = { bits = 32; significantByte = littleEndian; family = "arm"; }; armv7a = { bits = 32; significantByte = littleEndian; family = "arm"; }; armv7l = { bits = 32; significantByte = littleEndian; family = "arm"; }; - aarch64 = { bits = 64; significantByte = littleEndian; family = "aarch64"; }; + aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; }; i686 = { bits = 32; significantByte = littleEndian; family = "x86"; }; x86_64 = { bits = 64; significantByte = littleEndian; family = "x86"; }; mips = { bits = 32; significantByte = bigEndian; family = "mips"; }; diff --git a/nixos/lib/qemu-flags.nix b/nixos/lib/qemu-flags.nix index fcdcbf1b0077..e4c95ebdfb0d 100644 --- a/nixos/lib/qemu-flags.nix +++ b/nixos/lib/qemu-flags.nix @@ -9,7 +9,7 @@ ]; qemuSerialDevice = if pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64 then "ttyS0" - else if pkgs.stdenv.isArm || pkgs.stdenv.isAarch64 then "ttyAMA0" + else if pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64 then "ttyAMA0" else throw "Unknown QEMU serial device for system '${pkgs.stdenv.system}'"; qemuBinary = qemuPkg: { diff --git a/nixos/modules/config/gnu.nix b/nixos/modules/config/gnu.nix index ef48ccb7b4fe..93d130970190 100644 --- a/nixos/modules/config/gnu.nix +++ b/nixos/modules/config/gnu.nix @@ -26,11 +26,11 @@ with lib; nano zile texinfo # for the stand-alone Info reader ] - ++ stdenv.lib.optional (!stdenv.isArm) grub2; + ++ stdenv.lib.optional (!stdenv.isAarch32) grub2; # GNU GRUB, where available. - boot.loader.grub.enable = !pkgs.stdenv.isArm; + boot.loader.grub.enable = !pkgs.stdenv.isAarch32; boot.loader.grub.version = 2; # GNU lsh. diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 45325c6b0d8d..2b78276fcdea 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -437,7 +437,7 @@ in # FIXME: Consolidate this one day. virtualisation.qemu.options = mkMerge [ (mkIf (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ "-vga std" "-usb" "-device usb-tablet,bus=usb-bus.0" ]) - (mkIf (pkgs.stdenv.isArm || pkgs.stdenv.isAarch64) [ "-device virtio-gpu-pci" "-device usb-ehci,id=usb0" "-device usb-kbd" "-device usb-tablet" ]) + (mkIf (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) [ "-device virtio-gpu-pci" "-device usb-ehci,id=usb0" "-device usb-kbd" "-device usb-tablet" ]) ]; # Mount the host filesystem via 9P, and bind-mount the Nix store diff --git a/pkgs/applications/audio/sunvox/default.nix b/pkgs/applications/audio/sunvox/default.nix index ccbceddefd2f..47b0bf2e736c 100644 --- a/pkgs/applications/audio/sunvox/default.nix +++ b/pkgs/applications/audio/sunvox/default.nix @@ -5,7 +5,7 @@ let arch = if stdenv.isAarch64 then "arm64" - else if stdenv.isArm + else if stdenv.isAarch32 then "arm_armhf_raspberry_pi" else if stdenv.is64bit then "x86_64" diff --git a/pkgs/applications/networking/instant-messengers/toxic/default.nix b/pkgs/applications/networking/instant-messengers/toxic/default.nix index e2e25be49f23..4934a7374058 100644 --- a/pkgs/applications/networking/instant-messengers/toxic/default.nix +++ b/pkgs/applications/networking/instant-messengers/toxic/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { buildInputs = [ libtoxcore libsodium ncurses curl gdk_pixbuf libnotify - ] ++ stdenv.lib.optionals (!stdenv.isArm) [ + ] ++ stdenv.lib.optionals (!stdenv.isAarch32) [ openal libopus libvpx freealut libqrencode ]; nativeBuildInputs = [ pkgconfig libconfig ]; diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index a10687141615..9839aadc9c1f 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -4,7 +4,7 @@ , makeWrapper , attr, libcap, libcap_ng , CoreServices, Cocoa, rez, setfile -, numaSupport ? stdenv.isLinux && !stdenv.isArm, numactl +, numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl , seccompSupport ? stdenv.isLinux, libseccomp , pulseSupport ? !stdenv.isDarwin, libpulseaudio , sdlSupport ? !stdenv.isDarwin, SDL2 @@ -29,7 +29,7 @@ let hostCpuTargets = if stdenv.isx86_64 then "i386-softmmu,x86_64-softmmu" else if stdenv.isi686 then "i386-softmmu" - else if stdenv.isArm then "arm-softmmu" + else if stdenv.isAarch32 then "arm-softmmu" else if stdenv.isAarch64 then "aarch64-softmmu" else throw "Don't know how to build a 'hostCpuOnly = true' QEMU"; in @@ -135,7 +135,7 @@ stdenv.mkDerivation rec { postInstall = if stdenv.isx86_64 then ''makeWrapper $out/bin/qemu-system-x86_64 $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"'' else if stdenv.isi686 then ''makeWrapper $out/bin/qemu-system-i386 $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"'' - else if stdenv.isArm then ''makeWrapper $out/bin/qemu-system-arm $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"'' + else if stdenv.isAarch32 then ''makeWrapper $out/bin/qemu-system-arm $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"'' else if stdenv.isAarch64 then ''makeWrapper $out/bin/qemu-system-aarch64 $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"'' else ""; diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix index 5c0436b73ddf..47301bbdde69 100644 --- a/pkgs/build-support/bintools-wrapper/default.nix +++ b/pkgs/build-support/bintools-wrapper/default.nix @@ -57,7 +57,7 @@ let else if targetPlatform.system == "i686-linux" then "${libc_lib}/lib/ld-linux.so.2" else if targetPlatform.system == "x86_64-linux" then "${libc_lib}/lib/ld-linux-x86-64.so.2" # ARM with a wildcard, which can be "" or "-armhf". - else if (with targetPlatform; isArm && isLinux) then "${libc_lib}/lib/ld-linux*.so.3" + else if (with targetPlatform; isAarch32 && isLinux) then "${libc_lib}/lib/ld-linux*.so.3" else if targetPlatform.system == "aarch64-linux" then "${libc_lib}/lib/ld-linux-aarch64.so.1" else if targetPlatform.system == "powerpc-linux" then "${libc_lib}/lib/ld.so.1" else if targetPlatform.isMips then "${libc_lib}/lib/ld.so.1" @@ -176,7 +176,7 @@ stdenv.mkDerivation { sep = optionalString (!targetPlatform.isMips) "-"; arch = /**/ if targetPlatform.isAarch64 then endianPrefix + "aarch64" - else if targetPlatform.isArm then endianPrefix + "arm" + else if targetPlatform.isAarch32 then endianPrefix + "arm" else if targetPlatform.isx86_64 then "x86-64" else if targetPlatform.isi686 then "i386" else if targetPlatform.isMips then { diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 0a6ea59e5ac4..532c56d52573 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -289,7 +289,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isAarch32 then [] else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 5dfdbd02cbfd..fb82eee4ab85 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -298,7 +298,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isAarch32 then [] else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index e42bb736676d..dee798eb09b1 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -318,7 +318,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isAarch32 then [] else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index cf71f51627c9..b99ab8fce7fb 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -322,7 +322,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isAarch32 then [] else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 0b19aa95effe..493e50d9f327 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -327,7 +327,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isAarch32 then [] else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index e41e8789c9ed..d37cfac3fa85 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -290,7 +290,7 @@ stdenv.mkDerivation ({ # TODO(@Ericson2314): Always pass "--target" and always prefix. configurePlatforms = # TODO(@Ericson2314): Figure out what's going wrong with Arm - if buildPlatform == hostPlatform && hostPlatform == targetPlatform && targetPlatform.isArm + if buildPlatform == hostPlatform && |