From 924ae799761503024fdf4c468e9d5422e575822d Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Wed, 8 Oct 2014 08:21:56 +0000 Subject: [PATCH] - from PLD --- 80-kvm.rules | 1 + 99-qemu-guest-agent.rules | 2 + ksm.service | 13 + ksm.sysconfig | 4 + ksmctl.c | 77 ++ ksmtuned | 133 +++ ksmtuned.conf | 21 + ksmtuned.service | 12 + kvm-modules-load.conf | 4 + libjpeg-boolean.patch | 12 + qemu-cflags.patch | 22 + qemu-guest-agent.service | 11 + qemu-kde_virtual_workspaces_hack.patch | 79 ++ qemu-system-libcacard.patch | 74 ++ qemu-whitelist.patch | 13 + qemu-xattr.patch | 23 + qemu.binfmt | 6 + qemu.spec | 1119 ++++++++++++++++++++++++ vgabios-widescreens.patch | 11 + 19 files changed, 1637 insertions(+) create mode 100644 80-kvm.rules create mode 100644 99-qemu-guest-agent.rules create mode 100644 ksm.service create mode 100644 ksm.sysconfig create mode 100644 ksmctl.c create mode 100644 ksmtuned create mode 100644 ksmtuned.conf create mode 100644 ksmtuned.service create mode 100644 kvm-modules-load.conf create mode 100644 libjpeg-boolean.patch create mode 100644 qemu-cflags.patch create mode 100644 qemu-guest-agent.service create mode 100644 qemu-kde_virtual_workspaces_hack.patch create mode 100644 qemu-system-libcacard.patch create mode 100644 qemu-whitelist.patch create mode 100644 qemu-xattr.patch create mode 100644 qemu.binfmt create mode 100644 qemu.spec create mode 100644 vgabios-widescreens.patch diff --git a/80-kvm.rules b/80-kvm.rules new file mode 100644 index 0000000..c2f7317 --- /dev/null +++ b/80-kvm.rules @@ -0,0 +1 @@ +KERNEL=="kvm", GROUP="kvm", MODE="0660" diff --git a/99-qemu-guest-agent.rules b/99-qemu-guest-agent.rules new file mode 100644 index 0000000..8a290ab --- /dev/null +++ b/99-qemu-guest-agent.rules @@ -0,0 +1,2 @@ +SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \ + TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service" diff --git a/ksm.service b/ksm.service new file mode 100644 index 0000000..dbffa6e --- /dev/null +++ b/ksm.service @@ -0,0 +1,13 @@ +[Unit] +Description=Kernel Samepage Merging +ConditionPathExists=/sys/kernel/mm/ksm + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile=-/etc/sysconfig/ksm +ExecStart=/usr/sbin/ksmctl start +ExecStop=/usr/sbin/ksmctl stop + +[Install] +WantedBy=multi-user.target diff --git a/ksm.sysconfig b/ksm.sysconfig new file mode 100644 index 0000000..d99656d --- /dev/null +++ b/ksm.sysconfig @@ -0,0 +1,4 @@ +# The maximum number of unswappable kernel pages +# which may be allocated by ksm (0 for unlimited) +# If unset, defaults to half of total memory +# KSM_MAX_KERNEL_PAGES= diff --git a/ksmctl.c b/ksmctl.c new file mode 100644 index 0000000..af39591 --- /dev/null +++ b/ksmctl.c @@ -0,0 +1,77 @@ +/* Start/stop KSM, for systemd. + * Copyright (C) 2009, 2011 Red Hat, Inc. + * Written by Paolo Bonzini . + * Based on the original sysvinit script by Dan Kenigsberg + * This file is distributed under the GNU General Public License, version 2 + * or later. */ + +#include +#include +#include +#include +#include +#include + +#define KSM_MAX_KERNEL_PAGES_FILE "/sys/kernel/mm/ksm/max_kernel_pages" +#define KSM_RUN_FILE "/sys/kernel/mm/ksm/run" + +char *program_name; + +int usage(void) +{ + fprintf(stderr, "Usage: %s {start|stop}\n", program_name); + return 1; +} + +int write_value(uint64_t value, char *filename) +{ + FILE *fp; + if (!(fp = fopen(filename, "w")) || + fprintf(fp, "%llu\n", (unsigned long long) value) == EOF || + fflush(fp) == EOF || + fclose(fp) == EOF) + return 1; + + return 0; +} + +uint64_t ksm_max_kernel_pages() +{ + char *var = getenv("KSM_MAX_KERNEL_PAGES"); + char *endptr; + uint64_t value; + if (var && *var) { + value = strtoll(var, &endptr, 0); + if (value < LLONG_MAX && !*endptr) + return value; + } + /* Unless KSM_MAX_KERNEL_PAGES is set, let KSM munch up to half of + * total memory. */ + return sysconf(_SC_PHYS_PAGES) / 2; +} + +int start(void) +{ + if (access(KSM_MAX_KERNEL_PAGES_FILE, R_OK) >= 0) + write_value(ksm_max_kernel_pages(), KSM_MAX_KERNEL_PAGES_FILE); + return write_value(1, KSM_RUN_FILE); +} + +int stop(void) +{ + return write_value(0, KSM_RUN_FILE); +} + +int main(int argc, char **argv) +{ + program_name = argv[0]; + if (argc < 2) { + return usage(); + } else if (!strcmp(argv[1], "start")) { + return start(); + } else if (!strcmp(argv[1], "stop")) { + return stop(); + } else { + return usage(); + } +} diff --git a/ksmtuned b/ksmtuned new file mode 100644 index 0000000..19b5718 --- /dev/null +++ b/ksmtuned @@ -0,0 +1,133 @@ +#!/bin/sh +# +# Copyright 2009 Red Hat, Inc. and/or its affiliates. +# Released under the GPL +# +# Author: Dan Kenigsberg +# un-bash-ed: Jan Rękorajski +# +# ksmtuned - a simple script that controls whether (and with what vigor) ksm +# should search for duplicated pages. +# +# starts ksm when memory commited to qemu processes exceeds a threshold, and +# make ksm work harder and harder untill memory load falls below that +# threshold. +# +# send SIGUSR1 to this process right after a new qemu process is started, or +# following its death, to retune ksm accordingly + +[ -f /etc/ksmtuned.conf ] && . /etc/ksmtuned.conf + +debug() { + if [ -n "$DEBUG" ]; then + s="`/bin/date`: $*" + [ -n "$LOGFILE" ] && echo "$s" >> "$LOGFILE" || echo "$s" + fi +} + +KSM_MONITOR_INTERVAL=${KSM_MONITOR_INTERVAL:-60} +KSM_NPAGES_BOOST=${KSM_NPAGES_BOOST:-300} +KSM_NPAGES_DECAY=${KSM_NPAGES_DECAY:--50} + +KSM_NPAGES_MIN=${KSM_NPAGES_MIN:-64} +KSM_NPAGES_MAX=${KSM_NPAGES_MAX:-1250} +# millisecond sleep between ksm scans for 16Gb server. Smaller servers sleep +# more, bigger sleep less. +KSM_SLEEP_MSEC=${KSM_SLEEP_MSEC:-10} + +KSM_THRES_COEF=${KSM_THRES_COEF:-20} +KSM_THRES_CONST=${KSM_THRES_CONST:-2048} + +total=`awk '/^MemTotal:/ {print $2}' /proc/meminfo` +debug total $total + +npages=0 +sleep=$(( $KSM_SLEEP_MSEC * 16 * 1024 * 1024 / $total )) +[ $sleep -le 10 ] && sleep=10 +debug sleep $sleep +thres=$(( $total * $KSM_THRES_COEF / 100 )) +if [ $KSM_THRES_CONST -gt $thres ]; then + thres=$KSM_THRES_CONST +fi +debug thres $thres + +KSMCTL () { + case x$1 in + xstop) + echo 0 > /sys/kernel/mm/ksm/run + ;; + xstart) + echo $2 > /sys/kernel/mm/ksm/pages_to_scan + echo $3 > /sys/kernel/mm/ksm/sleep_millisecs + echo 1 > /sys/kernel/mm/ksm/run + ;; + esac +} + +committed_memory () { + # calculate how much memory is committed to running qemu processes + local progname + progname=${1:-qemu-kvm} + ps -C "$progname" -o rsz | awk '{ sum += $1 }; END { print sum }' +} + +free_memory () { + awk '/^(MemFree|Buffers|Cached):/ {free += $2}; END {print free}' \ + /proc/meminfo +} + +increase_npages() { + local delta + delta=${1:-0} + npages=$(( $npages + $delta )) + if [ $npages -lt $KSM_NPAGES_MIN ]; then + npages=$KSM_NPAGES_MIN + elif [ $npages -gt $KSM_NPAGES_MAX ]; then + npages=$KSM_NPAGES_MAX + fi + echo $npages +} + + +adjust () { + local free committed + free=`free_memory` + committed=`committed_memory` + debug committed $committed free $free + if [ $(( $committed + $thres )) -lt $total -a $free -gt $thres ]; then + KSMCTL stop + debug "$(( $committed + $thres )) < $total and free > $thres, stop ksm" + return 1 + fi + debug "$(( $committed + $thres )) > $total, start ksm" + if [ $free -lt $thres ]; then + npages=`increase_npages $KSM_NPAGES_BOOST` + debug "$free < $thres, boost" + else + npages=`increase_npages $KSM_NPAGES_DECAY` + debug "$free > $thres, decay" + fi + KSMCTL start $npages $sleep + debug "KSMCTL start $npages $sleep" + return 0 +} + +nothing () { + : +} + +loop () { + trap nothing USR1 + while true + do + sleep $KSM_MONITOR_INTERVAL & + wait $! + adjust + done +} + +PIDFILE=${PIDFILE-/var/run/ksmtune.pid} +if touch "$PIDFILE"; then + loop & + echo $! > "$PIDFILE" +fi diff --git a/ksmtuned.conf b/ksmtuned.conf new file mode 100644 index 0000000..fc4518c --- /dev/null +++ b/ksmtuned.conf @@ -0,0 +1,21 @@ +# Configuration file for ksmtuned. + +# How long ksmtuned should sleep between tuning adjustments +# KSM_MONITOR_INTERVAL=60 + +# Millisecond sleep between ksm scans for 16Gb server. +# Smaller servers sleep more, bigger sleep less. +# KSM_SLEEP_MSEC=10 + +# KSM_NPAGES_BOOST=300 +# KSM_NPAGES_DECAY=-50 +# KSM_NPAGES_MIN=64 +# KSM_NPAGES_MAX=1250 + +# KSM_THRES_COEF=20 +# KSM_THRES_CONST=2048 + +# uncomment the following if you want ksmtuned debug info + +# LOGFILE=/var/log/ksmtuned +# DEBUG=1 diff --git a/ksmtuned.service b/ksmtuned.service new file mode 100644 index 0000000..39febcc --- /dev/null +++ b/ksmtuned.service @@ -0,0 +1,12 @@ +[Unit] +Description=Kernel Samepage Merging (KSM) Tuning Daemon +After=ksm.service +Requires=ksm.service + +[Service] +ExecStart=/usr/sbin/ksmtuned +ExecReload=/bin/kill -USR1 $MAINPID +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/kvm-modules-load.conf b/kvm-modules-load.conf new file mode 100644 index 0000000..d36f522 --- /dev/null +++ b/kvm-modules-load.conf @@ -0,0 +1,4 @@ +# we can safely try both, incompatible module just won't load +kvm-intel +kvm-amd +vhost-net diff --git a/libjpeg-boolean.patch b/libjpeg-boolean.patch new file mode 100644 index 0000000..c321830 --- /dev/null +++ b/libjpeg-boolean.patch @@ -0,0 +1,12 @@ +diff -dur qemu-1.7.1.orig/ui/vnc-enc-tight.c qemu-1.7.1/ui/vnc-enc-tight.c +--- qemu-1.7.1.orig/ui/vnc-enc-tight.c 2014-03-25 15:01:10.000000000 +0100 ++++ qemu-1.7.1/ui/vnc-enc-tight.c 2014-04-09 11:36:05.000000000 +0200 +@@ -41,6 +41,8 @@ + #endif + #ifdef CONFIG_VNC_JPEG + #include ++#define HAVE_BOOLEAN ++#define boolean int + #include + #endif + diff --git a/qemu-cflags.patch b/qemu-cflags.patch new file mode 100644 index 0000000..f9a9eca --- /dev/null +++ b/qemu-cflags.patch @@ -0,0 +1,22 @@ +--- qemu-1.7.0/configure.orig 2013-11-27 23:15:55.000000000 +0100 ++++ qemu-1.7.0/configure 2013-12-15 08:37:16.187664605 +0100 +@@ -332,10 +332,6 @@ + QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" + QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" + QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include" +-if test "$debug_info" = "yes"; then +- CFLAGS="-g $CFLAGS" +- LDFLAGS="-g $LDFLAGS" +-fi + + # make source path absolute + source_path=`cd "$source_path"; pwd` +@@ -3549,8 +3545,6 @@ + if test "$gcov" = "yes" ; then + CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" + LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" +-elif test "$debug" = "no" ; then +- CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" + fi + + diff --git a/qemu-guest-agent.service b/qemu-guest-agent.service new file mode 100644 index 0000000..51cd7b3 --- /dev/null +++ b/qemu-guest-agent.service @@ -0,0 +1,11 @@ +[Unit] +Description=QEMU Guest Agent +BindTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device +After=dev-virtio\x2dports-org.qemu.guest_agent.0.device + +[Service] +ExecStart=-/usr/bin/qemu-ga +Restart=always +RestartSec=0 + +[Install] diff --git a/qemu-kde_virtual_workspaces_hack.patch b/qemu-kde_virtual_workspaces_hack.patch new file mode 100644 index 0000000..cc3d5e7 --- /dev/null +++ b/qemu-kde_virtual_workspaces_hack.patch @@ -0,0 +1,79 @@ +Proof of concept patch for using kde's virtual workspaces from withing qemu, +when running full screen (so that a virtual workspace is a whole OS). +This should: +- use configurable key bindings or even be able to get them from the current + environment +- use dcop directly (preferably using runtime probing for dcop libs), without + having to invoke the dcop app (which is obviously slower) + +But for now whoever wants to can just hack in his key bindings and it will +kind of work. + +Would actually be nice if kde (and gnome) had the ability to create workspaces +on the fly, so qemu could have a mode when it assigns itself a completely new +workspace on startup. This way I could have another OS running in the +'background' without altering my workflow (that is -- without depriving me of +one workspace which I normally use). + +--- qemu-0.8.2/sdl.c 2006-07-22 19:23:34.000000000 +0200 ++++ qemu-0.8.2.new/sdl.c 2006-11-25 20:57:12.220599750 +0100 +@@ -35,9 +35,11 @@ + static int gui_saved_grab; + static int gui_fullscreen; + static int gui_key_modifier_pressed; ++static int gui_key_modifier_pressed2; + static int gui_keysym; + static int gui_fullscreen_initial_grab; + static int gui_grab_code = KMOD_LALT | KMOD_LCTRL; ++static int gui_switch_workspace_code = KMOD_LMETA; + static uint8_t modifiers_state[256]; + static int width, height; + static SDL_Cursor *sdl_cursor_normal; +@@ -382,13 +384,36 @@ + case SDL_KEYDOWN: + case SDL_KEYUP: + if (ev->type == SDL_KEYDOWN) { ++ mod_state = (SDL_GetModState() & gui_switch_workspace_code) == ++ gui_switch_workspace_code; ++ gui_key_modifier_pressed2 = mod_state; + mod_state = (SDL_GetModState() & gui_grab_code) == + gui_grab_code; + gui_key_modifier_pressed = mod_state; +- if (gui_key_modifier_pressed) { ++ if (gui_key_modifier_pressed2) { + int keycode; ++ char cmd[] = "dcop kwin default setCurrentDesktop 1 >/dev/null"; + keycode = sdl_keyevent_to_keycode(&ev->key); + switch(keycode) { ++ case 0x02 ... 0x0a: /* '1' to '9' keys */ ++ sdl_grab_end(); ++ cmd[36] =(char)keycode+'0'-1; ++ system(cmd); ++ break; ++ default: ++ break; ++ ++ break; ++ } ++ } ++ else if (gui_key_modifier_pressed) { ++ int keycode; ++ keycode = sdl_keyevent_to_keycode(&ev->key); ++ switch(keycode) { ++ case 0x10: ++ case 0x2d: /* 'q' or 'x' */ ++ qemu_system_shutdown_request(); ++ break; + case 0x21: /* 'f' key on US keyboard */ + toggle_full_screen(ds); + gui_keysym = 1; +@@ -508,6 +533,9 @@ + !ev->active.gain && !gui_fullscreen_initial_grab) { + sdl_grab_end(); + } ++ else if(gui_fullscreen && ev->active.state == SDL_APPINPUTFOCUS) { ++ sdl_grab_start(); ++ } + break; + default: + break; diff --git a/qemu-system-libcacard.patch b/qemu-system-libcacard.patch new file mode 100644 index 0000000..98c11b7 --- /dev/null +++ b/qemu-system-libcacard.patch @@ -0,0 +1,74 @@ +--- qemu-1.7.0/configure.orig 2013-12-15 08:38:07.584329114 +0100 ++++ qemu-1.7.0/configure 2013-12-15 08:54:19.730954984 +0100 +@@ -3123,9 +3123,10 @@ + #include + int main(void) { PK11_FreeSlot(0); return 0; } + EOF +- smartcard_includes="-I\$(SRC_PATH)/libcacard" +- libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" +- libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" ++ libcacard_libs="$($pkg_config --libs libcacard 2>/dev/null)" ++ libcacard_cflags="$($pkg_config --cflags libcacard 2>/dev/null)" ++ nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" ++ nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" + test_cflags="$libcacard_cflags" + # The header files in nss < 3.13.3 have a bug which causes them to + # emit a warning. If we're going to compile QEMU with -Werror, then +@@ -3136,11 +3137,10 @@ + fi + if test -n "$libtool" && + $pkg_config --atleast-version=3.12.8 nss && \ +- compile_prog "$test_cflags" "$libcacard_libs"; then ++ compile_prog "$test_cflags" "$nss_libs"; then + smartcard_nss="yes" +- QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" +- QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes" +- libs_softmmu="$libcacard_libs $libs_softmmu" ++ QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags $nss_cflags" ++ libs_softmmu="$libcacard_libs $nss_libs $libs_softmmu" + else + if test "$smartcard_nss" = "yes"; then + feature_not_found "nss" +@@ -4082,6 +4082,8 @@ + echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak + echo "libcacard_libs=$libcacard_libs" >> $config_host_mak + echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak ++ echo "nss_libs=$nss_libs" >> $config_host_mak ++ echo "nss_cflags=$nss_cflags" >> $config_host_mak + fi + + if test "$libusb" = "yes" ; then +--- qemu-1.3.0/Makefile.orig 2012-12-03 20:37:05.000000000 +0100 ++++ qemu-1.3.0/Makefile 2012-12-16 11:08:58.001201236 +0100 +@@ -111,9 +111,6 @@ + include $(SRC_PATH)/Makefile.objs + include $(SRC_PATH)/tests/Makefile + endif +-ifeq ($(CONFIG_SMARTCARD_NSS),y) +-include $(SRC_PATH)/libcacard/Makefile +-endif + + all: $(DOCS) $(TOOLS) $(HELPERS-y) recurse-all + +--- qemu-1.5.0/Makefile.objs.orig 2013-05-20 17:34:39.000000000 +0200 ++++ qemu-1.5.0/Makefile.objs 2013-05-26 17:46:51.190865264 +0200 +@@ -74,8 +74,6 @@ + + common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o + +-common-obj-$(CONFIG_SMARTCARD_NSS) += $(libcacard-y) +- + ###################################################################### + # qapi + +--- qemu-1.5.0/hw/usb/ccid-card-passthru.c.orig 2013-05-20 17:34:39.000000000 +0200 ++++ qemu-1.5.0/hw/usb/ccid-card-passthru.c 2013-05-26 17:58:20.660836330 +0200 +@@ -12,7 +12,7 @@ + #include "qemu/sockets.h" + #include "monitor/monitor.h" + #include "ccid.h" +-#include "libcacard/vscard_common.h" ++#include + + #define DPRINTF(card, lvl, fmt, ...) \ + do { \ diff --git a/qemu-whitelist.patch b/qemu-whitelist.patch new file mode 100644 index 0000000..318b990 --- /dev/null +++ b/qemu-whitelist.patch @@ -0,0 +1,13 @@ +--- scripts/create_config.org 2011-02-16 15:44:05.000000000 +0100 ++++ scripts/create_config 2011-03-21 21:26:16.136615526 +0100 +@@ -33,7 +33,9 @@ + CONFIG_BDRV_WHITELIST=*) + echo "#define CONFIG_BDRV_WHITELIST \\" + for drv in ${line#*=}; do +- echo " \"${drv}\",\\" ++ if [ ! -z "$drv" ]; then ++ echo " \"${drv}\",\\" ++ fi + done + echo " NULL" + ;; diff --git a/qemu-xattr.patch b/qemu-xattr.patch new file mode 100644 index 0000000..4d89cb2 --- /dev/null +++ b/qemu-xattr.patch @@ -0,0 +1,23 @@ +Workaround vs defines conflict: +When including both, the latter must be included first. +Move "qemu-xattr.h" (which includes to the front, +before (which includes . + +--- qemu-1.7.1/fsdev/virtfs-proxy-helper.c.orig 2014-03-25 15:01:10.000000000 +0100 ++++ qemu-1.7.1/fsdev/virtfs-proxy-helper.c 2014-04-03 02:55:41.115547990 +0200 +@@ -9,6 +9,7 @@ + * the COPYING file in the top-level directory. + */ + ++#include "qemu/xattr.h" + #include + #include + #include +@@ -22,7 +23,6 @@ + #endif + #include "qemu-common.h" + #include "qemu/sockets.h" +-#include "qemu/xattr.h" + #include "virtio-9p-marshal.h" + #include "hw/9pfs/virtio-9p-proxy.h" + #include "fsdev/virtio-9p-marshal.h" diff --git a/qemu.binfmt b/qemu.binfmt new file mode 100644 index 0000000..9078b60 --- /dev/null +++ b/qemu.binfmt @@ -0,0 +1,6 @@ +:qemu-i386:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-i386: +:qemu-i486:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-i386: +:qemu-arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-arm: +:qemu-ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-ppc: +:qemu-sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-sparc: +:qemu-sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-sh4: diff --git a/qemu.spec b/qemu.spec new file mode 100644 index 0000000..f9a3dc4 --- /dev/null +++ b/qemu.spec @@ -0,0 +1,1119 @@ +# +# Conditional build: +%bcond_without sdl # SDL UI and audio support +%bcond_without glx # OpenGL/GLX support +%bcond_without ceph # Ceph/RBD support +%bcond_without glusterfs # GlusterFS backend +%bcond_without rdma # RDMA-based migration support +%bcond_with gtk2 # GTK+ 2.x instead of 3.x +%bcond_without gtk3 # Do not build GTK UI +%bcond_without spice # SPICE support +%bcond_with esd # EsounD audio support +%bcond_without oss # OSS audio support +%bcond_without pulseaudio # PulseAudio audio support +%bcond_without xen # Xen backend driver support +%bcond_without bluetooth # bluetooth support +%bcond_without brlapi # brlapi support +%bcond_without smartcard # smartcard-nss support +%bcond_without iscsi # iscsi support +%bcond_without libnfs # NFS support +%bcond_without seccomp # seccomp support +%bcond_without usbredir # usb network redirection support +%bcond_without system_seabios # system seabios binary +%bcond_without snappy # snappy compression library + +%if %{with gtk2} +%undefine with_gtk3 +%endif + +Summary: QEMU CPU Emulator +Summary(pl.UTF-8): QEMU - emulator procesora +Name: qemu +Version: 2.0.0 +Release: 2 +License: GPL v2+ +Group: Applications/Emulators +Source0: http://wiki.qemu-project.org/download/%{name}-%{version}.tar.bz2 +# Source0-md5: 2790f44fd76da5de5024b4aafeb594c2 +Source2: %{name}.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: %{name}-guest-agent.service +Source12: 99-%{name}-guest-agent.rules +Patch0: %{name}-cflags.patch +Patch1: vgabios-widescreens.patch +Patch2: %{name}-whitelist.patch +Patch3: %{name}-system-libcacard.patch +Patch4: %{name}-xattr.patch +Patch5: libjpeg-boolean.patch +# Proof of concept, for reference, do not remove +Patch400: %{name}-kde_virtual_workspaces_hack.patch +URL: http://www.qemu-project.org/ +%{?with_opengl:BuildRequires: OpenGL-GLX-devel} +%{?with_sdl:BuildRequires: SDL2-devel} +BuildRequires: alsa-lib-devel +BuildRequires: bcc +%{?with_bluetooth:BuildRequires: bluez-libs-devel} +%{?with_brlapi:BuildRequires: brlapi-devel} +%{?with_ceph:BuildRequires: ceph-devel} +BuildRequires: curl-devel +BuildRequires: cyrus-sasl-devel >= 2 +%{?with_esd:BuildRequires: esound-devel} +BuildRequires: glib2-devel >= 1:2.12 +%{?with_glusterfs:BuildRequires: glusterfs-devel >= 3.4} +BuildRequires: gnutls-devel > 2.10.0 +BuildRequires: libaio-devel +%{?with_smartcard:BuildRequires: libcacard-devel} +BuildRequires: libcap-devel +BuildRequires: libcap-ng-devel +BuildRequires: libfdt-devel +%{?with_rdma:BuildRequires: libibverbs-devel} +%{?with_iscsi:BuildRequires: libiscsi-devel >= 1.4.0} +BuildRequires: libjpeg-devel +%{?with_libnfs:BuildRequires: libnfs-devel >= 1.9.3} +BuildRequires: libpng-devel +%{?with_rdma:BuildRequires: librdmacm-devel} +%{?with_seccomp:BuildRequires: libseccomp-devel >= 2.1.0} +BuildRequires: libssh2-devel >= 1.2.8 +BuildRequires: libusb-devel >= 1.0.13 +BuildRequires: libuuid-devel +BuildRequires: lzo-devel >= 2 +BuildRequires: ncurses-devel +%{?with_smartcard:BuildRequires: nss-devel >= 3.12.8} +BuildRequires: perl-Encode +BuildRequires: perl-tools-pod +BuildRequires: pkgconfig +%{?with_pulseaudio:BuildRequires: pulseaudio-devel} +BuildRequires: rpmbuild(macros) >= 1.644 +%{?with_system_seabios:BuildRequires: seabios} +BuildRequires: sed >= 4.0 +%{?with_snappy:BuildRequires: snappy-devel} +%if %{with spice} +BuildRequires: spice-protocol >= 0.12.3 +BuildRequires: spice-server-devel >= 0.12.0 +%endif +BuildRequires: texi2html +BuildRequires: texinfo +%{?with_usbredir:BuildRequires: usbredir-devel >= 0.6} +BuildRequires: vde2-devel +BuildRequires: which +%{?with_xen:BuildRequires: xen-devel >= 3.4} +BuildRequires: xfsprogs-devel +BuildRequires: xorg-lib-libX11-devel +BuildRequires: zlib-devel +%if %{with gtk2} +BuildRequires: gtk+2-devel >= 2:2.18.0 +BuildRequires: vte0-devel >= 0.24.0 +%endif +%if %{with gtk3} +BuildRequires: gtk+3-devel >= 3.0.0 +BuildRequires: vte-devel >= 0.32.0 +%endif +Requires: %{name}-img = %{version}-%{release} +Requires: %{name}-system-aarch64 = %{version}-%{release} +Requires: %{name}-system-alpha = %{version}-%{release} +Requires: %{name}-system-arm = %{version}-%{release} +Requires: %{name}-system-cris = %{version}-%{release} +Requires: %{name}-system-lm32 = %{version}-%{release} +Requires: %{name}-system-m68k = %{version}-%{release} +Requires: %{name}-system-microblaze = %{version}-%{release} +Requires: %{name}-system-mips = %{version}-%{release} +Requires: %{name}-system-moxie = %{version}-%{release} +Requires: %{name}-system-or32 = %{version}-%{release} +Requires: %{name}-system-ppc = %{version}-%{release} +Requires: %{name}-system-s390x = %{version}-%{release} +Requires: %{name}-system-sh4 = %{version}-%{release} +Requires: %{name}-system-sparc = %{version}-%{release} +Requires: %{name}-system-unicore32 = %{version}-%{release} +Requires: %{name}-system-x86 = %{version}-%{release} +Requires: %{name}-system-xtensa = %{version}-%{release} +Requires: %{name}-user = %{version}-%{release} +Obsoletes: qemu-kvm +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%define systempkg_req \ +%if %{with sdl} \ +Requires: SDL2 \ +%endif \ +%if %{with seccomp} \ +Requires: libseccomp >= 2.1.0 \ +%endif \ +Requires: libusb >= 1.0.13 \ +%if %{with usbredir} \ +Requires: usbredir >= 0.6 \ +%endif \ +%if %{with gtk2} \ +Requires: gtk+2 >= 2:2.18.0 \ +Requires: vte0 >= 0.24.0 \ +%endif \ +%if %{with gtk3} \ +Requires: gtk+3 >= 3.0.0 \ +Requires: vte >= 0.32.0 \ +%endif + +# some PPC/SPARC boot image in ELF format +%define _noautostrip .*%{_datadir}/qemu/.*-.* + +%description +QEMU is a FAST! processor emulator. By using dynamic translation it +achieves a reasonnable speed while being easy to port on new host +CPUs. QEMU has two operating modes: + +- User mode emulation. In this mode, QEMU can launch Linux processes + compiled for one CPU on another CPU. Linux system calls are converted + because of endianness and 32/64 bit mismatches. Wine (Windows + emulation) and DOSEMU (DOS emulation) are the main targets for QEMU. + +- Full system emulation. In this mode, QEMU emulates a full system, + including a processor and various peripherials. It can also be used to + provide virtual hosting of several virtual PC on a single server. + +%description -l pl.UTF-8 +QEMU to szybki(!) emulator procesora. Poprzez użycie dynamicznego +tłumaczenia osiąga rozsądną szybkość i jest łatwy do przeportowania, +aby działał na kolejnych procesorach. QEMU ma dwa tryby pracy: + +- Emulacja trybu użytkownika. W tym trybie QEMU może uruchamiać + procesy linuksowe skompilowane dla jednego procesora na innym + procesorze. Linuksowe wywołania systemowe są tłumaczone ze względu na + niezgodność kolejności bajtów w słowie i 32/64-bitowego rozmiaru + słowa. Wine (emulacja Windows) i DOSEMU (emulacja DOS-a) to główne + cele QEMU. + +- Pełna emulacja systemu. W tym trybie QEMU emuluje cały system, + włączając w to procesor i różne urządzenia peryferyjne. Może być także + używane do wirtualnego hostowania kilku wirtualnych pecetów na + pojedynczym serwerze. + +%package common +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/bin/getgid +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires: glib2 >= 1:2.12 +%{?with_libnfs:Requires: libnfs >= 1.9.3} +Requires: libssh2 >= 1.2.8 +Requires: systemd-units >= 38 +Provides: group(qemu) +Provides: user(qemu) +Obsoletes: qemu-kvm-common +Conflicts: qemu < 1.0-2 + +%description common +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the common files needed by all QEMU targets. + +%description common -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet udostępnia wspólne pliki wymagane przez wszystkie +środowiska QEMU. + +%package img +Summary: QEMU command line tool for manipulating disk images +Summary(pl.UTF-8): Narzędzie QEMU do operacji na obrazach dysków +Group: Development/Tools +Obsoletes: qemu-kvm-img +Conflicts: qemu < 1.0-2 + +%description img +This package provides a command line tool for manipulating disk +images. + +%description img -l pl.UTF-8 +Ten pakiet udostępnia działające z linii poleceń narzędzia do operacji +na obrazach dysków. + +%package user +Summary: QEMU user mode emulation of qemu targets +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 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the user mode emulation of QEMU targets. + +%description user -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet udostępnia emulację trybu użytkownika środowisk QEMU. + +%package system-aarch64 +Summary: QEMU system emulator for AArch64 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem AArch64 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-aarch64 + +%description system-aarch64 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with AArch64 CPU. + +%description system-aarch64 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem AArch64. + +%package system-alpha +Summary: QEMU system emulator for Alpha +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem Alpha +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-alpha + +%description system-alpha +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with Alpha CPU. + +%description system-alpha -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem Alpha. + +%package system-arm +Summary: QEMU system emulator for ARM +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem ARM +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-arm + +%description system-arm +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator for ARM. + +%description system-arm -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem ARM. + +%package system-cris +Summary: QEMU system emulator for CRIS +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem CRIS +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-cris + +%description system-cris +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with CRIS CPU. + +%description system-cris -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem CRIS. + +%package system-lm32 +Summary: QEMU system emulator for LM32 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem LM32 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-lm32 + +%description system-lm32 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with LM32 CPU. + +%description system-lm32 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem LM32. + +%package system-m68k +Summary: QEMU system emulator for m68k +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem m68k +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-m68k + +%description system-m68k +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with m68k CPU. + +%description system-m68k -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem m68k. + +%package system-microblaze +Summary: QEMU system emulator for MicroBlaze +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem MicroBlaze +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-microblaze + +%description system-microblaze +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with MicroBlaze CPU. + +%description system-microblaze -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem MicroBlaze. + +%package system-mips +Summary: QEMU system emulator for MIPS +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem MIPS +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-mips + +%description system-mips +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with MIPS CPU. + +%description system-mips -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem MIPS. + +%package system-moxie +Summary: QEMU system emulator for Moxie +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem Moxie +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req + +%description system-moxie +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with Moxie CPU. + +%description system-moxie -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem Moxie. + +%package system-or32 +Summary: QEMU system emulator for OpenRISC +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem OpenRISC +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-or32 + +%description system-or32 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with OpenRISC CPU. + +%description system-or32 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem OpenRISC. + +%package system-ppc +Summary: QEMU system emulator for PowerPC +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem PowerPC +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-ppc + +%description system-ppc +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with PowerPC CPU. + +%description system-ppc -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem PowerPC. + +%package system-s390x +Summary: QEMU system emulator for S390 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem S390 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-s390x + +%description system-s390x +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with S390 CPU. + +%description system-s390x -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem S390. + +%package system-sh4 +Summary: QEMU system emulator for SH4 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem SH4 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-sh4 + +%description system-sh4 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with SH4 CPU. + +%description system-sh4 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem SH4. + +%package system-sparc +Summary: QEMU system emulator for SPARC +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem SPARC +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-sparc + +%description system-sparc +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with SPARC/SPARC64 CPU. + +%description system-sparc -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem SPARC/SPARC64. + +%package system-unicore32 +Summary: QEMU system emulator for UniCore32 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem UniCore32 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-unicore32 + +%description system-unicore32 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with UniCore32 CPU. + +%description system-unicore32 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem UniCore32. + +%package system-x86 +Summary: QEMU system emulator for x86 +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem x86 +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%{?with_system_seabios:Requires: seabios} +%systempkg_req +Obsoletes: kvm +Obsoletes: qemu-kvm-system-x86 + +%description system-x86 +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +%description system-x86 -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +%package system-xtensa +Summary: QEMU system emulator for Xtensa +Summary(pl.UTF-8): QEMU - emulator systemu z procesorem Xtensa +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +%systempkg_req +Obsoletes: qemu-kvm-system-xtensa + +%description system-xtensa +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides the system emulator with Xtensa CPU. + +%description system-xtensa -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet zawiera emulator systemu z procesorem Xtensa. + +%package guest-agent +Summary: QEMU guest agent +Summary(pl.UTF-8): Agent gościa QEMU +Group: Daemons +Requires(post,preun,postun): systemd-units >= 38 +Requires: glib2 >= 1:2.12 +Requires: systemd-units >= 38 +Obsoletes: qemu-kvm-guest-agent + +%description guest-agent +QEMU is a generic and open source processor emulator which achieves a +good emulation speed by using dynamic translation. + +This package provides an agent to run inside guests, which +communicates with the host over a virtio-serial channel named +"org.qemu.guest_agent.0". + +This package does not need to be installed on the host OS. + +%description guest-agent -l pl.UTF-8 +QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający +dobrą szybkość emulacji dzięki użyciu translacji dynamicznej. + +Ten pakiet udostępnia agenta przeznaczonego do uruchomienia w +systemach-gościach, komunikującego się kanałem virtio-serial o nazwie +"org.qemu.guest_agent.0". + +Ten pakiet nie musi być zainstalowany w systemie hosta. + +%package module-block-curl +Summary: QEMU module for 'curl' block devices +Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'curl' +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} + +%description module-block-curl +'curl' block device support for QEMU. + +%description module-block-curl -l pl.UTF-8 +Moduł QEMU dla urządeń blokowych typu 'curl'. + +%package module-block-gluster +Summary: QEMU module for 'gluster' block devices +Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'gluster' +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +Requires: glusterfs-libs >= 3.4 + +%description module-block-gluster +'gluster' block device support for QEMU. + +%description module-block-gluster -l pl.UTF-8 +Moduł QEMU dla urządeń blokowych typu 'gluster'. + +%package module-block-iscsi +Summary: QEMU module for 'iscsi' block devices +Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'iscsi' +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} +Requires: libiscsi >= 1.4.0 + +%description module-block-iscsi +'iscsi' block device support for QEMU. + +%description module-block-iscsi -l pl.UTF-8 +Moduł QEMU dla urządeń blokowych typu 'iscsi'. + +%package module-block-rbd +Summary: QEMU module for 'rbd' block devices +Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'rbd' +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} + +%description module-block-rbd +'rbd' block device support for QEMU. + +%description module-block-rbd -l pl.UTF-8 +Moduł QEMU dla urządeń blokowych typu 'rbd'. + +%package module-block-ssh +Summary: QEMU module for 'ssh' block devices +Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'ssh' +Group: Development/Tools +Requires: %{name}-common = %{version}-%{release} + +%description module-block-ssh +'ssh' block device support for QEMU. + +%description module-block-ssh -l pl.UTF-8 +Moduł QEMU dla urządeń blokowych typu 'ssh'. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p0 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 + +%{__mv} libcacard libcacard-use-system-lib + +# workaround for conflict with alsa/error.h +ln -s ../error.h qapi/error.h + +%build +./configure \ + --extra-cflags="%{rpmcflags} -I/usr/include/ncurses" \ + --extra-ldflags="%{rpmldflags}" \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --libexecdir=%{_libexecdir} \ + --sysconfdir=%{_sysconfdir} \ + --cc="%{__cc}" \ + --host-cc="%{__cc}" \ + --disable-strip \ + --enable-attr \ + %{__enable_disable bluetooth bluez} \ + %{__enable_disable brlapi} \ + --enable-cap-ng \ + --enable-curl \ + --enable-curses \ + --enable-docs \ + --enable-fdt \ + %{__enable_disable glusterfs} \ + %{__enable_disable iscsi libiscsi} \ + %{__enable_disable glx} \ + %{__enable_disable ceph rbd} \ + %{__enable_disable rdma} \ + %{__enable_disable sdl} \ + --with-sdlabi=2.0 \ + %{__enable_disable seccomp} \ + %{__enable_disable spice} \ + %{__enable_disable smartcard smartcard-nss} \ + --enable-tpm \ + %{__enable_disable usbredir usb-redir} \ + --enable-uuid \ + --enable-vde \ + --enable-virtfs \ + --enable-vnc-jpeg \ + --enable-vnc-png \ + --enable-vnc-sasl \ + --enable-vnc-tls \ + --enable-kvm \ + %{__enable_disable xen} \ + --enable-modules \ + --disable-netmap \ + %{__enable_disable libnfs} \ + --enable-lzo \ + %{__enable_disable snappy} \ + --enable-quorum \ + --audio-drv-list="alsa%{?with_iss:,oss}%{?with_sdl:,sdl}%{?with_esd:,esd}%{?with_pulseaudio:,pa}" \ + --interp-prefix=%{_libdir}/qemu/lib-%%M \ +%if %{without gtk2} && %{without gtk3} + --disable-gtk +%else + --with-gtkabi="%{?with_gtk2:2.0}%{!?with_gtk2:3.0}" +%endif + +%{__make} \ + V=1 \ + %{!?with_smartcard:CONFIG_USB_SMARTCARD=n} + +# 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 \ + %{!?with_smartcard:CONFIG_USB_SMARTCARD=n} \ + DESTDIR=$RPM_BUILD_ROOT + +install -d $RPM_BUILD_ROOT%{_sysconfdir} +cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/qemu-ifup +#!/bin/sh + +EOF + +install -p qemu.sasl $RPM_BUILD_ROOT%{_sysconfdir}/sasl/qemu.conf + +%ifarch %{ix86} %{x8664} +install -p 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} + +# packaged as %doc +%{__rm} $RPM_BUILD_ROOT%{_docdir}/qemu/qemu-{doc,tech}.html +%{__rm} $RPM_BUILD_ROOT%{_docdir}/qemu/qmp-commands.txt + +# install patched vesa tables with additional widescreen modes. +cp -p roms/vgabios/VGABIOS-lgpl-latest.stdvga.bin $RPM_BUILD_ROOT%{_datadir}/%{name}/vgabios-stdvga.bin + +%if %{with system_seabios} +ln -sf /usr/share/seabios/bios.bin $RPM_BUILD_ROOT%{_datadir}/%{name}/bios-256k.bin +# bios.bin provided by qemu is stripped to 128k, with no Xen support, keep it +for f in $RPM_BUILD_ROOT%{_datadir}/%{name}/*.aml ; do + bn="$(basename $f)" + if [ -e "/usr/share/seabios/$bn" ] ; then + ln -sf "/usr/share/seabios/$bn" "$f" + fi +done +%endif + +%if %{with gtk2} || %{with gtk3} +%{__mv} $RPM_BUILD_ROOT%{_localedir}/{de_DE,de} +%{__mv} $RPM_BUILD_ROOT%{_localedir}/{fr_FR,fr} +%find_lang %{name} +%else +: > qemu.lang +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%pre common +%groupadd -g 160 kvm +%groupadd -g 276 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 + +%preun guest-agent +%systemd_preun qemu-guest-agent.service + +%postun guest-agent +%systemd_reload + +%files +%defattr(644,root,root,755) + +%files common -f %{name}.lang +%defattr(644,root,root,755) +%doc README qemu-doc.html qemu-tech.html 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* + +%dir %{_datadir}/qemu +%{_datadir}/%{name}/keymaps +%{_datadir}/%{name}/qemu-icon.bmp + +# various bios images +# all should be probably moved to the right system subpackage +%{_datadir}/%{name}/QEMU,cgthree.bin +%{_datadir}/%{name}/QEMU,tcx.bin +%{_datadir}/%{name}/bamboo.dtb +%{_datadir}/%{name}/efi-e1000.rom +%{_datadir}/%{name}/efi-eepro100.rom +%{_datadir}/%{name}/efi-ne2k_pci.rom +%{_datadir}/%{name}/efi-pcnet.rom +%{_datadir}/%{name}/efi-rtl8139.rom +%{_datadir}/%{name}/efi-virtio.rom +%{_datadir}/%{name}/kvmvapic.bin +%{_datadir}/%{name}/linuxboot.bin +%{_datadir}/%{name}/multiboot.bin +%{_datadir}/%{name}/openbios-ppc +%{_datadir}/%{name}/openbios-sparc* +%{_datadir}/%{name}/palcode-clipper +%{_datadir}/%{name}/petalogix-ml605.dtb +%{_datadir}/%{name}/petalogix-s3adsp1800.dtb +%{_datadir}/%{name}/ppc_rom.bin +%{_datadir}/%{name}/pxe-e1000.rom +%{_datadir}/%{name}/pxe-eepro100.rom +%{_datadir}/%{name}/pxe-ne2k_pci.rom +%{_datadir}/%{name}/pxe-pcnet.rom +%{_datadir}/%{name}/pxe-rtl8139.rom +%{_datadir}/%{name}/pxe-virtio.rom +%{_datadir}/%{name}/qemu_logo_no_text.svg +%{_datadir}/%{name}/s390-ccw.img +%{_datadir}/%{name}/s390-zipl.rom +%{_datadir}/%{name}/sgabios.bin +%{_datadir}/%{name}/slof.bin +%{_datadir}/%{name}/spapr-rtas.bin +%{_datadir}/%{name}/vgabios-cirrus.bin +%{_datadir}/%{name}/vgabios-qxl.bin +%{_datadir}/%{name}/vgabios-stdvga.bin +%{_datadir}/%{name}/vgabios-vmware.bin +%{_datadir}/%{name}/vgabios.bin + +%dir %{_libdir}/%{name} + +%files img +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-img +%{_mandir}/man1/qemu-img.1* + +%files user +%defattr(644,root,root,755) +/usr/lib/binfmt.d/qemu-*.conf +%attr(755,root,root) %{_bindir}/qemu-aarch64 +%attr(755,root,root) %{_bindir}/qemu-alpha +%attr(755,root,root) %{_bindir}/qemu-arm +%attr(755,root,root) %{_bindir}/qemu-armeb +%attr(755,root,root) %{_bindir}/qemu-cris +%attr(755,root,root) %{_bindir}/qemu-i386 +%attr(755,root,root) %{_bindir}/qemu-io +%attr(755,root,root) %{_bindir}/qemu-m68k +%attr(755,root,root) %{_bindir}/qemu-microblaze +%attr(755,root,root) %{_bindir}/qemu-microblazeel +%attr(755,root,root) %{_bindir}/qemu-mips +%attr(755,root,root) %{_bindir}/qemu-mipsel +%attr(755,root,root) %{_bindir}/qemu-mips64 +%attr(755,root,root) %{_bindir}/qemu-mips64el +%attr(755,root,root) %{_bindir}/qemu-mipsn32 +%attr(755,root,root) %{_bindir}/qemu-mipsn32el +%attr(755,root,root) %{_bindir}/qemu-or32 +%attr(755,root,root) %{_bindir}/qemu-ppc +%attr(755,root,root) %{_bindir}/qemu-ppc64 +%attr(755,root,root) %{_bindir}/qemu-ppc64abi32 +%attr(755,root,root) %{_bindir}/qemu-s390x +%attr(755,root,root) %{_bindir}/qemu-sh4 +%attr(755,root,root) %{_bindir}/qemu-sh4eb +%attr(755,root,root) %{_bindir}/qemu-sparc +%attr(755,root,root) %{_bindir}/qemu-sparc32plus +%attr(755,root,root) %{_bindir}/qemu-sparc64 +%attr(755,root,root) %{_bindir}/qemu-unicore32 +%attr(755,root,root) %{_bindir}/qemu-x86_64 + +%files system-aarch64 +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-aarch64 + +%files system-alpha +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-alpha + +%files system-arm +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-arm + +%files system-cris +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-cris + +%files system-lm32 +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-lm32 + +%files system-m68k +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-m68k + +%files system-microblaze +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-microblaze +%attr(755,root,root) %{_bindir}/qemu-system-microblazeel + +%files system-mips +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-mips +%attr(755,root,root) %{_bindir}/qemu-system-mipsel +%attr(755,root,root) %{_bindir}/qemu-system-mips64 +%attr(755,root,root) %{_bindir}/qemu-system-mips64el + +%files system-moxie +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-moxie + +%files system-or32 +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-or32 + +%files system-ppc +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-ppc +%attr(755,root,root) %{_bindir}/qemu-system-ppc64 +%attr(755,root,root) %{_bindir}/qemu-system-ppcemb + +%files system-s390x +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-s390x + +%files system-sh4 +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-sh4 +%attr(755,root,root) %{_bindir}/qemu-system-sh4eb + +%files system-sparc +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-sparc +%attr(755,root,root) %{_bindir}/qemu-system-sparc64 + +%files system-unicore32 +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-unicore32 + +%files system-x86 +%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 +%{_datadir}/%{name}/bios.bin +%{_datadir}/%{name}/bios-256k.bin +%{_datadir}/%{name}/acpi-dsdt.aml +%{_datadir}/%{name}/q35-acpi-dsdt.aml + +%files system-xtensa +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/qemu-system-xtensa +%attr(755,root,root) %{_bindir}/qemu-system-xtensaeb + +%files guest-agent +%defattr(644,root,root,755) +%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/99-qemu-guest-agent.rules +%{systemdunitdir}/qemu-guest-agent.service +%attr(755,root,root) %{_bindir}/qemu-ga + +%files module-block-curl +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/%{name}/block-curl.so + +%if %{with glusterfs} +%files module-block-gluster +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/%{name}/block-gluster.so +%endif + +%if %{with iscsi} +%files module-block-iscsi +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/%{name}/block-iscsi.so +%endif + +%if %{with ceph} +%files module-block-rbd +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/%{name}/block-rbd.so +%endif + +%files module-block-ssh +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/%{name}/block-ssh.so diff --git a/vgabios-widescreens.patch b/vgabios-widescreens.patch new file mode 100644 index 0000000..19541a1 --- /dev/null +++ b/vgabios-widescreens.patch @@ -0,0 +1,11 @@ +--- qemu-1.1.0/roms/vgabios/vbetables-gen.c.orig 2012-06-05 11:08:17.000000000 +0200 ++++ qemu-1.1.0/roms/vgabios/vbetables-gen.c 2012-09-23 17:17:34.709685781 +0200 +@@ -76,6 +76,8 @@ + { 2560, 1600, 16 , 0x18a}, + { 2560, 1600, 24 , 0x18b}, + { 2560, 1600, 32 , 0x18c}, ++{ 1600, 900, 24 , 0x18d}, ++{ 1600, 1000, 24 , 0x18e}, + { 0, }, + }; + -- 2.46.0