commit:     ddd9689812e829d241100f0e110cac8ef0cf464e
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Wed Apr 12 15:40:32 2017 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
CommitDate: Wed Apr 12 15:40:54 2017 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=ddd96898

app-emulation/qemu: version bump to 2.8.1

remove 2.8.0-r3

 app-emulation/qemu/Manifest                        |   9 +-
 .../qemu/files/qemu-2.8.0-CVE-2017-7377.patch      |  49 +++
 app-emulation/qemu/files/qemu-binfmt.initd-r1      | 138 --------
 app-emulation/qemu/metadata.xml                    |   1 -
 app-emulation/qemu/qemu-2.8.0-r9.ebuild            |   3 +-
 .../{qemu-2.8.0-r3.ebuild => qemu-2.8.1.ebuild}    | 390 ++++++++++++---------
 6 files changed, 282 insertions(+), 308 deletions(-)

diff --git a/app-emulation/qemu/Manifest b/app-emulation/qemu/Manifest
index 3e953ef..394f74d 100644
--- a/app-emulation/qemu/Manifest
+++ b/app-emulation/qemu/Manifest
@@ -26,12 +26,13 @@ AUX qemu-2.8.0-CVE-2017-5973.patch 2815 SHA256 
206d01053ce678e2c83174b278755e112
 AUX qemu-2.8.0-CVE-2017-5987.patch 1889 SHA256 
c4f2175970deca9b00bf657e66b8df31a02efce469eec02279a9659b9cb18bb0 SHA512 
32708f91edbbb61ac444ee71b97a30138380544389f6265d7cb7aec330ebaaa7ca69844a9462c817fbda117e78748fc4fdeb655e70bcd72ddd8b112fd9619b0d
 WHIRLPOOL 
1aa99740495c0d2a577cf13c47669aeba75ad389394736ce16fde31c91931254820accad85a6d6fee9757595bec3f222413a89fe4ca125913be7ecc97f33b365
 AUX qemu-2.8.0-CVE-2017-6058.patch 3797 SHA256 
06c01fcd53dab66af55df164f1616d14847b2a0fd46abe7445b7e3e7b7ee77cf SHA512 
1425e7df38cd44903fe78e7728d7eb3df2d8486895f38a87c4e0c63aa5cc4a2b19032d486fcb5676201242039364a1f3d34b256606b5f8ae74028432e6d50286
 WHIRLPOOL 
9a48c2f00ac146c29163422c10ca62e3065a36752b865b6b9e3408edf019f3585579ac074b5325777e6a405a11d0ce09da33eb6499012377f0c9ef8c52bf2840
 AUX qemu-2.8.0-CVE-2017-6505.patch 1481 SHA256 
55e3b7e65e519caef4fdd28cccb973613759cce0d67eb64c2093b4f0a4e428e1 SHA512 
5326f28a9340f392e4f32e4cd5f58cae0769859e10fd4d201983d40ec6b4d094d6a0cad2638e1e6f3e5228b93af26cc4f4a155e0d94bad89d0ea9b866f535aa7
 WHIRLPOOL 
c88312cd5e779a98c905f175d61400ef7bb59795cc1e0392da0018a158a4c435ffa07f1e6a621db6eea925a0dbb986442eab4f79f956dc1955058fc97670f390
+AUX qemu-2.8.0-CVE-2017-7377.patch 1554 SHA256 
36fbd8ec9fa7d910fde8b6b8905717b322bd23b50c2b2f925e1a2415ae306755 SHA512 
195be1a75340c41aa89614aad8d07f2cf630eb10f3160cb8a86d85371ea9d7dcdbe9d49e9752ac3d6765c8d4c99c845408933b57cf21199f77ba09fcf79a02c8
 WHIRLPOOL 
8d7677ae3cfe18e34072ef23666c4658553a7d3b564d96e480ae432281d403242f2013d9fb189d473ab9c31def515401d22c04ba8e86d93d0369e95b1e371574
 AUX qemu-2.8.0-F_SHLCK-and-F_EXLCK.patch 574 SHA256 
d02353daa0ecfe161e938a5e54feab641b901f4a35c8f5831133676a6f53f43f SHA512 
6b64750335aae1142ca9132fb766ac2aaeacfcdda0aa0cfca19afc4c3ea3806e30ce603fcec3767e40e84efb0ae8b9a23f21d46c807c13bb646be74f99e13389
 WHIRLPOOL 
7401c3daf162c71a5a5c3729855fddb5df95609b34c86ea0f4d872c8f132d6ac089cfb35a990af70aef8b7b63fe075a1e2be376b6db09bc70e8d51e48aded354
-AUX qemu-binfmt.initd-r1 7959 SHA256 
13c2791fb48080e9f264670dbe1915f03249d87d740f9b0f2c9502fccb056d03 SHA512 
8aee19b4a993113ef4fafe3ab8b561edcc0c16782b36947e757233b6d33d26b48c1b9087c0f300be0d21ad19de14c684e8f2032ae2cd28888130a37ca4d6c314
 WHIRLPOOL 
3d86861fbe66c0a192a5577b7cd83ab01efd184849b25f8a804aace7a1fb46d87363d6417cc21a3447d2ed50c9db4409121dddae297678e3adc7d4c71556b695
 AUX qemu-binfmt.initd.head 1445 SHA256 
a9b4b1d1ffa82d572c01f14ebfbafb4b3a4c2eb5cad5af62c059f603a9f5a277 SHA512 
a735268ae9ac84d8f2f2893bf018ee6de33231fa94a823bd8502b529bb456635c1ab5cf9b440df5ede8e414291f8bf45fc53898c2f3939c50d5ec4ffa554396a
 WHIRLPOOL 
