diff options
author | Aric Belsito <lluixhi@gmail.com> | 2017-04-12 08:40:32 -0700 |
---|---|---|
committer | Aric Belsito <lluixhi@gmail.com> | 2017-04-12 08:40:54 -0700 |
commit | ddd9689812e829d241100f0e110cac8ef0cf464e (patch) | |
tree | 39eb32e07bbf77e257e1c9895433a3c43e77fabb /app-emulation | |
parent | net-libs/webkit-gtk: version bump to 2.16.1 (diff) | |
download | musl-ddd9689812e829d241100f0e110cac8ef0cf464e.tar.gz musl-ddd9689812e829d241100f0e110cac8ef0cf464e.tar.bz2 musl-ddd9689812e829d241100f0e110cac8ef0cf464e.zip |
app-emulation/qemu: version bump to 2.8.1
remove 2.8.0-r3
Diffstat (limited to 'app-emulation')
-rw-r--r-- | app-emulation/qemu/Manifest | 9 | ||||
-rw-r--r-- | app-emulation/qemu/files/qemu-2.8.0-CVE-2017-7377.patch | 49 | ||||
-rw-r--r-- | app-emulation/qemu/files/qemu-binfmt.initd-r1 | 138 | ||||
-rw-r--r-- | app-emulation/qemu/metadata.xml | 1 | ||||
-rw-r--r-- | app-emulation/qemu/qemu-2.8.0-r9.ebuild | 3 | ||||
-rw-r--r-- | app-emulation/qemu/qemu-2.8.1.ebuild (renamed from app-emulation/qemu/qemu-2.8.0-r3.ebuild) | 390 |
6 files changed, 282 insertions, 308 deletions
diff --git a/app-emulation/qemu/Manifest b/app-emulation/qemu/Manifest index 3e953efa..394f74d3 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 00000000..f2d317c3 --- /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 <liq3ea@gmail.com> +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 <liqiang6-s@360.cn> +(reworded the changelog, Greg Kurz) +Signed-off-by: Greg Kurz <groug@kaod.org> +--- + 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 fe62a2a2..00000000 --- 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 9a8a1a33..3fe0408c 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 8ba80793..97305f1a 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 index 3a161b99..30f278e2 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 |