summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJed Liu2015-08-27 18:48:50 -0400
committerJed Liu2015-08-27 18:48:50 -0400
commit15fdc8067fa9660d58b3e8b71d25f07cc50d9e84 (patch)
tree9e3b61012d125d093a3b7091365627c8dd78e06d
parent6f9e0c16ebb1bbbadf369888c3c85362c8778e7d (diff)
downloadaur-15fdc8067fa9660d58b3e8b71d25f07cc50d9e84.tar.gz
upgpkg: qemu-minimal 2.4.0-2
-rw-r--r--.SRCINFO35
-rw-r--r--CVE-2015-3456.patch84
-rw-r--r--PKGBUILD230
-rw-r--r--qemu-ga.service8
-rw-r--r--qemu.install18
-rw-r--r--qemu.sysusers1
6 files changed, 206 insertions, 170 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a311d04a5f97..f83938a62dc3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = qemu-minimal
- pkgver = 2.3.0
- pkgrel = 3
- url = http://wiki.qemu.org/Index.html
+ pkgver = 2.4.0
+ pkgrel = 2
+ url = http://wiki.qemu.org/
arch = i686
arch = x86_64
license = GPL2
@@ -16,29 +16,42 @@ pkgbase = qemu-minimal
makedepends = libaio
makedepends = libseccomp
makedepends = python2
+ makedepends = libssh2
+ makedepends = lzo
+ makedepends = snappy
conflicts = qemu
- options = !strip
- source = http://wiki.qemu.org/download/qemu-2.3.0.tar.bz2
- source = CVE-2015-3456.patch
+ source = http://wiki.qemu.org/download/qemu-2.4.0.tar.bz2
+ source = qemu.sysusers
+ source = qemu-ga.service
source = 65-kvm.rules
- md5sums = 2fab3ea4460de9b57192e5b8b311f221
- md5sums = 5e8a68940c4e0267e795a6ddd144e00e
+ md5sums = 186ee8194140a484a455f8e3c74589f4
+ md5sums = 49778d11c28af170c4bebcc648b0ace1
+ md5sums = 44ee242d758f9318c6a1ea1dae96aa3a
md5sums = 33ab286a20242dda7743a900f369d68a
pkgname = qemu-minimal
pkgdesc = A generic and open source processor emulator which achieves a good emulation speed by using dynamic translation. This is a stripped-down version of the official package and requires only the bare essentials for running on a headless server.
install = qemu.install
+ depends = glibc
depends = libjpeg
depends = glib2
depends = util-linux
- depends = curl
depends = libsasl
depends = seabios
+ depends = libcap
depends = libcap-ng
depends = libaio
depends = libseccomp
- depends = libssh2>=1.5.0
+ depends = lzo
+ depends = snappy
+ depends = gcc-libs
+ depends = zlib
+ depends = bzip2
+ depends = nspr
+ depends = ncurses
+ depends = libssh2
+ depends = curl
optdepends = samba: for SMB Server support
replaces = qemu-kvm
- backup = etc/qemu/target-x86_64.conf
+ options = !strip
diff --git a/CVE-2015-3456.patch b/CVE-2015-3456.patch
deleted file mode 100644
index 50c19d9f08fe..000000000000
--- a/CVE-2015-3456.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From e907746266721f305d67bc0718795fedee2e824c Mon Sep 17 00:00:00 2001
-From: Petr Matousek <pmatouse@redhat.com>
-Date: Wed, 6 May 2015 09:48:59 +0200
-Subject: [PATCH] fdc: force the fifo access to be in bounds of the allocated buffer
-
-During processing of certain commands such as FD_CMD_READ_ID and
-FD_CMD_DRIVE_SPECIFICATION_COMMAND the fifo memory access could
-get out of bounds leading to memory corruption with values coming
-from the guest.
-
-Fix this by making sure that the index is always bounded by the
-allocated memory.
-
-This is CVE-2015-3456.
-
-Signed-off-by: Petr Matousek <pmatouse@redhat.com>
-Reviewed-by: John Snow <jsnow@redhat.com>
-Signed-off-by: John Snow <jsnow@redhat.com>
----
- hw/block/fdc.c | 17 +++++++++++------
- 1 files changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/hw/block/fdc.c b/hw/block/fdc.c
-index f72a392..d8a8edd 100644
---- a/hw/block/fdc.c
-+++ b/hw/block/fdc.c
-@@ -1497,7 +1497,7 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl)
- {
- FDrive *cur_drv;
- uint32_t retval = 0;
-- int pos;
-+ uint32_t pos;
-
- cur_drv = get_cur_drv(fdctrl);
- fdctrl->dsr &= ~FD_DSR_PWRDOWN;
-@@ -1506,8 +1506,8 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl)
- return 0;
- }
- pos = fdctrl->data_pos;
-+ pos %= FD_SECTOR_LEN;
- if (fdctrl->msr & FD_MSR_NONDMA) {
-- pos %= FD_SECTOR_LEN;
- if (pos == 0) {
- if (fdctrl->data_pos != 0)
- if (!fdctrl_seek_to_next_sect(fdctrl, cur_drv)) {
-@@ -1852,10 +1852,13 @@ static void fdctrl_handle_option(FDCtrl *fdctrl, int direction)
- static void fdctrl_handle_drive_specification_command(FDCtrl *fdctrl, int direction)
- {
- FDrive *cur_drv = get_cur_drv(fdctrl);
-+ uint32_t pos;
-
-- if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x80) {
-+ pos = fdctrl->data_pos - 1;
-+ pos %= FD_SECTOR_LEN;
-+ if (fdctrl->fifo[pos] & 0x80) {
- /* Command parameters done */
-- if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x40) {
-+ if (fdctrl->fifo[pos] & 0x40) {
- fdctrl->fifo[0] = fdctrl->fifo[1];
- fdctrl->fifo[2] = 0;
- fdctrl->fifo[3] = 0;
-@@ -1955,7 +1958,7 @@ static uint8_t command_to_handler[256];
- static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value)
- {
- FDrive *cur_drv;
-- int pos;
-+ uint32_t pos;
-
- /* Reset mode */
- if (!(fdctrl->dor & FD_DOR_nRESET)) {
-@@ -2004,7 +2007,9 @@ static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value)
- }
-
- FLOPPY_DPRINTF("%s: %02x\n", __func__, value);
-- fdctrl->fifo[fdctrl->data_pos++] = value;
-+ pos = fdctrl->data_pos++;
-+ pos %= FD_SECTOR_LEN;
-+ fdctrl->fifo[pos] = value;
- if (fdctrl->data_pos == fdctrl->data_len) {
- /* We now have all parameters
- * and will be able to treat the command
---
-1.7.0.4
-
diff --git a/PKGBUILD b/PKGBUILD
index 16ad2df966e3..41a1d10ccd5e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,118 +1,210 @@
-# $Id: PKGBUILD 240417 2015-06-07 17:12:34Z seblu $
+# $Id: PKGBUILD 244413 2015-08-20 09:51:39Z seblu $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
-#pkgname=('qemu' 'libcacard')
+# Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
+#pkgbase=qemu
+#pkgname=('qemu'
+# 'qemu-arch-extra'
+# 'qemu-block-iscsi'
+# 'qemu-block-rbd'
+# 'qemu-block-gluster'
+# 'qemu-guest-agent'
+# 'libcacard')
pkgname='qemu-minimal'
-pkgver=2.3.0
-pkgrel=3
+pkgver=2.4.0
+pkgrel=2
arch=('i686' 'x86_64')
license=('GPL2' 'LGPL2.1')
-url="http://wiki.qemu.org/Index.html"
+url='http://wiki.qemu.org/'
#makedepends=('pixman' 'libjpeg' 'libpng' 'sdl' 'alsa-lib' 'nss' 'glib2'
-# 'gnutls>=2.4.1' 'bluez-libs' 'vde2' 'util-linux' 'curl' 'libsasl'
+# 'gnutls' 'bluez-libs' 'vde2' 'util-linux' 'curl' 'libsasl'
# 'libgl' 'libpulse' 'seabios' 'libcap-ng' 'libaio' 'libseccomp'
# 'libiscsi' 'libcacard' 'spice' 'spice-protocol' 'python2'
-# 'usbredir' 'ceph')
+# 'usbredir' 'ceph' 'glusterfs' 'libssh2' 'lzo' 'snappy')
makedepends=('libjpeg' 'glib2'
'util-linux' 'curl' 'libsasl'
'seabios' 'libcap-ng' 'libaio' 'libseccomp'
'python2'
- )
+ 'libssh2' 'lzo' 'snappy')
conflicts=('qemu')
-options=(!strip)
source=(http://wiki.qemu.org/download/${pkgname:0:-8}-${pkgver}.tar.bz2
- CVE-2015-3456.patch
+ qemu.sysusers
+ qemu-ga.service
65-kvm.rules)
+md5sums=('186ee8194140a484a455f8e3c74589f4'
+ '49778d11c28af170c4bebcc648b0ace1'
+ '44ee242d758f9318c6a1ea1dae96aa3a'
+ '33ab286a20242dda7743a900f369d68a')
+
+_extra_arches=(aarch64 alpha arm armeb cris lm32 m68k microblaze microblazeel mips
+mips64 mips64el mipsel mipsn32 mipsn32el or32 ppc ppc64 ppc64abi32 ppc64le s390x
+sh4 sh4eb sparc sparc32plus sparc64 moxie ppcemb tricore unicore32 xtensa xtensaeb)
+_extra_blob=(QEMU,cgthree.bin QEMU,tcx.bin bamboo.dtb openbios-ppc
+openbios-sparc32 openbios-sparc64 palcode-clipper petalogix-ml605.dtb
+petalogix-s3adsp1800.dtb ppc_rom.bin s390-ccw.img s390-zipl.rom slof.bin
+spapr-rtas.bin u-boot.e500)
prepare() {
- cd "${srcdir}/${pkgname:0:-8}-${pkgver}"
- patch -p1 -i ${srcdir}/CVE-2015-3456.patch
+ for _p in *.patch; do
+ [[ -e "$_p" ]] || continue
+ msg2 "Patching $_p"
+ patch -p1 -d ${pkgname:0:-8}-${pkgver} < "$_p"
+ done
}
build ()
{
- cd "${srcdir}/${pkgname:0:-8}-${pkgver}"
+ cd ${pkgname:0:-8}-${pkgver}
# qemu vs. make 4 == bad
export ARFLAGS="rv"
# http://permalink.gmane.org/gmane.comp.emulators.qemu/238740
-
+ export CFLAGS+=' -fPIC'
# gtk gui breaks keymappings at the moment
# ./configure --prefix=/usr --sysconfdir=/etc --audio-drv-list='pa alsa sdl' \
# --python=/usr/bin/python2 --smbd=/usr/bin/smbd \
# --enable-docs --libexecdir=/usr/lib/qemu \
# --disable-gtk --enable-linux-aio --enable-seccomp \
# --enable-spice --localstatedir=/var \
-# --enable-tpm
+# --enable-tpm \
+# --enable-modules --enable-{rbd,glusterfs,libiscsi,curl}
./configure --prefix=/usr --sysconfdir=/etc --audio-drv-list='' \
--python=/usr/bin/python2 --smbd=/usr/bin/smbd \
--enable-docs --libexecdir=/usr/lib/qemu \
--disable-gtk --enable-linux-aio --enable-seccomp \
--disable-spice --localstatedir=/var \
- --enable-tpm
+ --enable-tpm \
+ --enable-modules --enable-curl
make V=99
}
package() {
- pkgdesc="A generic and open source processor emulator which achieves a good emulation speed by using dynamic translation. This is a stripped-down version of the official package and requires only the bare essentials for running on a headless server."
-# depends=('pixman' 'libjpeg' 'libpng' 'sdl' 'alsa-lib' 'nss' 'glib2'
-# 'gnutls>=2.4.1' 'bluez-libs' 'vde2' 'util-linux' 'curl' 'libsasl'
-# 'libgl' 'libpulse' 'seabios' 'libcap-ng' 'libaio' 'libseccomp'
-# 'libiscsi' 'libcacard' 'spice' 'usbredir' 'libssh2>=1.5.0' 'ceph')
- depends=('libjpeg' 'glib2'
- 'util-linux' 'curl' 'libsasl'
- 'seabios' 'libcap-ng' 'libaio' 'libseccomp'
- 'libssh2>=1.5.0'
+ pkgdesc='A generic and open source processor emulator which achieves a good emulation speed by using dynamic translation. This is a stripped-down version of the official package and requires only the bare essentials for running on a headless server.'
+# depends=('glibc' 'pixman' 'libjpeg' 'libpng' 'sdl' 'alsa-lib' 'nss' 'glib2'
+# 'gnutls' 'bluez-libs' 'vde2' 'util-linux' 'libsasl' 'libgl'
+# 'seabios' 'libcap' 'libcap-ng' 'libaio' 'libseccomp' 'libcacard'
+# 'spice' 'usbredir' 'lzo' 'snappy' 'gcc-libs' 'zlib' 'bzip2' 'nspr'
+# 'ncurses' 'libx11' 'libusb' 'libpulse' 'libssh2' 'curl')
+ depends=('glibc' 'libjpeg' 'glib2'
+ 'util-linux' 'libsasl'
+ 'seabios' 'libcap' 'libcap-ng' 'libaio' 'libseccomp'
+ 'lzo' 'snappy' 'gcc-libs' 'zlib' 'bzip2' 'nspr'
+ 'ncurses' 'libssh2' 'curl'
)
- backup=('etc/qemu/target-x86_64.conf')
replaces=('qemu-kvm')
+# optdepends=('samba: SMB/CIFS server support'
+# 'qemu-arch-extra: extra architectures support'
+# 'qemu-block-iscsi: iSCSI block support'
+# 'qemu-block-rbd: RBD block support'
+# 'qemu-block-gluster: glusterfs block support')
optdepends=('samba: for SMB Server support')
+ options=(!strip)
install=qemu.install
- cd "${srcdir}/${pkgname:0:-8}-${pkgver}"
- make DESTDIR="${pkgdir}" libexecdir="/usr/lib/qemu" install
+
+ make -C ${pkgname:0:-8}-${pkgver} DESTDIR="${pkgdir}" libexecdir="/usr/lib/qemu" install
+
+ cd "${pkgdir}"
+
# provided by seabios package
- rm "${pkgdir}/usr/share/qemu/bios.bin"
- rm "${pkgdir}/usr/share/qemu/acpi-dsdt.aml"
- rm "${pkgdir}/usr/share/qemu/q35-acpi-dsdt.aml"
- rm "${pkgdir}/usr/share/qemu/bios-256k.bin"
- rm "${pkgdir}/usr/share/qemu/vgabios-cirrus.bin"
- rm "${pkgdir}/usr/share/qemu/vgabios-qxl.bin"
- rm "${pkgdir}/usr/share/qemu/vgabios-stdvga.bin"
- rm "${pkgdir}/usr/share/qemu/vgabios-vmware.bin"
+ rm usr/share/qemu/bios.bin
+ rm usr/share/qemu/acpi-dsdt.aml
+ rm usr/share/qemu/q35-acpi-dsdt.aml
+ rm usr/share/qemu/bios-256k.bin
+ rm usr/share/qemu/vgabios-cirrus.bin
+ rm usr/share/qemu/vgabios-qxl.bin
+ rm usr/share/qemu/vgabios-stdvga.bin
+ rm usr/share/qemu/vgabios-vmware.bin
# remove conflicting /var/run directory
- rm -r "${pkgdir}/var"
- install -D -m644 "${srcdir}/65-kvm.rules" \
- "${pkgdir}/usr/lib/udev/rules.d/65-kvm.rules"
+ rm -r var
+
+ # systemd stuff
+ install -D -m644 "${srcdir}/65-kvm.rules" usr/lib/udev/rules.d/65-kvm.rules
+ install -D -m644 "${srcdir}/qemu.sysusers" usr/lib/sysusers.d/qemu.conf
+
# bridge_helper needs suid
# https://bugs.archlinux.org/task/32565
- chmod u+s "${pkgdir}/usr/lib/qemu/qemu-bridge-helper"
- # add sample config
- echo "allow br0" > ${pkgdir}/etc/qemu/bridge.conf.sample
- # strip scripts directory
- find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
- case "$(file -bi "$binary")" in
- *application/x-executable*) # Binaries
- /usr/bin/strip $STRIP_BINARIES "$binary";;
- esac
- done
- # remove libcacard files
- rm -rf ${pkgdir}/usr/include/cacard
- rm -rf ${pkgdir}/usr/lib/libcacard*
- rm -rf ${pkgdir}/usr/lib/pkgconfig/libcacard.pc
- rm -rf ${pkgdir}/usr/bin/vscclient
+ chmod u+s usr/lib/qemu/qemu-bridge-helper
+
+# # remove libcacard files
+# rm -r usr/include/cacard
+# rm usr/lib/libcacard*
+# rm usr/lib/pkgconfig/libcacard.pc
+# rm usr/bin/vscclient
+#
+# # remove splitted block modules
+# rm usr/lib/qemu/block-{iscsi,rbd,gluster}.so
+
+ # remove guest agent
+ rm usr/bin/qemu-ga
+
+ # remove extra arch
+ for _arch in "${_extra_arches[@]}"; do
+ rm -f usr/bin/qemu-${_arch} usr/bin/qemu-system-${_arch}
+ done
+ for _blob in "${_extra_blob[@]}"; do
+ rm usr/share/qemu/${_blob}
+ done
}
-#package_libcacard() {
-# pkgdesc="Common Access Card (CAC) Emulation"
-# options=('strip')
-# depends=('nss' 'libaio' 'libcap-ng' 'libiscsi' 'curl' 'vde2' 'glib2')
-# mkdir -p ${pkgdir}/usr/bin
-# mkdir -p ${pkgdir}/usr/lib/pkgconfig
-# mkdir -p ${pkgdir}/usr/include/cacard
-# cp -a ${srcdir}/qemu-${pkgver}/libcacard/*.h ${pkgdir}/usr/include/cacard/
-# cp -a ${srcdir}/qemu-${pkgver}/.libs/libcacard.so* ${pkgdir}/usr/lib/
-# cp -a ${srcdir}/qemu-${pkgver}/libcacard.pc ${pkgdir}/usr/lib/pkgconfig/
-# cp -a ${srcdir}/qemu-${pkgver}/.libs/vscclient ${pkgdir}/usr/bin/
-#}
-md5sums=('2fab3ea4460de9b57192e5b8b311f221'
- '5e8a68940c4e0267e795a6ddd144e00e'
- '33ab286a20242dda7743a900f369d68a')
+package_qemu-arch-extra() {
+ pkgdesc='QEMU with full support for non x86 architectures'
+ depends=('glibc' 'gcc-libs' 'glib2' 'qemu')
+ options=(!strip)
+
+ cd qemu-${pkgver}
+ install -dm755 "${pkgdir}"/usr/bin
+ for _arch in "${_extra_arches[@]}"; do
+ install -m755 ${_arch}-*/qemu-*${_arch} "${pkgdir}"/usr/bin
+ done
+
+ cd pc-bios
+ for _blob in "${_extra_blob[@]}"; do
+ install -Dm644 ${_blob} "${pkgdir}"/usr/share/qemu/${_blob}
+ done
+
+ # manually stripping
+ find "${pkgdir}"/usr/bin -type f -exec strip {} \;
+}
+
+package_qemu-block-iscsi() {
+ pkgdesc='QEMU iSCSI block module'
+ depends=('glibc' 'glib2' 'libiscsi')
+
+ install -D qemu-${pkgver}/block-iscsi.so "${pkgdir}"/usr/lib/qemu/block-iscsi.so
+}
+
+package_qemu-block-rbd() {
+ pkgdesc='QEMU RBD block module'
+ depends=('glibc' 'glib2' 'ceph')
+
+ install -D qemu-${pkgver}/block-rbd.so "${pkgdir}"/usr/lib/qemu/block-rbd.so
+}
+
+package_qemu-block-gluster() {
+ pkgdesc='QEMU GlusterFS block module'
+ depends=('glibc' 'glib2' 'glusterfs')
+
+ install -D qemu-${pkgver}/block-gluster.so "${pkgdir}"/usr/lib/qemu/block-gluster.so
+}
+
+package_qemu-guest-agent() {
+ pkgdesc='QEMU Guest Agent'
+ depends=('glibc' 'gcc-libs' 'glib2')
+
+ install -D qemu-${pkgver}/qemu-ga "${pkgdir}"/usr/bin/qemu-ga
+ install -D qemu-ga.service "${pkgdir}"/usr/lib/systemd/system/qemu-ga.service
+}
+
+package_libcacard() {
+ pkgdesc='Common Access Card (CAC) Emulation'
+ depends=('glibc' 'nss' 'nspr' 'glib2')
+
+ cd "${pkgdir}"
+ install -d usr/{bin,lib/pkgconfig,include/cacard}
+ cp -a "${srcdir}"/qemu-${pkgver}/libcacard/*.h usr/include/cacard/
+ cp -a "${srcdir}"/qemu-${pkgver}/libcacard.pc usr/lib/pkgconfig/
+ cp -a "${srcdir}"/qemu-${pkgver}/.libs/vscclient usr/bin/
+ cp -a "${srcdir}"/qemu-${pkgver}/.libs/libcacard.so* usr/lib/
+}
+
+
+# vim:set ts=2 sw=2 et:
diff --git a/qemu-ga.service b/qemu-ga.service
new file mode 100644
index 000000000000..e5eb469f9d49
--- /dev/null
+++ b/qemu-ga.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=QEMU Guest Agent
+
+[Service]
+ExecStart=/usr/bin/qemu-ga
+
+[Install]
+WantedBy=multi-user.target
diff --git a/qemu.install b/qemu.install
index 59a32cd8ddda..b1604ef1329e 100644
--- a/qemu.install
+++ b/qemu.install
@@ -1,19 +1,25 @@
-# kvm: the new package version
+# Arg 1: the new package version
post_install() {
- #
- groupadd kvm -f -g 78
+ # create kvm group
+ systemd-sysusers qemu.conf
+
+ # trigger events on modules files when already loaded
+ for _f in /sys/devices/virtual/misc/{kvm,vhost-net}; do
+ [[ -e "$_f" ]] && udevadm trigger "$_f"
+ done
}
+# arg 1: the new package version
+# arg 2: the old package version
post_upgrade() {
- if [ "$(vercmp $2 0.11)" -lt 0 ]; then
+ if (( "$(vercmp $2 0.11)" < 0 )); then
echo "With the release of qemu and qemu-kvm 0.12.X, the kqemu kernel module"
echo "is no longer supported and will be removed from the repositories. You"
echo "can safely uninstall it from your system."
fi
- if [ "$(vercmp $2 1.3.1)" -lt 0 ]; then
+ if (( "$(vercmp $2 1.3.1)" < 0 )); then
echo "With the release of qemu 1.3.0, qemu-kvm binary is removed."
echo "You need to change the emulator path, if you use libvirt by using:"
echo "'virsh edit <vm-name>'"
fi
}
-
diff --git a/qemu.sysusers b/qemu.sysusers
new file mode 100644
index 000000000000..4c03e8242d92
--- /dev/null
+++ b/qemu.sysusers
@@ -0,0 +1 @@
+g kvm 78 -