3ec0f916d5928d464fa8416c8eac472cfa01b560bba07642ff7929799918d1c8059ac7368ff5551e6aa993027849de08035d856db7981315d8e4ec470a0f785e
 AUX qemu-binfmt.initd.tail 245 SHA256 
1b765f5212946b73b8e4d92f64d34a9d2e358ef541c02164f6d6dd93cb15e1e7 SHA512 
bcca16805f8380d52cc591ea3d65a8f6e5de456730618f6aee301510edb75d235a22d4d7aeed224882210392840adb403eb53234b6cb76a4cb24533852a8b737
 WHIRLPOOL 
41ddd1751101646e700a6fe4ef879bd4149d646a801f97e40534051895697dcbded06a1edda51457a0d624fbf68442c3e57178a3ee8e683e35368b88d10ba4a4
 DIST qemu-2.8.0-CVE-2016-9602-patches.tar.xz 16264 SHA256 
18ac829c6003a3f997db4030a46b422028c58fead158f0c5ffe36ad65acb84e0 SHA512 
a56694d1600e4fd1ffd6bbe031a0db226fc5c88306797cc4e42d1dc6127b83d1791cb4e026988b3aad82eab84382e41077ae71e532d1d3489e179730185c0964
 WHIRLPOOL 
22057b001c478b2b0d97ad70393c973aefc6277d89bb5a1ae03c3c39b5182ddfbe541964761f512ed5735dc442e1f40d0a955ad5b270758e21ce815be86b24bd
 DIST qemu-2.8.0.tar.bz2 28368517 SHA256 
dafd5d7f649907b6b617b822692f4c82e60cf29bc0fc58bc2036219b591e5e62 SHA512 
50f2988d822388ba9fd1bf5dbe68359033ed7432d7f0f9790299f32f63faa6dc72979256b5632ba572d47ee3e74ed40e3e8e331dc6303ec1599f1b4367cb78c2
 WHIRLPOOL 
0ce4e0539657eb832e4039819e7360c792b6aa41c718f0e0d762f4933217f0d370af94b1d6d9776853575b4a6811d8c85db069bf09d21bd15399ac8b50440ff5
-EBUILD qemu-2.8.0-r3.ebuild 21992 SHA256 
a2c7a92d214b05e2c6f58fb0d7263472d6a44259de99afc674df713303b432bb SHA512 
80699e92ae269cb6ab33b3ec0be164111b68e25d498d8af3624f04bca799174937f1fd2cf49357e0598f6567873cdc8aac3310a1175e328207de8ca5b97856d1
 WHIRLPOOL 
2079c97d3aa8589c70288cbcca7e1d8591adb1b40a0846b6a683fc6c72f142892e65b6adfac750931e2e63aa33a9d99f31f9659bd5664e6145059f28ecfced1a
-EBUILD qemu-2.8.0-r9.ebuild 23468 SHA256 
171081a422acc5ecb21cd0400cdb1ea5ad3112379e417aefe37893d1f8ef1575 SHA512 
0c4dbb8a03eaf5232819b6482c853d400ffc1c863d5df360a3820a5fa418ea90e204fdf447e72acd5489d8e9294d703be85c58ecabd460f5690c51526c05bad6
 WHIRLPOOL 
5e8ee3b23f57a62e32f4671c7803880c551b826d0dad357bb587b6ccae4fbf74c2f90b83812c8db9e15b8531150e729bfb7d4b084c702757dc59e22d8b5ee141
-MISC metadata.xml 3890 SHA256 
50fd5960fa2280175116b5ee5ff4a9625f02e38f560061a00b2640cde4846d69 SHA512 
f19e826a9daba7f2676f0459f97e7bdc752652ccf8b9dd009fd569977015b0656fee21c74529e53b6bc51c2f19e746f417c3dc1e1472e3767cdefa0746b0876c
 WHIRLPOOL 
03e0dafcdc13beffb0044ce5227b83aa272a21e9835fce9ad16d5bdf56ee1a4c3a1ae4b10d1cdaf405502532b84991b150de262f12fa72497052c2377046845f
+DIST qemu-2.8.1.tar.bz2 28366270 SHA256 
018e4c7ed22c220395cf41f835d01505e49d0e579a548bd3d72b03809442bbcd SHA512 
0397b4029cdcb77ed053c44b3579a3f34894038e6fc6b4aa88de14515f5a78bf2f41c5e865f37111529f567c85d2f1c4deefae47dde54f76eac79410e5b2bdda
 WHIRLPOOL 
c41f53f18fac44efd1c81ba9d95204d23e9a70dc9c21624177be2fe92a327428fd5704b25bc334229fa36ae395fb4c82ba3955db39719c4458343978a4d3141a
+EBUILD qemu-2.8.0-r9.ebuild 23415 SHA256 
332494856afccbb1f1347731f97fc9293ededcea348e2227e9c05a0a68cdcea2 SHA512 
499730d9913480fd8dd696a2201a7ac8542d046e516756bb58c001be83db043b1b88f7cf34d4c98188b37bc52569034803c1d225a97b2fc02a45eb466486e6fd
 WHIRLPOOL 
