qemu: fix bin/qemu-kvm on aarch64 + minor fixes

* $out/bin/qemu-kvm should point to qemu-system-aarch64 on aarch64, libvirt expect it
 * makeWrapper codes are separated as some architectures might require additional command flags (https://github.com/NixOS/nixpkgs/issues/31606#issuecomment-349675127)
 * x86_64-on-i686 is not a native emulation and not supported by KVM, so it is removed from the list
This commit is contained in:
volth 2017-12-06 18:06:33 +00:00 committed by Tuomas Tynkkynen
parent 8f53673c64
commit 489d3e7d06

View file

@ -24,10 +24,11 @@ let
+ optionalString pulseSupport "pa," + optionalString pulseSupport "pa,"
+ optionalString sdlSupport "sdl,"; + optionalString sdlSupport "sdl,";
hostCpuTargets = if stdenv.isi686 || stdenv.isx86_64 then "i386-softmmu,x86_64-softmmu" hostCpuTargets = if stdenv.isx86_64 then "i386-softmmu,x86_64-softmmu"
else if stdenv.isArm then "arm-softmmu" else if stdenv.isi686 then "i386-softmmu"
else if stdenv.isAarch64 then "aarch64-softmmu" else if stdenv.isArm then "arm-softmmu"
else throw "Don't know how to build a 'hostCpuOnly = true' QEMU"; else if stdenv.isAarch64 then "aarch64-softmmu"
else throw "Don't know how to build a 'hostCpuOnly = true' QEMU";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -92,14 +93,13 @@ stdenv.mkDerivation rec {
done done
''; '';
# Add a qemu-kvm wrapper for compatibility/convenience.
postInstall = 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)"''
# Add a qemu-kvm wrapper for compatibility/convenience. else if stdenv.isi686 then ''makeWrapper $out/bin/qemu-system-i386 $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"''
p="$out/bin/qemu-system-${if stdenv.system == "x86_64-linux" then "x86_64" else "i386"}" else if stdenv.isArm then ''makeWrapper $out/bin/qemu-system-arm $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"''
if [ -e "$p" ]; then else if stdenv.isAarch64 then ''makeWrapper $out/bin/qemu-system-aarch64 $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)"''
makeWrapper "$p" $out/bin/qemu-kvm --add-flags "\$([ -e /dev/kvm ] && echo -enable-kvm)" else "";
fi
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://www.qemu.org/; homepage = http://www.qemu.org/;