Group: Applications/Emulators
Source0: http://wiki.qemu-project.org/download/%{name}-%{version}.tar.bz2
# Source0-md5: 3a897d722457c5a895cd6ac79a28fda0
+Source2: qemu.binfmt
+# Loads kvm kernel modules at boot
+Source3: kvm-modules-load.conf
+# Creates /dev/kvm
+Source4: 80-kvm.rules
+# KSM control scripts
+Source5: ksm.service
+Source6: ksm.sysconfig
+Source7: ksmctl.c
+Source8: ksmtuned.service
+Source9: ksmtuned
+Source10: ksmtuned.conf
Source11: qemu-guest-agent.service
Source12: 99-qemu-guest-agent.rules
Patch0: %{name}-cflags.patch
BuildRequires: perl-tools-pod
BuildRequires: pkgconfig
%{?with_pulseaudio:BuildRequires: pulseaudio-devel}
-BuildRequires: rpmbuild(macros) >= 1.202
+BuildRequires: rpmbuild(macros) >= 1.644
BuildRequires: sed >= 4.0
%if %{with spice}
BuildRequires: spice-protocol >= 0.12.0
Summary: QEMU common files needed by all QEMU targets
Summary(pl.UTF-8): Wspólne pliki QEMU wymagane przez wszystkie środowiska QEMU
Group: Development/Tools
+Requires(post,preun,postun): systemd-units >= 38
Requires(postun): /usr/sbin/groupdel
Requires(postun): /usr/sbin/userdel
Requires(pre): /bin/id
Requires(pre): /usr/sbin/useradd
Requires: glib2 >= 1:2.12
Requires: libssh2 >= 1.2.8
+Requires: systemd-units >= 38
Provides: group(qemu)
Provides: user(qemu)
Obsoletes: qemu-kvm-common
Summary(pl.UTF-8): QEMU - emulacja trybu użytkownika środowisk qemu
Group: Development/Tools
Requires: %{name}-common = %{version}-%{release}
+Requires(post,postun): systemd-units >= 38
+Requires: systemd-units >= 38
Obsoletes: qemu-kvm-user
%description user
Group: Development/Tools
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
+Obsoletes: kvm
Obsoletes: qemu-kvm-system-x86
%description system-x86
--enable-vnc-png \
--enable-vnc-sasl \
--enable-vnc-tls \
+ --enable-kvm \
%{__enable_disable xen} \
--audio-drv-list="alsa%{?with_iss:,oss}%{?with_sdl:,sdl}%{?with_esd:,esd}%{?with_pulseaudio:,pa}" \
--interp-prefix=%{_libdir}/qemu/lib-%%M \
# rebuild patched vesa tables with additional widescreen modes.
%{__make} -C roms/vgabios stdvga-bios
+%{__cc} %{SOURCE7} %{rpmcflags} -o ksmctl
+
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{%{systemdunitdir},/usr/lib/binfmt.d} \
+ $RPM_BUILD_ROOT/etc/{sysconfig,udev/rules.d,modules-load.d} \
+ $RPM_BUILD_ROOT{%{_sysconfdir}/sasl,%{_sbindir}}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT \
EOF
+install -p qemu.sasl $RPM_BUILD_ROOT%{_sysconfdir}/sasl/qemu.conf
+
+%ifarch %{ix86} %{x8664}
+install scripts/kvm/kvm_stat $RPM_BUILD_ROOT%{_bindir}
+install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/modules-load.d/kvm.conf
+install -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d
+%endif
+
+install -p %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/ksm.service
+install -p %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/ksm
+install -p ksmctl $RPM_BUILD_ROOT%{_sbindir}
+
+install -p %{SOURCE8} $RPM_BUILD_ROOT%{systemdunitdir}/ksmtuned.service
+install -p %{SOURCE9} $RPM_BUILD_ROOT%{_sbindir}/ksmtuned
+install -p %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/ksmtuned.conf
+
# For the qemu-guest-agent subpackage install the systemd
# service and udev rules.
install -p %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}
install -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d
+for i in dummy \
+%ifnarch %{ix86} %{x8664}
+ qemu-i386 \
+%endif
+%ifnarch arm
+ qemu-arm \
+%endif
+%ifnarch ppc ppc64
+ qemu-ppc \
+%endif
+%ifnarch sparc sparc64
+ qemu-sparc \
+%endif
+%ifnarch sh4
+ qemu-sh4 \
+%endif
+; do
+ test $i = dummy && continue
+ grep /$i:\$ %{SOURCE2} > $RPM_BUILD_ROOT/usr/lib/binfmt.d/$i.conf
+done < %{SOURCE2}
+
# already packaged
%{__rm} $RPM_BUILD_ROOT%{_docdir}/qemu/qemu-{doc,tech}.html
%{__rm} $RPM_BUILD_ROOT%{_docdir}/qemu/qmp-commands.txt
rm -rf $RPM_BUILD_ROOT
%pre common
+%groupadd -g 160 kvm
%groupadd -g 276 qemu
-%useradd -u 276 -g qemu -c "QEMU User" qemu
+%useradd -u 276 -g qemu -G kvm -c "QEMU User" qemu
+
+%post common
+%systemd_post ksm.service
+%systemd_post ksmtuned.service
+
+%preun common
+%systemd_preun ksm.service
+%systemd_preun ksmtuned.service
%postun common
if [ "$1" = "0" ]; then
%userremove qemu
%groupremove qemu
+ %groupremove kvm
fi
+%systemd_reload
+
+%triggerpostun common -- qemu-common < 1.6.1-4
+%systemd_trigger ksm.service
+%systemd_trigger ksmtuned.service
+
+%post user
+%systemd_service_restart systemd-binfmt.service
+
+%postun user
+%systemd_service_restart systemd-binfmt.service
%post guest-agent
%systemd_reload
%doc README qemu-doc.html qemu-tech.html QMP/qmp-commands.txt
%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qemu-ifup
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/qemu/target-*.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/ksmtuned.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/sasl/qemu.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ksm
+%{systemdunitdir}/ksm.service
+%{systemdunitdir}/ksmtuned.service
%dir %{_sysconfdir}/qemu
%attr(755,root,root) %{_bindir}/virtfs-proxy-helper
%attr(755,root,root) %{_bindir}/qemu-nbd
%attr(755,root,root) %{_libdir}/qemu-bridge-helper
+%attr(755,root,root) %{_sbindir}/ksmctl
+%attr(755,root,root) %{_sbindir}/ksmtuned
%{_mandir}/man1/qemu.1*
%{_mandir}/man1/virtfs-proxy-helper.1*
%{_mandir}/man8/qemu-nbd.8*
%files user
%defattr(644,root,root,755)
+/usr/lib/binfmt.d/qemu-*.conf
%attr(755,root,root) %{_bindir}/qemu-alpha
%attr(755,root,root) %{_bindir}/qemu-arm
%attr(755,root,root) %{_bindir}/qemu-armeb
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/qemu-system-i386
%attr(755,root,root) %{_bindir}/qemu-system-x86_64
+%ifarch %{ix86} %{x8664}
+%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/kvm.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/80-kvm.rules
+%attr(755,root,root) %{_bindir}/kvm_stat
+%endif
%files system-xtensa
%defattr(644,root,root,755)