9b561abcd59ec05024b3370ff45c05c7d0fcf617bce7a29aece0f9bada3a077ab4700ffeb777ddac9d1c1eda9a80dfe24f36d60110bc34026cb1380e1454ae25
+EBUILD qemu-2.8.1.ebuild 22805 SHA256 
fd50a516ec50da69dc8c4dc2ea83c0a3391fcd6087d62650f37183d46c70d933 SHA512 
cf05a4725142584b213a1fc03106fc4faa5eeeda5d8e5e1ef020095a2f3b289842537a731a959f628bfd5e36c03786a8404288058514e8057cc1db779b97f6eb
 WHIRLPOOL 
ba86ba5234aae044690657585f2f384b0724061e37c74a4b55df50c0c0bce5615abbb1e6566d2e1cb56b51e4e49fc1495c78cae3f25a4741b8dd7eb493d22a8a
+MISC metadata.xml 3794 SHA256 
149f7bc9927e13bbf7355972e85df6f9f198dd17fb575a7e516817d6a88018fb SHA512 
10f130f225b90dacf8262247d795a247abfdcbf3ad5fbe0693e8d4db79f755984f690cb150a7eb5a8e5d669ce404145c4fbb6b200d6362319be74759fd78b6d3
 WHIRLPOOL 
6a5e88caeb64387f619a19fecb55c39ccf3c8dcd360523e8d61b80051001c02fe81432c55e40b3f360295b35e9f5a1f707c570baf95cad06d18c4cd484da0ceb

diff --git a/app-emulation/qemu/files/qemu-2.8.0-CVE-2017-7377.patch 
b/app-emulation/qemu/files/qemu-2.8.0-CVE-2017-7377.patch
new file mode 100644
index 0000000..f2d317c
--- /dev/null
+++ b/app-emulation/qemu/files/qemu-2.8.0-CVE-2017-7377.patch
@@ -0,0 +1,49 @@
+From d63fb193e71644a073b77ff5ac6f1216f2f6cf6e Mon Sep 17 00:00:00 2001
+From: Li Qiang <[email protected]>
+Date: Mon, 27 Mar 2017 21:13:19 +0200
+Subject: [PATCH] 9pfs: fix file descriptor leak
+
+The v9fs_create() and v9fs_lcreate() functions are used to create a file
+on the backend and to associate it to a fid. The fid shouldn't be already
+in-use, otherwise both functions may silently leak a file descriptor or
+allocated memory. The current code doesn't check that.
+
+This patch ensures that the fid isn't already associated to anything
+before using it.
+
+Signed-off-by: Li Qiang <[email protected]>
+(reworded the changelog, Greg Kurz)
+Signed-off-by: Greg Kurz <[email protected]>
+---
+ hw/9pfs/9p.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
+index b8c0b99..48babce 100644
+--- a/hw/9pfs/9p.c
++++ b/hw/9pfs/9p.c
+@@ -1550,6 +1550,10 @@ static void coroutine_fn v9fs_lcreate(void *opaque)
+         err = -ENOENT;
+         goto out_nofid;
+     }
++    if (fidp->fid_type != P9_FID_NONE) {
++        err = -EINVAL;
++        goto out;
++    }
+ 
+     flags = get_dotl_openflags(pdu->s, flags);
+     err = v9fs_co_open2(pdu, fidp, &name, gid,
+@@ -2153,6 +2157,10 @@ static void coroutine_fn v9fs_create(void *opaque)
+         err = -EINVAL;
+         goto out_nofid;
+     }
++    if (fidp->fid_type != P9_FID_NONE) {
++        err = -EINVAL;
++        goto out;
++    }
+     if (perm & P9_STAT_MODE_DIR) {
+         err = v9fs_co_mkdir(pdu, fidp, &name, perm & 0777,
+                             fidp->uid, -1, &stbuf);
+-- 
+2.10.2
+

diff --git a/app-emulation/qemu/files/qemu-binfmt.initd-r1 
b/app-emulation/qemu/files/qemu-binfmt.initd-r1
deleted file mode 100644
index fe62a2a..0000000
--- a/app-emulation/qemu/files/qemu-binfmt.initd-r1
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390 program execution by the 
kernel
-
-# Defaulting to OC should be safe because it comes down to:
-#  - do we trust the interp itself to not be malicious?  yes; we built it.
-#  - do we trust the programs we're running?  ish; same permission as native
-#    binaries apply.  so if user can do bad stuff natively, cross isn't worse.
-: ${QEMU_BINFMT_FLAGS:=OC}
-
-depend() {
-    after procfs
-}
-
-start() {
-   ebegin "Registering qemu-user binaries (flags: ${QEMU_BINFMT_FLAGS})"
-
-   if [ ! -d /proc/sys/fs/binfmt_misc ] ; then
-      modprobe -q binfmt_misc
-   fi
-
-   if [ ! -d /proc/sys/fs/binfmt_misc ] ; then
-       eend $? "You need support for 'misc binaries' in your kernel!" || return
-   fi
-
-   if [ ! -f /proc/sys/fs/binfmt_misc/register ] ; then
-      mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc >/dev/null 2>&1
-      eend $? || return
-   fi
-
-   # probe cpu type
-   cpu=`uname -m`
-   case "$cpu" in
-      i386|i486|i586|i686|i86pc|BePC|x86_64)
-         cpu="i386"
-         ;;
-      m68k)
-         cpu="m68k"
-         ;;
-      mips*)
-         cpu="mips"
-      ;;
-      "Power Macintosh"|ppc|ppc64)
-         cpu="ppc"
-      ;;
-      armv[4-9]*)
-         cpu="arm"
-      ;;
-      sparc*)
-         cpu="sparc"
-      ;;
-   esac
-
-   # register the interpreter for each cpu except for the native one
-   if [ $cpu != "i386" -a -x "/usr/bin/qemu-i386" ] ; then
-      echo 
':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\xfe\xff\xff\xff:/usr/bin/qemu-i386:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-      echo 
':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\xfe\xff\xff\xff:/usr/bin/qemu-i386:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "alpha" -a -x "/usr/bin/qemu-alpha" ] ; then
-      echo 
':alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "arm" -a -x "/usr/bin/qemu-arm" ] ; then
-      echo   
':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\x00\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "arm" -a -x "/usr/bin/qemu-armeb" ] ; then
-      echo   
':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "aarch64" -a -x "/usr/bin/qemu-aarch64" ] ; then
-      echo 
':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "sparc" -a -x "/usr/bin/qemu-sparc" ] ; then
-      echo   
':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\xff\xfe\xff\xff:/usr/bin/qemu-sparc:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "ppc" -a -x "/usr/bin/qemu-ppc" ] ; then
-      echo   
':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\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "m68k" -a -x "/usr/bin/qemu-m68k" ] ; then
-      #echo   'Please check cpu value and header information for m68k!'
-      echo   
':m68k:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-m68k:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips" ] ; then
-      # FIXME: We could use the other endianness on a MIPS host.
-      echo   
':mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsel" ] ; then
-      echo   
':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsn32" ] ; then
-      echo   
':mipsn32:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mipsn32:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsn32el" ] ; then
-      echo   
':mipsn32el:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsn32el:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips64" ] ; then
-      echo   
':mips64:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips64:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips64el" ] ; then
-      echo   
':mips64el:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mips64el:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "sh" -a -x "/usr/bin/qemu-sh4" ] ; then
-      echo    
':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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "sh" -a -x "/usr/bin/qemu-sh4eb" ] ; then
-      echo    
':sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   if [ $cpu != "s390x" -a -x "/usr/bin/qemu-s390x" ] ; then
-      echo   
':s390x:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-s390x:'"${QEMU_BINFMT_FLAGS}"
 > /proc/sys/fs/binfmt_misc/register
