df8a80613e
A few post v2.10 patches needed to fix issues identified too late to get in. Also enable seccomp for all arch's we build for, and use better package references for rdma support OBS-URL: https://build.opensuse.org/request/show/520017 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=361
1606 lines
44 KiB
RPMSpec
1606 lines
44 KiB
RPMSpec
#
|
|
# spec file for package qemu
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%define noarch_supported 1110
|
|
|
|
%define build_x86_firmware_from_source 0
|
|
%define build_slof_from_source 0
|
|
%define kvm_available 0
|
|
%define legacy_qemu_kvm 0
|
|
%define force_fit_virtio_pxe_rom 1
|
|
|
|
%ifarch %ix86 x86_64
|
|
# choice of building all from source or using provided binary x86 blobs
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
%define build_x86_firmware_from_source 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch ppc64
|
|
%define build_slof_from_source 1
|
|
%endif
|
|
|
|
%ifarch ppc64le
|
|
%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
|
|
%define build_slof_from_source 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch %ix86 x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
|
|
%define kvm_available 1
|
|
%endif
|
|
|
|
%ifarch %ix86 x86_64 s390x
|
|
%define legacy_qemu_kvm 1
|
|
%endif
|
|
|
|
%if 0%{?suse_version} >= 1210
|
|
%define with_systemd 1
|
|
%endif
|
|
|
|
%ifarch x86_64
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && ( 0%{?is_opensuse} == 0 || 0%{?sle_version} > 120100 ) )
|
|
%define with_rbd 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch aarch64
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?is_opensuse} == 0 && 0%{?sle_version} > 120100 )
|
|
%define with_rbd 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch ppc64le
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?is_opensuse} == 0 && 0%{?sle_version} > 120200 )
|
|
%define with_rbd 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch s390x
|
|
%if 0%{?is_opensuse} == 0 && 0%{?sle_version} > 120200
|
|
%define with_rbd 1
|
|
%endif
|
|
%endif
|
|
|
|
%ifarch ppc64
|
|
%if 0%{?is_opensuse} && 0%{?sle_version} > 120200
|
|
%define with_rbd 1
|
|
%endif
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 1320
|
|
%define with_seccomp 1
|
|
%endif
|
|
|
|
%ifarch %ix86 x86_64 s390x aarch64 ppc64le
|
|
%define with_seccomp 1
|
|
%endif
|
|
|
|
%if 0%{?suse_version} >= 1140
|
|
%define with_spice 1
|
|
%else
|
|
%ifarch %ix86 x86_64
|
|
%define with_spice 1
|
|
%endif
|
|
%endif
|
|
|
|
%if 0%( pkg-config --exists 'udev > 190' && echo '1' ) == 01
|
|
%define _udevrulesdir /usr/lib/udev/rules.d
|
|
%else
|
|
%define _udevrulesdir /lib/udev/rules.d
|
|
%endif
|
|
|
|
Name: qemu
|
|
Url: http://www.qemu.org/
|
|
Summary: Universal CPU emulator
|
|
License: BSD-3-Clause and GPL-2.0 and GPL-2.0+ and LGPL-2.1+ and MIT
|
|
Group: System/Emulators/PC
|
|
Version: 2.10.0
|
|
Release: 0
|
|
Source: http://wiki.qemu.org/download/qemu-2.10.0.tar.xz
|
|
Source99: http://wiki.qemu.org/download/qemu-2.10.0.tar.xz.sig
|
|
Source1: 80-kvm.rules
|
|
Source2: qemu-ifup
|
|
Source3: kvm_stat
|
|
Source4: qemu-kvm.1.gz
|
|
Source5: 60-kvm.rules
|
|
Source6: ksm.service
|
|
Source7: 60-kvm.x86.rules
|
|
Source8: 80-qemu-ga.rules
|
|
Source9: qemu-ga.service
|
|
Source10: kvm.conf
|
|
Source11: kvm_stat.1.gz
|
|
Source12: supported.x86.txt
|
|
Source13: supported.s390.txt
|
|
Source14: supported.arm.txt
|
|
Source15: supported.ppc.txt
|
|
Source16: qemu-supportconfig
|
|
# Upstream First -- http://wiki.qemu-project.org/Contribute/SubmitAPatch
|
|
# This patch queue is auto-generated from https://github.com/openSUSE/qemu
|
|
Patch0001: 0001-XXX-dont-dump-core-on-sigabort.patch
|
|
Patch0002: 0002-qemu-binfmt-conf-Modify-default-pat.patch
|
|
Patch0003: 0003-qemu-cvs-gettimeofday.patch
|
|
Patch0004: 0004-qemu-cvs-ioctl_debug.patch
|
|
Patch0005: 0005-qemu-cvs-ioctl_nodirection.patch
|
|
Patch0006: 0006-linux-user-add-binfmt-wrapper-for-a.patch
|
|
Patch0007: 0007-PPC-KVM-Disable-mmu-notifier-check.patch
|
|
Patch0008: 0008-linux-user-fix-segfault-deadlock.patch
|
|
Patch0009: 0009-linux-user-binfmt-support-host-bina.patch
|
|
Patch0010: 0010-linux-user-Fake-proc-cpuinfo.patch
|
|
Patch0011: 0011-linux-user-XXX-disable-fiemap.patch
|
|
Patch0012: 0012-linux-user-use-target_ulong.patch
|
|
Patch0013: 0013-console-add-question-mark-escape-op.patch
|
|
Patch0014: 0014-Make-char-muxer-more-robust-wrt-sma.patch
|
|
Patch0015: 0015-linux-user-lseek-explicitly-cast-no.patch
|
|
Patch0016: 0016-AIO-Reduce-number-of-threads-for-32.patch
|
|
Patch0017: 0017-xen_disk-Add-suse-specific-flush-di.patch
|
|
Patch0018: 0018-qemu-bridge-helper-reduce-security-.patch
|
|
Patch0019: 0019-qemu-binfmt-conf-use-qemu-ARCH-binf.patch
|
|
Patch0020: 0020-configure-Fix-detection-of-seccomp-.patch
|
|
Patch0021: 0021-linux-user-properly-test-for-infini.patch
|
|
Patch0022: 0022-roms-Makefile-pass-a-packaging-time.patch
|
|
Patch0023: 0023-Raise-soft-address-space-limit-to-h.patch
|
|
Patch0024: 0024-increase-x86_64-physical-bits-to-42.patch
|
|
Patch0025: 0025-vga-Raise-VRAM-to-16-MiB-for-pc-0.1.patch
|
|
Patch0026: 0026-i8254-Fix-migration-from-SLE11-SP2.patch
|
|
Patch0027: 0027-acpi_piix4-Fix-migration-from-SLE11.patch
|
|
Patch0028: 0028-Fix-tigervnc-long-press-issue.patch
|
|
Patch0029: 0029-string-input-visitor-Fix-uint64-par.patch
|
|
Patch0030: 0030-test-string-input-visitor-Add-int-t.patch
|
|
Patch0031: 0031-test-string-input-visitor-Add-uint6.patch
|
|
Patch0032: 0032-tests-Add-QOM-property-unit-tests.patch
|
|
Patch0033: 0033-tests-Add-scsi-disk-test.patch
|
|
Patch0034: 0034-slirp-fix-clearing-ifq_so-from-pend.patch
|
|
Patch0035: 0035-s390-ccw-Fix-alignment-for-CCW1.patch
|
|
# Please do not add QEMU patches manually here.
|
|
# Run update_git.sh to regenerate this queue.
|
|
|
|
# SeaBIOS / SeaVGABIOS (Currently no patches)
|
|
|
|
# ipxe
|
|
# PATCH-FIX-OPENSUSE ipxe-stable-buildid.patch brogers@suse.com -- reproducible builds
|
|
Patch1100: ipxe-stable-buildid.patch
|
|
Patch1101: ipxe-use-gcc6-for-more-compact-code.patch
|
|
|
|
# sgabios
|
|
# PATCH-FIX-OPENSUSE sgabios-stable-buildid.patch brogers@suse.com -- reproducible builds
|
|
Patch1200: sgabios-stable-buildid.patch
|
|
|
|
# SLOF (Currently no patches)
|
|
|
|
# this is to make lint happy
|
|
Source300: qemu-rpmlintrc
|
|
Source301: ipxe-stub-out-the-SAN-req-s-in-int13.patch
|
|
Source302: bridge.conf
|
|
Source400: update_git.sh
|
|
ExcludeArch: s390
|
|
%if "%{name}" == "qemu-testsuite"
|
|
ExcludeArch: s390x
|
|
%endif
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
#!BuildIgnore: gcc-PIE
|
|
BuildRequires: SDL-devel
|
|
%if 0%{?suse_version} >= 1320
|
|
BuildRequires: SDL2-devel
|
|
%endif
|
|
BuildRequires: alsa-devel
|
|
%if %{build_x86_firmware_from_source}
|
|
BuildRequires: binutils-devel
|
|
%endif
|
|
BuildRequires: bluez-devel
|
|
%if 0%{?suse_version} >= 1130
|
|
BuildRequires: brlapi-devel
|
|
%endif
|
|
BuildRequires: curl-devel
|
|
BuildRequires: cyrus-sasl-devel
|
|
BuildRequires: e2fsprogs-devel
|
|
BuildRequires: fdupes
|
|
BuildRequires: gcc-c++
|
|
%if %{build_x86_firmware_from_source}
|
|
%if 0%{?suse_version} <= 1320
|
|
BuildRequires: gcc6
|
|
%endif
|
|
%endif
|
|
BuildRequires: glib2-devel
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
BuildRequires: glusterfs-devel
|
|
%endif
|
|
%if 0%{?suse_version} >= 1220
|
|
BuildRequires: gtk3-devel
|
|
%else
|
|
BuildRequires: gtk2-devel
|
|
%endif
|
|
BuildRequires: libaio
|
|
BuildRequires: libaio-devel
|
|
BuildRequires: libattr-devel
|
|
BuildRequires: libbz2-devel
|
|
%if 0%{?is_opensuse}
|
|
BuildRequires: libcacard-devel
|
|
%endif
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libcap-ng-devel
|
|
BuildRequires: libdrm-devel
|
|
%if 0%{?suse_version} >= 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
BuildRequires: libepoxy-devel
|
|
%endif
|
|
%if 0%{?suse_version} >= 1310
|
|
# 12.3 and earlier don't ship a compatible libfdt; use the bundled one there
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120200 )
|
|
BuildRequires: libfdt-devel
|
|
%else
|
|
BuildRequires: libfdt1-devel
|
|
%endif
|
|
%endif
|
|
BuildRequires: libgbm-devel
|
|
BuildRequires: libgcrypt-devel
|
|
BuildRequires: libgnutls-devel
|
|
%if 0%{?with_rbd}
|
|
%if 0%{?is_opensuse} || 0%{?sle_version} > 120100
|
|
BuildRequires: librbd-devel
|
|
%else
|
|
BuildRequires: ceph-devel
|
|
%endif
|
|
%endif
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
BuildRequires: libiscsi-devel
|
|
%endif
|
|
BuildRequires: libjpeg-devel
|
|
%if 0%{?suse_version} >= 1310
|
|
BuildRequires: libnettle-devel
|
|
%endif
|
|
%ifarch %ix86 x86_64
|
|
%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
|
|
BuildRequires: libnuma-devel
|
|
%endif
|
|
%else
|
|
%ifarch aarch64
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
BuildRequires: libnuma-devel
|
|
%endif
|
|
%endif
|
|
%else
|
|
%ifnarch %arm s390x
|
|
BuildRequires: libnuma-devel
|
|
%endif
|
|
%endif
|
|
BuildRequires: libpcap-devel
|
|
BuildRequires: libpixman-1-0-devel
|
|
BuildRequires: libpng-devel
|
|
BuildRequires: libpulse-devel
|
|
%if 0%{?with_seccomp}
|
|
BuildRequires: libseccomp-devel
|
|
%endif
|
|
%if 0%{?with_spice}
|
|
BuildRequires: libspice-server-devel
|
|
%endif
|
|
%if 0%{?suse_version} > 1140
|
|
BuildRequires: libssh2-devel
|
|
%endif
|
|
%if 0%{?suse_version} > 1310
|
|
BuildRequires: libusb-1_0-devel
|
|
%endif
|
|
%if 0%{?suse_version} > 1320
|
|
BuildRequires: libvdeplug-devel
|
|
%else
|
|
BuildRequires: libvdeplug3-devel
|
|
%endif
|
|
BuildRequires: lzo-devel
|
|
%if 0%{?suse_version} > 1220
|
|
BuildRequires: makeinfo
|
|
%endif
|
|
BuildRequires: Mesa-devel
|
|
BuildRequires: ncurses-devel
|
|
%if %{build_x86_firmware_from_source}
|
|
BuildRequires: ovmf-tools
|
|
%endif
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: pwdutils
|
|
BuildRequires: python
|
|
%if 0%{?suse_version} >= 1315
|
|
BuildRequires: rdma-core-devel
|
|
%endif
|
|
%if 0%{?suse_version} >= 1310
|
|
BuildRequires: snappy-devel
|
|
%endif
|
|
%if 0%{?with_spice}
|
|
BuildRequires: spice-protocol-devel
|
|
%endif
|
|
%if 0%{?with_systemd}
|
|
BuildRequires: systemd
|
|
%{?systemd_requires}
|
|
%endif
|
|
%if %{kvm_available}
|
|
BuildRequires: pkgconfig(udev)
|
|
%endif
|
|
BuildRequires: usbredir-devel
|
|
%if 0%{?suse_version} >= 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
BuildRequires: virglrenderer-devel >= 0.4.1
|
|
%endif
|
|
%if 0%{?suse_version} >= 1210
|
|
%if 0%{?suse_version} >= 1220
|
|
BuildRequires: vte-devel
|
|
%else
|
|
BuildRequires: vte2-devel
|
|
%endif
|
|
%endif
|
|
%ifarch x86_64
|
|
BuildRequires: xen-devel
|
|
%endif
|
|
BuildRequires: xfsprogs-devel
|
|
%if %{build_x86_firmware_from_source}
|
|
BuildRequires: xz-devel
|
|
%endif
|
|
BuildRequires: zlib-devel
|
|
%if "%{name}" == "qemu-testsuite"
|
|
BuildRequires: bc
|
|
BuildRequires: qemu-arm = %version
|
|
BuildRequires: qemu-block-curl = %version
|
|
BuildRequires: qemu-block-dmg = %version
|
|
BuildRequires: qemu-extra = %version
|
|
BuildRequires: qemu-guest-agent = %version
|
|
BuildRequires: qemu-ppc = %version
|
|
BuildRequires: qemu-s390 = %version
|
|
BuildRequires: qemu-tools = %version
|
|
BuildRequires: qemu-x86 = %version
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
BuildRequires: qemu-block-gluster = %version
|
|
%endif
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
BuildRequires: qemu-block-iscsi = %version
|
|
%endif
|
|
%if 0%{?with_rbd}
|
|
BuildRequires: qemu-block-rbd = %version
|
|
%endif
|
|
%if 0%{?suse_version} > 1140
|
|
BuildRequires: qemu-block-ssh = %version
|
|
%endif
|
|
%endif
|
|
Requires(pre): shadow
|
|
Requires(post): coreutils
|
|
%if %{kvm_available}
|
|
Requires(post): acl
|
|
Requires(post): udev
|
|
%ifarch s390x
|
|
Requires(post): procps
|
|
%endif
|
|
%if 0%{?suse_version} > 1320
|
|
Recommends: kvm_stat
|
|
%else
|
|
Recommends: python-curses
|
|
%endif
|
|
%endif
|
|
Recommends: qemu-block-curl
|
|
Recommends: qemu-tools
|
|
Recommends: qemu-x86
|
|
%ifarch ppc ppc64 ppc64le
|
|
Recommends: qemu-ppc
|
|
%else
|
|
Suggests: qemu-ppc
|
|
%endif
|
|
%ifarch s390x
|
|
Recommends: qemu-s390
|
|
%else
|
|
Suggests: qemu-s390
|
|
%endif
|
|
%ifarch %arm aarch64
|
|
Recommends: qemu-arm
|
|
%else
|
|
Suggests: qemu-arm
|
|
%endif
|
|
Suggests: qemu-block-dmg
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
Suggests: qemu-block-gluster
|
|
%endif
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
Suggests: qemu-block-iscsi
|
|
%endif
|
|
%if 0%{?with_rbd}
|
|
Suggests: qemu-block-rbd
|
|
%endif
|
|
%if 0%{?suse_version} > 1140
|
|
Suggests: qemu-block-ssh
|
|
%endif
|
|
Suggests: qemu-extra
|
|
Suggests: qemu-lang
|
|
%if 0%{?with_systemd} && 0%{?is_opensuse}
|
|
Recommends: qemu-ksm = %{version}
|
|
%endif
|
|
|
|
%if %{build_slof_from_source}
|
|
%define ppc_default_built_firmware {%nil}
|
|
%define ppc_extra_built_firmware {slof.bin}
|
|
%endif
|
|
|
|
%ifarch ppc64
|
|
%define ppc64_only_default_built_firmware {spapr-rtas.bin}
|
|
%define ppc64_only_extra_built_firmware {%nil}
|
|
%endif
|
|
|
|
%ifarch s390x
|
|
%define s390x_default_built_firmware {s390-ccw.img}
|
|
%define s390x_extra_built_firmware {%nil}
|
|
%endif
|
|
|
|
%ifarch %ix86 x86_64
|
|
%define x86_default_built_firmware {linuxboot.bin linuxboot_dma.bin \
|
|
multiboot.bin kvmvapic.bin}
|
|
%ifarch x86_64
|
|
%define x86_64_only_default_built_firmware {%nil}
|
|
%endif
|
|
%endif
|
|
|
|
%define x86_extra_built_firmware_list {bios.bin bios-256k.bin sgabios.bin \
|
|
vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-virtio.bin \
|
|
vgabios-vmware.bin vgabios-qxl.bin pxe-e1000.rom pxe-pcnet.rom \
|
|
pxe-ne2k_pci.rom pxe-rtl8139.rom pxe-eepro100.rom pxe-virtio.rom}
|
|
%define x86_64_only_extra_built_firmware_list {efi-e1000.rom efi-e1000e.rom \
|
|
efi-eepro100.rom efi-pcnet.rom efi-ne2k_pci.rom efi-rtl8139.rom efi-virtio.rom \
|
|
efi-vmxnet3.rom}
|
|
|
|
%if %{build_x86_firmware_from_source}
|
|
%define x86_extra_built_firmware %{x86_extra_built_firmware_list}
|
|
%ifarch x86_64
|
|
%define x86_64_only_extra_built_firmware %{x86_64_only_extra_built_firmware_list}
|
|
%endif
|
|
%endif
|
|
|
|
%define built_firmware { \
|
|
%{?ppc_default_built_firmware} %{?ppc_extra_built_firmware} \
|
|
%{?ppc64_only_default_built_firmware} %{?ppc64_only_extra_built_firmware} \
|
|
%{?s390x_default_built_firmware} %{?s390x_extra_built_firmware} \
|
|
%{?x86_default_built_firmware} %{?x86_extra_built_firmware} \
|
|
%{?x86_64_only_default_built_firmware} %{?x86_64_only_extra_built_firmware} }
|
|
|
|
%description
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
%if "%{name}" != "qemu-testsuite"
|
|
|
|
%package x86
|
|
Summary: Universal CPU emulator -- x86
|
|
Group: System/Emulators/PC
|
|
Requires: qemu = %version
|
|
Requires: qemu-ipxe
|
|
Requires: qemu-seabios
|
|
Requires: qemu-sgabios
|
|
Requires: qemu-vgabios
|
|
|
|
%description x86
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package provides i386 and x86_64 emulation.
|
|
|
|
%package ppc
|
|
Summary: Universal CPU emulator -- Power Architecture
|
|
Group: System/Emulators/PC
|
|
Requires: qemu = %version
|
|
Recommends: qemu-ipxe
|
|
Recommends: qemu-vgabios
|
|
|
|
%description ppc
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package provides ppc and ppc64 emulation.
|
|
|
|
%package s390
|
|
Summary: Universal CPU emulator -- S/390
|
|
Group: System/Emulators/PC
|
|
Requires: qemu = %version
|
|
|
|
%description s390
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package provides s390x emulation.
|
|
|
|
%package arm
|
|
Summary: Universal CPU emulator -- ARM
|
|
Group: System/Emulators/PC
|
|
Requires: qemu = %version
|
|
Recommends: qemu-ipxe
|
|
Recommends: qemu-vgabios
|
|
|
|
%description arm
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package provides arm emulation.
|
|
|
|
%package extra
|
|
Summary: Universal CPU emulator -- extra architectures
|
|
Group: System/Emulators/PC
|
|
Requires: qemu = %version
|
|
Recommends: qemu-ipxe
|
|
Recommends: qemu-vgabios
|
|
|
|
%description extra
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package provides some lesser used emulations, such as moxie and xtensa.
|
|
|
|
%if %{legacy_qemu_kvm}
|
|
%package kvm
|
|
Url: http://www.linux-kvm.org
|
|
Summary: Kernel-based Virtual Machine
|
|
Group: System/Emulators/PC
|
|
%ifarch %ix86 x86_64
|
|
Requires: qemu-x86 = %version
|
|
%endif
|
|
%ifarch s390x
|
|
Requires: qemu-s390 = %version
|
|
%endif
|
|
Provides: kvm = %version
|
|
Obsoletes: kvm < %version
|
|
|
|
%description kvm
|
|
KVM (Kernel-based Virtual Machine) is virtualization software for Linux.
|
|
It is designed to leverage the hardware virtualization features included
|
|
with various architectures. QEMU uses KVM for CPU virtualization, while
|
|
still providing emulation of other system components. This package is
|
|
not required for KVM usage, but rather facilitates its usage with tools
|
|
derived from the legacy kvm package.
|
|
%endif
|
|
|
|
%package lang
|
|
Summary: Universal CPU emulator -- Translations
|
|
Group: System/Emulators/PC
|
|
|
|
%description lang
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains translations.
|
|
|
|
# Modules need to match {qemu-system-*,qemu-img} version.
|
|
# We cannot have qemu and qemu-tools require them in the right version,
|
|
# as that would drag in the dependencies the modules are supposed to avoid.
|
|
# Nor can we have modules require the right version of qemu and qemu-tools
|
|
# as Xen reuses our qemu-tools but does not want our qemu and qemu-x86.
|
|
%define qemu_module_conflicts \
|
|
Conflicts: qemu < %version-%release \
|
|
Conflicts: qemu > %version-%release \
|
|
Conflicts: qemu-tools < %version-%release \
|
|
Conflicts: qemu-tools > %version-%release
|
|
|
|
%package block-curl
|
|
Summary: Universal CPU emulator -- cURL block support
|
|
Group: System/Emulators/PC
|
|
Provides: qemu:%_libdir/%name/block-curl.so
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-curl
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing network-based image files
|
|
over a network connection from qemu-img tool and QEMU system emulation.
|
|
|
|
%package block-dmg
|
|
Summary: Universal CPU emulator -- DMG block support
|
|
Group: System/Emulators/PC
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-dmg
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing Mac OS X image files
|
|
from qemu-img tool and QEMU system emulation.
|
|
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
%package block-gluster
|
|
Summary: Universal CPU emulator -- GlusterFS block support
|
|
Group: System/Emulators/PC
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-gluster
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing network-based image files
|
|
over a GlusterFS network connection from qemu-img tool and QEMU system emulation.
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
%package block-iscsi
|
|
Summary: Universal CPU emulator -- iSCSI block support
|
|
Group: System/Emulators/PC
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-iscsi
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing network-based image files
|
|
over an iSCSI network connection from qemu-img tool and QEMU system emulation.
|
|
%endif
|
|
|
|
%if 0%{?with_rbd}
|
|
%package block-rbd
|
|
Summary: Universal CPU emulator -- Ceph (rbd) block support
|
|
Group: System/Emulators/PC
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-rbd
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing ceph (rbd,rados)
|
|
image files.
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 1140
|
|
%package block-ssh
|
|
Summary: Universal CPU emulator -- SSH block support
|
|
Group: System/Emulators/PC
|
|
%{qemu_module_conflicts}
|
|
|
|
%description block-ssh
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains a module for accessing network-based image files
|
|
over an SSH network connection from qemu-img tool and QEMU system emulation.
|
|
%endif
|
|
|
|
%package tools
|
|
Summary: Universal CPU emulator -- Tools
|
|
Group: System/Emulators/PC
|
|
Provides: qemu:%_libexecdir/qemu-bridge-helper
|
|
Requires(pre): permissions
|
|
Requires(pre): shadow
|
|
Recommends: qemu-block-curl
|
|
%if 0%{?with_rbd}
|
|
Recommends: qemu-block-rbd
|
|
%endif
|
|
|
|
%description tools
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains various tools, including a bridge helper.
|
|
|
|
%package guest-agent
|
|
Summary: Universal CPU emulator -- Guest agent
|
|
Group: System/Emulators/PC
|
|
Provides: qemu:%_bindir/qemu-ga
|
|
Requires(pre): shadow
|
|
Requires(post): udev
|
|
%if 0%{?with_systemd}
|
|
%{?systemd_requires}
|
|
%endif
|
|
|
|
%description guest-agent
|
|
QEMU is an extremely well-performing CPU emulator that allows you to
|
|
choose between simulating an entire system and running userspace
|
|
binaries for different architectures under your native operating
|
|
system. It currently emulates x86, ARM, PowerPC and SPARC CPUs as well
|
|
as PC and PowerMac systems.
|
|
|
|
This sub-package contains the guest agent.
|
|
|
|
%ifarch %ix86 x86_64
|
|
%package seabios
|
|
Summary: X86 BIOS for QEMU
|
|
Group: System/Emulators/PC
|
|
Version: 1.10.2
|
|
Release: 0
|
|
%if 0%{?suse_version} > %{noarch_supported}
|
|
BuildArch: noarch
|
|
%endif
|
|
Conflicts: qemu < 1.6.0
|
|
|
|
%description seabios
|
|
SeaBIOS is an open source implementation of a 16bit x86 BIOS. SeaBIOS
|
|
is the default BIOS for QEMU.
|
|
|
|
%package vgabios
|
|
Summary: VGA BIOSes for QEMU
|
|
Group: System/Emulators/PC
|
|
Version: 1.10.2
|
|
Release: 0
|
|
%if 0%{?suse_version} > %{noarch_supported}
|
|
BuildArch: noarch
|
|
%endif
|
|
Conflicts: qemu < 1.6.0
|
|
|
|
%description vgabios
|
|
VGABIOS provides the video ROM BIOSes for the following variants of VGA
|
|
emulated devices: Std VGA, QXL, Cirrus CLGD 5446 and VMware emulated
|
|
video card.
|
|
|
|
%package sgabios
|
|
Summary: Serial Graphics Adapter BIOS for QEMU
|
|
Group: System/Emulators/PC
|
|
Version: 8
|
|
Release: 0
|
|
%if 0%{?suse_version} > %{noarch_supported}
|
|
BuildArch: noarch
|
|
%endif
|
|
Conflicts: qemu < 1.6.0
|
|
|
|
%description sgabios
|
|
The Google Serial Graphics Adapter BIOS or SGABIOS provides a means for legacy
|
|
x86 software to communicate with an attached serial console as if a video card
|
|
were attached.
|
|
|
|
%package ipxe
|
|
Summary: PXE ROMs for QEMU NICs
|
|
Group: System/Emulators/PC
|
|
Version: 1.0.0
|
|
Release: 0
|
|
%if 0%{?suse_version} > %{noarch_supported}
|
|
BuildArch: noarch
|
|
%endif
|
|
Conflicts: qemu < 1.6.0
|
|
|
|
%description ipxe
|
|
Preboot Execution Environment (PXE) ROM support for various emulated network
|
|
adapters available with QEMU.
|
|
%endif
|
|
|
|
%if 0%{?with_systemd} && 0%{?is_opensuse}
|
|
%package ksm
|
|
Summary: Kernel Samepage Merging services
|
|
Group: System/Emulators/PC
|
|
|
|
%description ksm
|
|
Kernel Samepage Merging (KSM) is a memory-saving de-duplication feature,
|
|
that merges anonymous (private) pages (not pagecache ones).
|
|
|
|
This package provides a service file for starting and stopping KSM.
|
|
%endif
|
|
|
|
%endif # !qemu-testsuite
|
|
|
|
%prep
|
|
%setup -q -n qemu-2.10.0
|
|
%patch0001 -p1
|
|
%patch0002 -p1
|
|
%patch0003 -p1
|
|
%patch0004 -p1
|
|
%patch0005 -p1
|
|
%patch0006 -p1
|
|
%patch0007 -p1
|
|
%patch0008 -p1
|
|
%patch0009 -p1
|
|
%patch0010 -p1
|
|
%patch0011 -p1
|
|
%patch0012 -p1
|
|
%patch0013 -p1
|
|
%patch0014 -p1
|
|
%patch0015 -p1
|
|
%patch0016 -p1
|
|
%patch0017 -p1
|
|
%patch0018 -p1
|
|
%patch0019 -p1
|
|
%patch0020 -p1
|
|
%patch0021 -p1
|
|
%patch0022 -p1
|
|
%patch0023 -p1
|
|
%patch0024 -p1
|
|
%patch0025 -p1
|
|
%patch0026 -p1
|
|
%patch0027 -p1
|
|
%patch0028 -p1
|
|
%patch0029 -p1
|
|
%patch0030 -p1
|
|
%patch0031 -p1
|
|
%patch0032 -p1
|
|
%patch0033 -p1
|
|
%patch0034 -p1
|
|
%patch0035 -p1
|
|
|
|
pushd roms/ipxe
|
|
%patch1100 -p1
|
|
%if 0%{?suse_version} <= 1320
|
|
%patch1101 -p1
|
|
%endif
|
|
popd
|
|
|
|
pushd roms/sgabios
|
|
%patch1200 -p1
|
|
popd
|
|
|
|
pushd roms/SLOF
|
|
popd
|
|
|
|
# as a safeguard, delete the firmware files that we intend to build
|
|
for i in %built_firmware
|
|
do
|
|
unlink pc-bios/$i
|
|
done
|
|
|
|
%build
|
|
echo '%{version}' > roms/seabios/.version
|
|
./configure \
|
|
--prefix=%_prefix \
|
|
--sysconfdir=%_sysconfdir \
|
|
--libdir=%_libdir \
|
|
--libexecdir=%_libexecdir \
|
|
--localstatedir=%_localstatedir \
|
|
--docdir=%_docdir/qemu \
|
|
--extra-cflags="%{optflags}" \
|
|
--disable-stack-protector \
|
|
--disable-strip \
|
|
--with-pkgversion="%(echo '%{distribution}' | sed 's/ (.*)//')" \
|
|
--enable-system --disable-linux-user \
|
|
--enable-tools --enable-guest-agent \
|
|
--enable-modules \
|
|
--enable-pie \
|
|
--enable-docs \
|
|
--audio-drv-list="pa alsa sdl oss" \
|
|
--enable-attr \
|
|
--enable-bluez \
|
|
%if 0%{?suse_version} >= 1130
|
|
--enable-brlapi \
|
|
%else
|
|
--disable-brlapi \
|
|
%endif
|
|
--enable-bzip2 \
|
|
--enable-cap-ng \
|
|
--enable-coroutine-pool \
|
|
--enable-curl \
|
|
--enable-curses \
|
|
--enable-fdt \
|
|
%if 0
|
|
# Let it auto-detect these based on gnutls - uses libnettle in Tumbleweed but unavailable in SLE11
|
|
--enable-gcrypt \
|
|
--disable-nettle \
|
|
%endif
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
--enable-glusterfs \
|
|
%else
|
|
--disable-glusterfs \
|
|
%endif
|
|
--enable-gnutls \
|
|
--enable-gtk \
|
|
%if 0%{?suse_version} >= 1220
|
|
--with-gtkabi=3.0 \
|
|
%else
|
|
--with-gtkabi=2.0 \
|
|
%endif
|
|
--disable-hax \
|
|
--disable-jemalloc \
|
|
%if %{kvm_available}
|
|
--enable-kvm \
|
|
%else
|
|
--disable-kvm \
|
|
%endif
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
--enable-libiscsi \
|
|
%else
|
|
--disable-libiscsi \
|
|
%endif
|
|
--disable-libnfs \
|
|
%if 0%{?suse_version} > 1140
|
|
--enable-libssh2 \
|
|
%else
|
|
--disable-libssh2 \
|
|
%endif
|
|
%if 0%{?suse_version} > 1310
|
|
--enable-libusb \
|
|
%else
|
|
--disable-libusb \
|
|
%endif
|
|
--enable-linux-aio \
|
|
--enable-lzo \
|
|
--disable-netmap \
|
|
%ifarch %ix86 x86_64
|
|
%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
|
|
--enable-numa \
|
|
%else
|
|
--disable-numa \
|
|
%endif
|
|
%else
|
|
%ifarch aarch64
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
--enable-numa \
|
|
%endif
|
|
%else
|
|
--disable-numa \
|
|
%endif
|
|
%else
|
|
%ifarch %arm s390x
|
|
--disable-numa \
|
|
%else
|
|
--enable-numa \
|
|
%endif
|
|
%endif
|
|
%if 0%{?suse_version} >= 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
--enable-opengl \
|
|
%endif
|
|
--with-system-pixman \
|
|
%if 0%{?with_rbd}
|
|
--enable-rbd \
|
|
%else
|
|
--disable-rbd \
|
|
%endif
|
|
%if 0%{?suse_version} >= 1315
|
|
--enable-rdma \
|
|
%else
|
|
--disable-rdma \
|
|
%endif
|
|
--enable-replication \
|
|
--enable-sdl \
|
|
%if 0%{?suse_version} >= 1320
|
|
--with-sdlabi=2.0 \
|
|
%else
|
|
--with-sdlabi=1.2 \
|
|
%endif
|
|
%if 0%{?with_seccomp}
|
|
--enable-seccomp \
|
|
%else
|
|
--disable-seccomp \
|
|
%endif
|
|
%if 0%{?is_opensuse}
|
|
--enable-smartcard \
|
|
%else
|
|
--disable-smartcard \
|
|
%endif
|
|
%if 0%{?suse_version} >= 1310
|
|
--enable-snappy \
|
|
%else
|
|
--disable-snappy \
|
|
%endif
|
|
%if 0%{?with_spice}
|
|
--enable-spice \
|
|
%else
|
|
--disable-spice \
|
|
%endif
|
|
--disable-tcmalloc \
|
|
--enable-tpm \
|
|
--enable-usb-redir \
|
|
--enable-vde \
|
|
--enable-vhost-net \
|
|
%if 0%{?suse_version} >= 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
--enable-virglrenderer \
|
|
%endif
|
|
--enable-virtfs \
|
|
--enable-vnc \
|
|
--enable-vnc-jpeg \
|
|
--enable-vnc-png \
|
|
--enable-vnc-sasl \
|
|
%if 0%{?suse_version} == 1320
|
|
--disable-vte \
|
|
%else
|
|
--enable-vte \
|
|
%endif
|
|
%ifarch x86_64
|
|
--enable-xen \
|
|
--enable-xen-pci-passthrough \
|
|
--enable-xen-pv-domain-build \
|
|
%else
|
|
--disable-xen \
|
|
%endif
|
|
--enable-xfsctl \
|
|
|
|
%if "%{name}" != "qemu-testsuite"
|
|
|
|
make %{?_smp_mflags} V=1
|
|
|
|
# Firmware
|
|
|
|
%ifarch s390x
|
|
for i in %s390x_default_built_firmware
|
|
do
|
|
cp pc-bios/s390-ccw/$i pc-bios/
|
|
done
|
|
%endif
|
|
|
|
%ifarch ppc64
|
|
for i in %ppc64_only_default_built_firmware
|
|
do
|
|
cp pc-bios/spapr-rtas/$i pc-bios/
|
|
done
|
|
%endif
|
|
|
|
%ifarch %ix86 x86_64
|
|
for i in %x86_default_built_firmware
|
|
do
|
|
cp pc-bios/optionrom/$i pc-bios/
|
|
done
|
|
%ifarch x86_64
|
|
for i in %x86_64_only_default_built_firmware
|
|
do
|
|
cp pc-bios/optionrom/$i pc-bios/
|
|
done
|
|
%endif
|
|
%endif
|
|
|
|
%if %{build_x86_firmware_from_source}
|
|
make %{?_smp_mflags} -C roms bios
|
|
|
|
make %{?_smp_mflags} -C roms seavgabios
|
|
make %{?_smp_mflags} -C roms pxerom
|
|
%ifarch x86_64
|
|
make %{?_smp_mflags} -C roms efirom
|
|
%endif
|
|
make -C roms sgabios
|
|
|
|
%if %{force_fit_virtio_pxe_rom}
|
|
pushd roms/ipxe
|
|
patch -p1 < %{SOURCE301}
|
|
popd
|
|
make %{?_smp_mflags} -C roms pxerom_variants=virtio pxerom_targets=1af41000 NO_WERROR=1 pxerom
|
|
%endif
|
|
|
|
# enforce pxe rom sizes for migration compatability from SLE 11 SP3 forward
|
|
# the following need to be > 64K
|
|
%define supported_nics_large {e1000 rtl8139}
|
|
# the following need to be <= 64K
|
|
%define supported_nics_small {virtio}
|
|
# Though not required, make unsupported pxe roms migration compatable as well
|
|
%define unsupported_nics {eepro100 ne2k_pci pcnet}
|
|
|
|
for i in %supported_nics_large %unsupported_nics
|
|
do
|
|
if test "`stat -c '%s' pc-bios/pxe-$i.rom`" -gt "131072" ; then
|
|
echo "pxe rom is too large"
|
|
exit 1
|
|
fi
|
|
if test "`stat -c '%s' pc-bios/pxe-$i.rom`" -le "65536" ; then
|
|
./roms/ipxe/src/util/padimg.pl pc-bios/pxe-$i.rom -s 65536 -b 255
|
|
echo -ne "SEGMENT OVERAGE\0" >> pc-bios/pxe-$i.rom
|
|
fi
|
|
done
|
|
for i in %supported_nics_small
|
|
do
|
|
if test "`stat -c '%s' pc-bios/pxe-$i.rom`" -gt "65536" ; then
|
|
echo "pxe rom is too large"
|
|
exit 1
|
|
fi
|
|
done
|
|
%endif
|
|
|
|
%if %{build_slof_from_source}
|
|
make %{?_smp_mflags} -C roms slof
|
|
%endif
|
|
|
|
%else # qemu-testsuite
|
|
|
|
ln -s %{_bindir}/qemu-img qemu-img
|
|
ln -s %{_bindir}/qemu-ga qemu-ga
|
|
ln -s %{_bindir}/qemu-io qemu-io
|
|
|
|
for i in %built_firmware
|
|
do
|
|
ln -s %{_datadir}/qemu/$i pc-bios/$i
|
|
done
|
|
|
|
for conf in default-configs/*-softmmu.mak; do
|
|
arch=`echo "$conf" | sed -e 's|default-configs/\(.*\)-softmmu.mak|\1|g'`
|
|
ln -s %{_bindir}/qemu-system-$arch $arch-softmmu/qemu-system-$arch
|
|
done
|
|
|
|
# Compile the QOM test binary first, so that ...
|
|
|
|
touch -r config-host.mak pc-bios
|
|
make tests/qom-test %{?_smp_mflags} V=1
|
|
# Firmware
|
|
# ... make comes in fresh and has lots of address space (needed for 32bit, bsc#957379)
|
|
%if 0%{?suse_version} >= 1310
|
|
make check-report.html V=1
|
|
%else
|
|
make check-report.xml V=1
|
|
%endif
|
|
|
|
%endif
|
|
|
|
%check
|
|
%if "%{name}" == "qemu-testsuite"
|
|
|
|
%ifnarch %ix86 x64_64
|
|
export QEMU_PROG=%{_bindir}/qemu-system-x86_64
|
|
%endif
|
|
export QEMU_IMG_PROG=%{_bindir}/qemu-img
|
|
export QEMU_IO_PROG=%{_bindir}/qemu-io
|
|
export QEMU_NBD_PROG=%{_bindir}/qemu-nbd
|
|
# make check-block would rebuild qemu-img and qemu-io
|
|
make tests/qemu-iotests/socket_scm_helper V=1
|
|
pushd tests/qemu-iotests
|
|
# -qcow 001 seems to hang?
|
|
# TODO investigate hangs and failures
|
|
#for fmt in -raw -bochs -cloop -parallels -qcow2 -qed -vdi -vpc -vhdx -vmdk; do
|
|
# ./check -v -T $fmt -file -g quick || true
|
|
#done
|
|
popd
|
|
|
|
# Create minimal gzip format file
|
|
echo "Test" > test.txt
|
|
cat test.txt | gzip - > test.gz
|
|
# Check qemu-img info output (bsc#945778)
|
|
format=`qemu-img info test.gz | grep "file format:" | cut -d ':' -f 2 | tr -d '[:space:]'`
|
|
[ "$format" == "raw" ] || false
|
|
|
|
# Create minimal tar format file
|
|
tar cf test.tar test.txt
|
|
# Check qemu-img info output (bsc#945778)
|
|
format=`qemu-img info test.tar | grep "file format:" | cut -d ':' -f 2 | tr -d '[:space:]'`
|
|
[ "$format" == "raw" ] || false
|
|
|
|
%endif # qemu-testsuite
|
|
|
|
%install
|
|
%if "%{name}" != "qemu-testsuite"
|
|
|
|
touch -r config-host.mak pc-bios
|
|
make install DESTDIR=%{buildroot}
|
|
%ifnarch %ix86 x86_64
|
|
for f in acpi-dsdt.aml %{x86_extra_built_firmware_list} \
|
|
%{x86_64_only_extra_built_firmware_list}; do
|
|
unlink %{buildroot}%{_datadir}/%name/$f
|
|
done
|
|
%endif
|
|
%find_lang %name
|
|
install -D -m 644 %{SOURCE302} %{buildroot}%{_sysconfdir}/qemu/bridge.conf
|
|
install -D -m 755 %{SOURCE2} %{buildroot}/usr/share/qemu/qemu-ifup
|
|
install -D -p -m 0644 %{SOURCE8} %{buildroot}%{_udevrulesdir}/80-qemu-ga.rules
|
|
%if 0%{?is_opensuse} == 0
|
|
install -D -m 0644 %{SOURCE12} %{buildroot}%{_docdir}/qemu-x86/supported.txt
|
|
install -D -m 0644 %{SOURCE13} %{buildroot}%{_docdir}/qemu-s390/supported.txt
|
|
install -D -m 0644 %{SOURCE14} %{buildroot}%{_docdir}/qemu-arm/supported.txt
|
|
install -D -m 0644 %{SOURCE15} %{buildroot}%{_docdir}/qemu-ppc/supported.txt
|
|
%endif
|
|
# install supportconfig plugin
|
|
mkdir -p %{buildroot}%{_libexecdir}/supportconfig/plugins
|
|
install -D -m 0755 %{SOURCE16} %{buildroot}%{_libexecdir}/supportconfig/plugins/qemu
|
|
%if %{legacy_qemu_kvm}
|
|
cat > %{buildroot}%{_bindir}/qemu-kvm << 'EOF'
|
|
#!/bin/sh
|
|
|
|
%ifarch s390x
|
|
exec %{_bindir}/qemu-system-s390x -machine accel=kvm "$@"
|
|
%else
|
|
exec %{_bindir}/qemu-system-x86_64 -machine accel=kvm "$@"
|
|
%endif
|
|
EOF
|
|
chmod 755 %{buildroot}%{_bindir}/qemu-kvm
|
|
install -D -m 644 %{SOURCE4} %{buildroot}%{_mandir}/man1/qemu-kvm.1.gz
|
|
%ifarch s390x
|
|
mkdir -p %{buildroot}%{_sysconfdir}/sysctl.d
|
|
cat > %{buildroot}%{_sysconfdir}/sysctl.d/50-allow-kvm-on-s390x.conf <<- 'EOF'
|
|
# To allow KVM to run on s390x, we need to set the sysctl below
|
|
vm.allocate_pgste = 1
|
|
EOF
|
|
chmod 644 %{buildroot}%{_sysconfdir}/sysctl.d/50-allow-kvm-on-s390x.conf
|
|
%if 0%{?is_opensuse} == 0
|
|
install -d %{buildroot}%{_docdir}/qemu-kvm
|
|
ln -s ../qemu-s390/supported.txt %{buildroot}%{_docdir}/qemu-kvm/kvm-supported.txt
|
|
%endif
|
|
%else
|
|
%if 0%{?is_opensuse} == 0
|
|
install -d %{buildroot}%{_docdir}/qemu-kvm
|
|
ln -s ../qemu-x86/supported.txt %{buildroot}%{_docdir}/qemu-kvm/kvm-supported.txt
|
|
%endif
|
|
%endif
|
|
%endif
|
|
%if %{kvm_available}
|
|
%if 0%{?suse_version} <= 1320
|
|
install -D -m 755 %{SOURCE3} %{buildroot}%{_bindir}/kvm_stat
|
|
install -D -m 644 %{SOURCE11} %{buildroot}%{_mandir}/man1/kvm_stat.1.gz
|
|
%endif
|
|
%if 0%{?suse_version} >= 1230
|
|
install -D -m 644 %{SOURCE1} %{buildroot}%{_udevrulesdir}/80-kvm.rules
|
|
%else
|
|
%ifarch %ix86 x86_64
|
|
install -D -m 644 %{SOURCE7} %{buildroot}%{_udevrulesdir}/60-kvm.rules
|
|
%else
|
|
install -D -m 644 %{SOURCE5} %{buildroot}%{_udevrulesdir}/60-kvm.rules
|
|
%endif
|
|
%endif
|
|
%endif
|
|
%if 0%{?with_systemd}
|
|
install -D -p -m 0644 %{SOURCE9} %{buildroot}%{_unitdir}/qemu-ga.service
|
|
%if 0%{?is_opensuse}
|
|
install -D -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/ksm.service
|
|
%endif
|
|
%ifarch s390x
|
|
install -D -m 0644 %{SOURCE10} %{buildroot}%{_libexecdir}/modules-load.d/kvm.conf
|
|
%endif
|
|
%endif
|
|
%fdupes -s %{buildroot}
|
|
|
|
%else # qemu-testsuite
|
|
|
|
%if 0%{?suse_version} >= 1310
|
|
install -D -m 644 check-report.html %{buildroot}%{_datadir}/qemu/check-report.html
|
|
%endif
|
|
install -D -m 644 check-report.xml %{buildroot}%{_datadir}/qemu/check-report.xml
|
|
|
|
%endif
|
|
|
|
%if "%{name}" != "qemu-testsuite"
|
|
|
|
%pre
|
|
%{_bindir}/getent group kvm >/dev/null || %{_sbindir}/groupadd -r kvm 2>/dev/null
|
|
%{_bindir}/getent group qemu >/dev/null || %{_sbindir}/groupadd -r qemu 2>/dev/null
|
|
%{_bindir}/getent passwd qemu >/dev/null || \
|
|
%{_sbindir}/useradd -r -g qemu -G kvm -d / -s /sbin/nologin \
|
|
-c "qemu user" qemu
|
|
|
|
%if %{kvm_available}
|
|
%post
|
|
# Do not execute operations affecting host devices while running in a chroot
|
|
if [ $(stat -L -c "%i" /proc/1/root/) = $(stat -L -c "%i" /) ]; then
|
|
setfacl --remove-all /dev/kvm &> /dev/null || :
|
|
%if 0%{?with_systemd}
|
|
%ifarch s390x
|
|
if [ -c /dev/kvm ]; then
|
|
%{_bindir}/chmod 666 /dev/kvm
|
|
%{_bindir}/chgrp kvm /dev/kvm
|
|
fi
|
|
%endif
|
|
%udev_rules_update
|
|
%_bindir/udevadm trigger -y kvm || :
|
|
%else
|
|
/sbin/udevadm control --reload-rules || :
|
|
/sbin/udevadm trigger -y kvm || :
|
|
%endif
|
|
%ifarch s390x
|
|
sysctl vm.allocate_pgste=1 || :
|
|
%endif
|
|
fi
|
|
%endif
|
|
|
|
%if 0%{?suse_version} >= 1130
|
|
%pre tools
|
|
%{_bindir}/getent group kvm >/dev/null || %{_sbindir}/groupadd -r kvm 2>/dev/null
|
|
%post tools
|
|
%set_permissions %_libexecdir/qemu-bridge-helper
|
|
|
|
%verifyscript tools
|
|
%verify_permissions %_libexecdir/qemu-bridge-helper
|
|
%endif
|
|
|
|
%pre guest-agent
|
|
%{_bindir}/getent group kvm >/dev/null || %{_sbindir}/groupadd -r kvm 2>/dev/null
|
|
%if 0%{?with_systemd}
|
|
%service_add_pre qemu-ga.service
|
|
|
|
%preun guest-agent
|
|
%service_del_preun qemu-ga.service
|
|
|
|
%post guest-agent
|
|
%service_add_post qemu-ga.service
|
|
if [ -e /dev/virtio-ports/org.qemu.guest_agent.0 ]; then
|
|
/usr/bin/systemctl start qemu-ga.service || :
|
|
fi
|
|
|
|
%postun guest-agent
|
|
%service_del_postun qemu-ga.service
|
|
|
|
%if 0%{?is_opensuse}
|
|
%pre ksm
|
|
%service_add_pre ksm.service
|
|
|
|
%post ksm
|
|
%service_add_post ksm.service
|
|
|
|
%preun ksm
|
|
%service_del_preun ksm.service
|
|
|
|
%postun ksm
|
|
%service_del_postun ksm.service
|
|
%endif
|
|
%endif
|
|
|
|
%endif # !qemu-testsuite
|
|
|
|
%files
|
|
%defattr(-, root, root)
|
|
%if "%{name}" != "qemu-testsuite"
|
|
%doc COPYING COPYING.LIB Changelog README VERSION
|
|
%_docdir/%name/qemu-doc.txt
|
|
%_docdir/%name/qemu-doc.html
|
|
%_docdir/%name/qemu-qmp-ref.txt
|
|
%_docdir/%name/qemu-qmp-ref.html
|
|
%_docdir/%name/qemu-ga-ref.txt
|
|
%_docdir/%name/qemu-ga-ref.html
|
|
%_mandir/man1/qemu.1.gz
|
|
%_mandir/man7/qemu-qmp-ref.7.gz
|
|
%_mandir/man7/qemu-ga-ref.7.gz
|
|
%dir %_datadir/%name
|
|
%_datadir/%name/keymaps
|
|
%_datadir/%name/trace-events-all
|
|
%_datadir/%name/qemu-icon.bmp
|
|
%_datadir/%name/qemu_logo_no_text.svg
|
|
%dir %_sysconfdir/%name
|
|
%_datadir/%name/qemu-ifup
|
|
%dir %_libexecdir/supportconfig
|
|
%dir %_libexecdir/supportconfig/plugins
|
|
%_libexecdir/supportconfig/plugins/qemu
|
|
%if %{kvm_available}
|
|
%if 0%{?suse_version} <= 1320
|
|
%_bindir/kvm_stat
|
|
%doc %_mandir/man1/kvm_stat.1.gz
|
|
%endif
|
|
%if 0%{?suse_version} >= 1230
|
|
%{_udevrulesdir}/80-kvm.rules
|
|
%else
|
|
%{_udevrulesdir}/60-kvm.rules
|
|
%endif
|
|
%ifarch s390x
|
|
%{_sysconfdir}/sysctl.d/50-allow-kvm-on-s390x.conf
|
|
%if 0%{?with_systemd}
|
|
%_libexecdir/modules-load.d/kvm.conf
|
|
%endif
|
|
%endif
|
|
%endif
|
|
|
|
%files x86
|
|
%defattr(-, root, root)
|
|
%_bindir/qemu-system-i386
|
|
%_bindir/qemu-system-x86_64
|
|
%_datadir/%name/kvmvapic.bin
|
|
%_datadir/%name/linuxboot.bin
|
|
%_datadir/%name/linuxboot_dma.bin
|
|
%_datadir/%name/multiboot.bin
|
|
%if 0%{?is_opensuse} == 0
|
|
%dir %_docdir/qemu-x86
|
|
%_docdir/qemu-x86/supported.txt
|
|
%endif
|
|
|
|
%files ppc
|
|
%defattr(-, root, root)
|
|
%_bindir/qemu-system-ppc
|
|
%_bindir/qemu-system-ppc64
|
|
%_bindir/qemu-system-ppcemb
|
|
%_datadir/%name/ppc_rom.bin
|
|
%_datadir/%name/openbios-ppc
|
|
%_datadir/%name/slof.bin
|
|
%_datadir/%name/spapr-rtas.bin
|
|
%_datadir/%name/u-boot.e500
|
|
%_datadir/%name/bamboo.dtb
|
|
%_datadir/%name/petalogix-ml605.dtb
|
|
%_datadir/%name/skiboot.lid
|
|
%_datadir/%name/qemu_vga.ndrv
|
|
%_datadir/%name/s390-netboot.img
|
|
%if 0%{?is_opensuse} == 0
|
|
%dir %_docdir/qemu-ppc
|
|
%_docdir/qemu-ppc/supported.txt
|
|
%endif
|
|
|
|
%files s390
|
|
%defattr(-, root, root)
|
|
%_bindir/qemu-system-s390x
|
|
%_datadir/%name/s390-ccw.img
|
|
%if 0%{?is_opensuse} == 0
|
|
%dir %_docdir/qemu-s390
|
|
%_docdir/qemu-s390/supported.txt
|
|
%endif
|
|
|
|
%files arm
|
|
%defattr(-, root, root)
|
|
%_bindir/qemu-system-arm
|
|
%_bindir/qemu-system-aarch64
|
|
%if 0%{?is_opensuse} == 0
|
|
%dir %_docdir/qemu-arm
|
|
%_docdir/qemu-arm/supported.txt
|
|
%endif
|
|
|
|
%files extra
|
|
%defattr(-, root, root)
|
|
%_bindir/qemu-system-alpha
|
|
%_bindir/qemu-system-cris
|
|
%_bindir/qemu-system-lm32
|
|
%_bindir/qemu-system-m68k
|
|
%_bindir/qemu-system-microblaze
|
|
%_bindir/qemu-system-microblazeel
|
|
%_bindir/qemu-system-mips
|
|
%_bindir/qemu-system-mipsel
|
|
%_bindir/qemu-system-mips64
|
|
%_bindir/qemu-system-mips64el
|
|
%_bindir/qemu-system-moxie
|
|
%_bindir/qemu-system-nios2
|
|
%_bindir/qemu-system-or1k
|
|
%_bindir/qemu-system-sh4
|
|
%_bindir/qemu-system-sh4eb
|
|
%_bindir/qemu-system-sparc
|
|
%_bindir/qemu-system-sparc64
|
|
%_bindir/qemu-system-tricore
|
|
%_bindir/qemu-system-unicore32
|
|
%_bindir/qemu-system-xtensa
|
|
%_bindir/qemu-system-xtensaeb
|
|
%_datadir/%name/palcode-clipper
|
|
%_datadir/%name/openbios-sparc32
|
|
%_datadir/%name/openbios-sparc64
|
|
%_datadir/%name/petalogix-s3adsp1800.dtb
|
|
%_datadir/%name/QEMU,cgthree.bin
|
|
%_datadir/%name/QEMU,tcx.bin
|
|
|
|
%if %{legacy_qemu_kvm}
|
|
%files kvm
|
|
%defattr(-,root,root)
|
|
%_bindir/qemu-kvm
|
|
%_mandir/man1/qemu-kvm.1.gz
|
|
%if 0%{?is_opensuse} == 0
|
|
%dir %_docdir/qemu-kvm
|
|
%_docdir/qemu-kvm/kvm-supported.txt
|
|
%endif
|
|
%endif
|
|
|
|
%files block-curl
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-curl.so
|
|
|
|
%files block-dmg
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-dmg-bz2.so
|
|
|
|
%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315
|
|
%files block-gluster
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-gluster.so
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
|
|
%files block-iscsi
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-iscsi.so
|
|
%endif
|
|
|
|
%if 0%{?with_rbd}
|
|
%files block-rbd
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-rbd.so
|
|
%endif
|
|
|
|
%if 0%{?suse_version} > 1140
|
|
%files block-ssh
|
|
%defattr(-, root, root)
|
|
%dir %_libdir/%name
|
|
%_libdir/%name/block-ssh.so
|
|
%endif
|
|
|
|
%files lang -f %name.lang
|
|
%defattr(-, root, root)
|
|
|
|
%ifarch %ix86 x86_64
|
|
%files seabios
|
|
%defattr(-, root, root)
|
|
%dir %_datadir/%name
|
|
%_datadir/%name/bios.bin
|
|
%_datadir/%name/bios-256k.bin
|
|
%_datadir/%name/acpi-dsdt.aml
|
|
|
|
%files vgabios
|
|
%defattr(-, root, root)
|
|
%dir %_datadir/%name
|
|
%_datadir/%name/vgabios.bin
|
|
%_datadir/%name/vgabios-cirrus.bin
|
|
%_datadir/%name/vgabios-qxl.bin
|
|
%_datadir/%name/vgabios-stdvga.bin
|
|
%_datadir/%name/vgabios-virtio.bin
|
|
%_datadir/%name/vgabios-vmware.bin
|
|
|
|
%files sgabios
|
|
%defattr(-, root, root)
|
|
%dir %_datadir/%name
|
|
%_datadir/%name/sgabios.bin
|
|
|
|
%files ipxe
|
|
%defattr(-, root, root)
|
|
%dir %_datadir/%name
|
|
%_datadir/%name/pxe-e1000.rom
|
|
%_datadir/%name/pxe-eepro100.rom
|
|
%_datadir/%name/pxe-pcnet.rom
|
|
%_datadir/%name/pxe-ne2k_pci.rom
|
|
%_datadir/%name/pxe-rtl8139.rom
|
|
%_datadir/%name/pxe-virtio.rom
|
|
%_datadir/%name/efi-e1000.rom
|
|
%_datadir/%name/efi-e1000e.rom
|
|
%_datadir/%name/efi-eepro100.rom
|
|
%_datadir/%name/efi-pcnet.rom
|
|
%_datadir/%name/efi-ne2k_pci.rom
|
|
%_datadir/%name/efi-rtl8139.rom
|
|
%_datadir/%name/efi-virtio.rom
|
|
%_datadir/%name/efi-vmxnet3.rom
|
|
%endif
|
|
|
|
%files tools
|
|
%defattr(-, root, root)
|
|
%_mandir/man1/qemu-img.1.gz
|
|
%_mandir/man1/virtfs-proxy-helper.1.gz
|
|
%_mandir/man8/qemu-nbd.8.gz
|
|
%_bindir/ivshmem-client
|
|
%_bindir/ivshmem-server
|
|
%_bindir/qemu-io
|
|
%_bindir/qemu-img
|
|
%_bindir/qemu-nbd
|
|
%_bindir/virtfs-proxy-helper
|
|
#%_bindir/vscclient
|
|
%verify(not mode) %attr(4750,root,kvm) %_libexecdir/qemu-bridge-helper
|
|
%dir %_sysconfdir/%name
|
|
%config %_sysconfdir/%name/bridge.conf
|
|
|
|
%files guest-agent
|
|
%defattr(-, root, root)
|
|
%_mandir/man8/qemu-ga.8.gz
|
|
%attr(755,root,kvm) %_bindir/qemu-ga
|
|
%if 0%{?with_systemd}
|
|
%{_unitdir}/qemu-ga.service
|
|
%endif
|
|
%{_udevrulesdir}/80-qemu-ga.rules
|
|
|
|
%if 0%{?with_systemd} && 0%{?is_opensuse}
|
|
%files ksm
|
|
%defattr(-, root, root)
|
|
%{_unitdir}/ksm.service
|
|
%endif
|
|
|
|
%else # qemu-testsuite
|
|
%_datadir/qemu/check-report.xml
|
|
%if 0%{?suse_version} >= 1310
|
|
%_datadir/qemu/check-report.html
|
|
%endif
|
|
%endif
|
|
|
|
%changelog
|