-   fi
-   eend $?
-}
-
-stop() {
-   ebegin "Unregistering qemu-user binaries"
-   local arches
-
-   arches="${arches} i386 i486"
-   arches="${arches} alpha"
-   arches="${arches} arm armeb"
-   arches="${arches} aarch64"
-   arches="${arches} sparc"
-   arches="${arches} ppc"
-   arches="${arches} m68k"
-   arches="${arches} mips mipsel mipsn32 mipsn32el mips64 mips64el"
-   arches="${arches} sh4 sh4eb"
-   arches="${arches} s390x"
-
-   for a in ${arches}; do
-      if [ -f /proc/sys/fs/binfmt_misc/$a ] ; then
-         echo '-1' > /proc/sys/fs/binfmt_misc/$a
-      fi
-   done
-
-   eend $?
-}
-
-# vim: ts=4 :

diff --git a/app-emulation/qemu/metadata.xml b/app-emulation/qemu/metadata.xml
index 9a8a1a3..3fe0408 100644
--- a/app-emulation/qemu/metadata.xml
+++ b/app-emulation/qemu/metadata.xml
@@ -32,7 +32,6 @@
                <flag name="sdl2">Use libsdl2 instead of libsdl</flag>
                <flag name="spice">Enable Spice protocol support via 
<pkg>app-emulation/spice</pkg></flag>
                <flag name="ssh">Enable SSH based block device support via 
<pkg>net-libs/libssh2</pkg></flag>
-               <flag name="static-softmmu">Build the Software MMU (system) 
targets as static binaries</flag>
                <flag name="static-user">Build the User targets as static 
binaries</flag>
                <flag name="static">Build the User and Software MMU (system) 
targets as well as tools as static binaries</flag>
                <flag name="snappy">Enable support for snappy compression</flag>

diff --git a/app-emulation/qemu/qemu-2.8.0-r9.ebuild 
b/app-emulation/qemu/qemu-2.8.0-r9.ebuild
index 8ba8079..97305f1 100644
--- a/app-emulation/qemu/qemu-2.8.0-r9.ebuild
+++ b/app-emulation/qemu/qemu-2.8.0-r9.ebuild
@@ -17,7 +17,7 @@ if [[ ${PV} = *9999* ]]; then
        SRC_URI=""
 else
        SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2";
-       KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86 ~x86-fbsd"
+       KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
 fi
 
 # bug #606088
@@ -753,7 +753,6 @@ src_install() {
 
 pkg_postinst() {
        DISABLE_AUTOFORMATTING=true
-       FORCE_PRINT_ELOG=1 # remove for next version bump
        readme.gentoo_print_elog
 
        if [[ -n ${softmmu_targets} ]] && use kernel_linux; then

diff --git a/app-emulation/qemu/qemu-2.8.0-r3.ebuild 
b/app-emulation/qemu/qemu-2.8.1.ebuild
similarity index 69%
rename from app-emulation/qemu/qemu-2.8.0-r3.ebuild
rename to app-emulation/qemu/qemu-2.8.1.ebuild
index 3a161b9..30f278e 100644
--- a/app-emulation/qemu/qemu-2.8.0-r3.ebuild
+++ b/app-emulation/qemu/qemu-2.8.1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="6"
 
 PYTHON_COMPAT=( python2_7 )
 PYTHON_REQ_USE="ncurses,readline"
@@ -13,11 +13,11 @@ inherit eutils flag-o-matic linux-info toolchain-funcs 
multilib python-r1 \
 
 if [[ ${PV} = *9999* ]]; then
        EGIT_REPO_URI="git://git.qemu.org/qemu.git"
-       inherit git-2
+       inherit git-r3
        SRC_URI=""
 else
        SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2";
-       KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
+       KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86 ~x86-fbsd"
 fi
 
 DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
@@ -25,19 +25,20 @@ HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org";
 
 LICENSE="GPL-2 LGPL-2 BSD-2"
 SLOT="0"
-IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt glusterfs 
\
-gnutls gtk gtk2 infiniband iscsi +jpeg \
-kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
-+png pulseaudio python \
-rbd sasl +seccomp sdl sdl2 selinux smartcard snappy spice ssh static 
static-softmmu
-static-user systemtap tci test +threads usb usbredir vde +vhost-net \
-virgl virtfs +vnc vte xattr xen xfs"
-
-COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel mips
-mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc sparc64
-x86_64"
-IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} lm32 moxie ppcemb tricore unicore32 
xtensa xtensaeb"
-IUSE_USER_TARGETS="${COMMON_TARGETS} armeb mipsn32 mipsn32el ppc64abi32 
ppc64le sparc32plus tilegx"
+IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt
+       glusterfs gnutls gtk gtk2 infiniband iscsi +jpeg kernel_linux
+       kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs +png
+       pulseaudio python rbd sasl +seccomp sdl sdl2 selinux smartcard snappy
+       spice ssh static static-user systemtap tci test +threads usb usbredir
+       vde +vhost-net virgl virtfs +vnc vte xattr xen xfs"
+
+COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel
+       mips mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc
+       sparc64 x86_64"
+IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS}
+       lm32 moxie ppcemb tricore unicore32 xtensa xtensaeb"
+IUSE_USER_TARGETS="${COMMON_TARGETS}
+       armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
 
 use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' 
${IUSE_SOFTMMU_TARGETS})
 use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
@@ -52,32 +53,37 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}
        qemu_softmmu_targets_ppc? ( fdt )
        qemu_softmmu_targets_ppc64? ( fdt )
        sdl2? ( sdl )
-       static? ( static-softmmu static-user )
-       static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
+       static? ( static-user !alsa !bluetooth !gtk !gtk2 !opengl !pulseaudio )
        virtfs? ( xattr )
        vte? ( gtk )"
 
+# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
+# and user/softmmu targets (qemu-*, qemu-system-*).
+#
 # Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
 #
 # The attr lib isn't always linked in (although the USE flag is always
 # respected).  This is because qemu supports using the C library's API
 # when available rather than always using the extranl library.
-#
-# Older versions of gnutls are supported, but it's simpler to just require
-# the latest versions.  This is also why we require nettle.
-#
-# TODO: Split out tools deps into another var.  e.g. bzip2 is only used by
-# system binaries and tools, not user binaries.
-COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
+ALL_DEPEND="
+       >=dev-libs/glib-2.0[static-libs(+)]
+       >=x11-libs/pixman-0.28.0[static-libs(+)]
        sys-libs/zlib[static-libs(+)]
-       bzip2? ( app-arch/bzip2[static-libs(+)] )
+       python? ( ${PYTHON_DEPS} )
+       systemtap? ( dev-util/systemtap )
        xattr? ( sys-apps/attr[static-libs(+)] )"
-SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
-       >=x11-libs/pixman-0.28.0[static-libs(+)]
-       accessibility? ( app-accessibility/brltty[static-libs(+)] )
+
+# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
+# softmmu targets (qemu-system-*).
+SOFTMMU_TOOLS_DEPEND="
+       accessibility? (
+               app-accessibility/brltty[api]
+               app-accessibility/brltty[static-libs(+)]
+       )
        aio? ( dev-libs/libaio[static-libs(+)] )
        alsa? ( >=media-libs/alsa-lib-1.0.13 )
        bluetooth? ( net-wireless/bluez )
+       bzip2? ( app-arch/bzip2[static-libs(+)] )
        caps? ( sys-libs/libcap-ng[static-libs(+)] )
        curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
        fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
@@ -139,8 +145,9 @@ SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
        vde? ( net-misc/vde[static-libs(+)] )
        virgl? ( media-libs/virglrenderer[static-libs(+)] )
        virtfs? ( sys-libs/libcap )
+       xen? ( app-emulation/xen-tools:= )
        xfs? ( sys-fs/xfsprogs[static-libs(+)] )"
-USER_LIB_DEPEND="${COMMON_LIB_DEPEND}"
+
 X86_FIRMWARE_DEPEND="
        >=sys-firmware/ipxe-1.0.0_p20130624
        pin-upstream-blobs? (
@@ -153,14 +160,14 @@ X86_FIRMWARE_DEPEND="
                sys-firmware/sgabios
                sys-firmware/vgabios
        )"
+
 CDEPEND="
-       !static-softmmu? ( $(printf "%s? ( 
${SOFTMMU_LIB_DEPEND//\[static-libs(+)]} ) " ${use_softmmu_targets}) )
-       !static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND//\[static-libs(+)]} ) 
" ${use_user_targets}) )
+       !static? (
+               ${ALL_DEPEND//\[static-libs(+)]}
+               ${SOFTMMU_TOOLS_DEPEND//\[static-libs(+)]}
+       )
        qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
-       qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
-       python? ( ${PYTHON_DEPS} )
-       systemtap? ( dev-util/systemtap )
-       xen? ( app-emulation/xen-tools:= )"
+       qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )"
 DEPEND="${CDEPEND}
        dev-lang/perl
        =dev-lang/python-2*
@@ -168,15 +175,45 @@ DEPEND="${CDEPEND}
        virtual/pkgconfig
        kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
        gtk? ( nls? ( sys-devel/gettext ) )
-       static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND} ) " 
${use_softmmu_targets}) )
-       static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND} ) " 
${use_user_targets}) )
+       static? (
+               ${ALL_DEPEND}
+               ${SOFTMMU_TOOLS_DEPEND}
+       )
+       static-user? ( ${ALL_DEPEND} )
        test? (
                dev-libs/glib[utils]
                sys-devel/bc
        )"
 RDEPEND="${CDEPEND}
-       selinux? ( sec-policy/selinux-qemu )
-"
+       selinux? ( sec-policy/selinux-qemu )"
+
+PATCHES=(
+       # musl patches
+       "${FILESDIR}"/${PN}-2.8.0-F_SHLCK-and-F_EXLCK.patch
+       
"${FILESDIR}"/${PN}-2.0.0-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch
+       "${FILESDIR}"/${PN}-2.2.0-_sigev_un.patch
+
+       # gentoo patches
+       "${FILESDIR}"/${PN}-2.5.0-cflags.patch
+       "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
+       "${FILESDIR}"/${PN}-2.7.0-CVE-2016-8669-1.patch #597108
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9908.patch   #601826
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9912.patch   #602630
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10028.patch  #603444
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10155.patch  #606720
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-1.patch #606264
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-2.patch
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5552.patch   #606722
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5578.patch   #607000
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5579.patch   #607100
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5856.patch   #608036
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5857.patch   #608038
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5898.patch   #608520
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5973.patch   #609334
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5987.patch   #609398
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-6505.patch   #612220
+       "${FILESDIR}"/${PN}-2.8.0-CVE-2017-7377.patch   #614744
+)
 
 STRIP_MASK="/usr/share/qemu/palcode-clipper"
 
@@ -186,8 +223,7 @@ QA_PREBUILT="
        usr/share/qemu/openbios-sparc32
        usr/share/qemu/palcode-clipper
        usr/share/qemu/s390-ccw.img
-       usr/share/qemu/u-boot.e500
-"
+       usr/share/qemu/u-boot.e500"
 
 QA_WX_LOAD="usr/bin/qemu-i386
        usr/bin/qemu-x86_64
@@ -212,27 +248,26 @@ QA_WX_LOAD="usr/bin/qemu-i386
        usr/bin/qemu-s390x
        usr/bin/qemu-unicore32"
 
-DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure
-you have the kernel module loaded before running kvm. The easiest way to
-ensure that the kernel module is loaded is to load it on boot.\n
-For AMD CPUs the module is called 'kvm-amd'.\n
-For Intel CPUs the module is called 'kvm-intel'.\n
-Please review /etc/conf.d/modules for how to load these.\n\n
-Make sure your user is in the 'kvm' group\n
-Just run 'gpasswd -a <USER> kvm', then have <USER> re-login.\n\n
-For brand new installs, the default permissions on /dev/kvm might not let you
-access it.  You can tell udev to reset ownership/perms:\n
-udevadm trigger -c add /dev/kvm"
-
-qemu_support_kvm() {
-       if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 \
-               use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64 \
-               use qemu_softmmu_targets_s390x; then
-               return 0
-       fi
+DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure you 
have the
+kernel module loaded before running kvm. The easiest way to ensure that the
+kernel module is loaded is to load it on boot.
+       For AMD CPUs the module is called 'kvm-amd'.
+       For Intel CPUs the module is called 'kvm-intel'.
+Please review /etc/conf.d/modules for how to load these.
 
-       return 1
-}
+Make sure your user is in the 'kvm' group. Just run
+       $ gpasswd -a <USER> kvm
+then have <USER> re-login.
+
+For brand new installs, the default permissions on /dev/kvm might not let
+you access it.  You can tell udev to reset ownership/perms:
+       $ udevadm trigger -c add /dev/kvm
+
+If you want to register binfmt handlers for qemu user targets:
+For openrc:
+       # rc-update add qemu-binfmt
+For systemd:
+       # ln -s /usr/share/qemu/binfmt.d/qemu.conf /etc/binfmt.d/qemu.conf"
 
 pkg_pretend() {
        if use kernel_linux && kernel_is lt 2 6 25; then
@@ -333,34 +368,7 @@ src_prepare() {
                -e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
                Makefile Makefile.target || die
 
-       # Patching for musl
-       epatch "${FILESDIR}"/${PN}-2.8.0-F_SHLCK-and-F_EXLCK.patch
-       epatch 
"${FILESDIR}"/${PN}-2.0.0-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch
-       epatch "${FILESDIR}"/${PN}-2.2.0-_sigev_un.patch
-
-       epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
-       epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
-       epatch "${FILESDIR}"/${PN}-2.7.0-CVE-2016-8669-1.patch #597108
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9908.patch   #601826
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9912.patch   #602630
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10028.patch  #603444
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10155.patch  #606720
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2615.patch   #608034
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2630.patch   #609396
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-1.patch #606264
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-2.patch
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5552.patch   #606722
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5578.patch   #607000
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5579.patch   #607100
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5667.patch   #607766
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5856.patch   #608036
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5857.patch   #608038
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5898.patch   #608520
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5931.patch   #608728
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5973.patch   #609334
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5987.patch   #609398
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-6058.patch   #609638
-       epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2620.patch   #609206
+       default
 
        # Fix ld and objcopy being called directly
        tc-export AR LD OBJCOPY
@@ -368,8 +376,6 @@ src_prepare() {
        # Verbose builds
        MAKEOPTS+=" V=1"
 
-       epatch_user
-
        # Run after we've applied all patches.
        handle_locales
 }
@@ -383,7 +389,6 @@ qemu_src_configure() {
 
        local buildtype=$1
        local builddir="${S}/${buildtype}-build"
-       local static_flag="static-${buildtype}"
 
        mkdir "${builddir}"
 
@@ -412,9 +417,9 @@ qemu_src_configure() {
                $(use_enable xattr attr)
        )
 
-       # Disable options not used by user targets as the default configure
-       # options will autoprobe and try to link in a bunch of unused junk.
-       conf_softmmu() {
+       # Disable options not used by user targets. This simplifies building
+       # static user targets (USE=static-user) considerably.
+       conf_notuser() {
                if [[ ${buildtype} == "user" ]] ; then
                        echo "--disable-${2:-$1}"
                else
@@ -422,48 +427,61 @@ qemu_src_configure() {
                fi
        }
        conf_opts+=(
-               $(conf_softmmu accessibility brlapi)
-               $(conf_softmmu aio linux-aio)
-               $(conf_softmmu bzip2)
-               $(conf_softmmu bluetooth bluez)
-               $(conf_softmmu caps cap-ng)
-               $(conf_softmmu curl)
-               $(conf_softmmu fdt)
-               $(conf_softmmu glusterfs)
-               $(conf_softmmu gnutls)
-               $(conf_softmmu gnutls nettle)
-               $(conf_softmmu gtk)
-               $(conf_softmmu infiniband rdma)
-               $(conf_softmmu iscsi libiscsi)
-               $(conf_softmmu jpeg vnc-jpeg)
-               $(conf_softmmu kernel_linux kvm)
-               $(conf_softmmu lzo)
-               $(conf_softmmu ncurses curses)
-               $(conf_softmmu nfs libnfs)
-               $(conf_softmmu numa)
-               $(conf_softmmu opengl)
-               $(conf_softmmu png vnc-png)
-               $(conf_softmmu rbd)
-               $(conf_softmmu sasl vnc-sasl)
-               $(conf_softmmu sdl)
-               $(conf_softmmu seccomp)
-               $(conf_softmmu smartcard)
-               $(conf_softmmu snappy)
-               $(conf_softmmu spice)
-               $(conf_softmmu ssh libssh2)
-               $(conf_softmmu usb libusb)
-               $(conf_softmmu usbredir usb-redir)
-               $(conf_softmmu vde)
-               $(conf_softmmu vhost-net)
-               $(conf_softmmu virgl virglrenderer)
-               $(conf_softmmu virtfs)
-               $(conf_softmmu vnc)
-               $(conf_softmmu vte)
-               $(conf_softmmu xen)
-               $(conf_softmmu xen xen-pci-passthrough)
-               $(conf_softmmu xfs xfsctl)
+               $(conf_notuser accessibility brlapi)
+               $(conf_notuser aio linux-aio)
+               $(conf_notuser bzip2)
+               $(conf_notuser bluetooth bluez)
+               $(conf_notuser caps cap-ng)
+               $(conf_notuser curl)
+               $(conf_notuser fdt)
+               $(conf_notuser glusterfs)
+               $(conf_notuser gnutls)
+               $(conf_notuser gnutls nettle)
+               $(conf_notuser gtk)
+               $(conf_notuser infiniband rdma)
+               $(conf_notuser iscsi libiscsi)
+               $(conf_notuser jpeg vnc-jpeg)
+               $(conf_notuser kernel_linux kvm)
+               $(conf_notuser lzo)
+               $(conf_notuser ncurses curses)
+               $(conf_notuser nfs libnfs)
+               $(conf_notuser numa)
+               $(conf_notuser opengl)
+               $(conf_notuser png vnc-png)
+               $(conf_notuser rbd)
+               $(conf_notuser sasl vnc-sasl)
+               $(conf_notuser sdl)
+               $(conf_notuser seccomp)
+               $(conf_notuser smartcard)
+               $(conf_notuser snappy)
+               $(conf_notuser spice)
+               $(conf_notuser ssh libssh2)
+               $(conf_notuser usb libusb)
+               $(conf_notuser usbredir usb-redir)
+               $(conf_notuser vde)
+               $(conf_notuser vhost-net)
+               $(conf_notuser virgl virglrenderer)
+               $(conf_notuser virtfs)
+               $(conf_notuser vnc)
+               $(conf_notuser vte)
+               $(conf_notuser xen)
+               $(conf_notuser xen xen-pci-passthrough)
+               $(conf_notuser xfs xfsctl)
        )
 
+       if [[ ! ${buildtype} == "user" ]] ; then
+               # audio options
+               local audio_opts="oss"
+               use alsa && audio_opts="alsa,${audio_opts}"
+               use sdl && audio_opts="sdl,${audio_opts}"
+               use pulseaudio && audio_opts="pa,${audio_opts}"
+               conf_opts+=(
+                       --audio-drv-list="${audio_opts}"
+               )
+               use gtk && conf_opts+=( --with-gtkabi=$(usex gtk2 2.0 3.0) )
+               use sdl && conf_opts+=( --with-sdlabi=$(usex sdl2 2.0 1.2) )
+       fi
+
        case ${buildtype} in
        user)
                conf_opts+=(
@@ -472,31 +490,25 @@ qemu_src_configure() {
                        --disable-blobs
                        --disable-tools
                )
+               local static_flag="static-user"
                ;;
        softmmu)
-               # audio options
-               local audio_opts="oss"
-               use alsa && audio_opts="alsa,${audio_opts}"
-               use sdl && audio_opts="sdl,${audio_opts}"
-               use pulseaudio && audio_opts="pa,${audio_opts}"
-
                conf_opts+=(
                        --disable-linux-user
                        --enable-system
+                       --disable-tools
                        --with-system-pixman
-                       --audio-drv-list="${audio_opts}"
                )
-               use gtk && conf_opts+=( --with-gtkabi=$(usex gtk2 2.0 3.0) )
-               use sdl && conf_opts+=( --with-sdlabi=$(usex sdl2 2.0 1.2) )
+               local static_flag="static"
                ;;
        tools)
                conf_opts+=(
                        --disable-linux-user
                        --disable-system
                        --disable-blobs
-                       $(use_enable bzip2)
+                       --enable-tools
                )
-               static_flag="static"
+               local static_flag="static"
                ;;
        esac
 
@@ -552,7 +564,7 @@ src_configure() {
 
        [[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
        [[ -n ${user_targets}    ]] && qemu_src_configure "user"
-       [[ -z ${softmmu_targets}${user_targets} ]] && qemu_src_configure "tools"
+       qemu_src_configure "tools"
 }
 
 src_compile() {
@@ -566,10 +578,8 @@ src_compile() {
                default
        fi
 
-       if [[ -z ${softmmu_targets}${user_targets} ]]; then
-               cd "${S}/tools-build"
-               default
-       fi
+       cd "${S}/tools-build"
+       default
 }
 
 src_test() {
@@ -589,13 +599,69 @@ qemu_python_install() {
        python_doscript "${S}/scripts/qmp/qemu-ga-client"
 }
 
+# Generate binfmt support files.
+#   - /etc/init.d/qemu-binfmt script which registers the user handlers (openrc)
+#   - /usr/share/qemu/binfmt.d/qemu.conf (for use with systemd-binfmt)
+generate_initd() {
+       local out="${T}/qemu-binfmt"
+       local out_systemd="${T}/qemu.conf"
+       local d="${T}/binfmt.d"
+
+       einfo "Generating qemu binfmt scripts and configuration files"
+
+       # Generate the debian fragments first.
+       mkdir -p "${d}"
+       "${S}"/scripts/qemu-binfmt-conf.sh \
+               --debian \
+               --exportdir "${d}" \
+               --qemu-path "${EPREFIX}/usr/bin" \
+               || die
+       # Then turn the fragments into a shell script we can source.
+       sed -E -i \
+               -e 's:^([^ ]+) (.*)$:\1="\2":' \
+               "${d}"/* || die
+
+       # Generate the init.d script by assembling the fragments from above.
+       local f qcpu package interpreter magic mask
+       cat "${FILESDIR}"/qemu-binfmt.initd.head >"${out}" || die
+       for f in "${d}"/qemu-* ; do
+               source "${f}"
+
+               # Normalize the cpu logic like we do in the init.d for the 
native cpu.
+               qcpu=${package#qemu-}
+               case ${qcpu} in
+               arm*)   qcpu="arm";;
+               mips*)  qcpu="mips";;
+               ppc*)   qcpu="ppc";;
+               s390*)  qcpu="s390";;
+               sh*)    qcpu="sh";;
+               sparc*) qcpu="sparc";;
+               esac
+
+               cat <<EOF >>"${out}"
+       if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then
+               echo 
':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" 
>/proc/sys/fs/binfmt_misc/register
+       fi
+EOF
+
+               echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" 
>>"${out_systemd}"
+
+       done
+       cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
+}
+
 src_install() {
        if [[ -n ${user_targets} ]]; then
                cd "${S}/user-build"
                emake DESTDIR="${ED}" install
 
-               # Install binfmt handler init script for user targets
-               newinitd "${FILESDIR}/qemu-binfmt.initd-r1" qemu-binfmt
+               # Install binfmt handler init script for user targets.
+               generate_initd
+               doinitd "${T}/qemu-binfmt"
+
+               # Install binfmt/qemu.conf.
+               insinto "/usr/share/qemu/binfmt.d"
+               doins "${T}/qemu.conf"
        fi
 
        if [[ -n ${softmmu_targets} ]]; then
@@ -614,14 +680,12 @@ src_install() {
                fi
        fi
 
-       if [[ -z ${softmmu_targets}${user_targets} ]]; then
-               cd "${S}/tools-build"
-               emake DESTDIR="${ED}" install
-       fi
+       cd "${S}/tools-build"
+       emake DESTDIR="${ED}" install
 
        # Disable mprotect on the qemu binaries as they use JITs to be fast 
#459348
        pushd "${ED}"/usr/bin >/dev/null
-       pax-mark m "${softmmu_bins[@]}" "${user_bins[@]}"
+       pax-mark mr "${softmmu_bins[@]}" "${user_bins[@]}" # bug 575594
        popd >/dev/null
 
        # Install config file example for qemu-bridge-helper
@@ -675,13 +739,13 @@ src_install() {
                fi
        fi
 
-       qemu_support_kvm && readme.gentoo_create_doc
+       DISABLE_AUTOFORMATTING=true
+       readme.gentoo_create_doc
 }
 
 pkg_postinst() {
-       if qemu_support_kvm; then
-               readme.gentoo_print_elog
-       fi
+       DISABLE_AUTOFORMATTING=true
+       readme.gentoo_print_elog
 
        if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
                udev_reload

Reply via email to