diff --git a/Manifest.files.gz b/Manifest.files.gz
index 240d1917d8fc..6a40f7cab002 100644
Binary files a/Manifest.files.gz and b/Manifest.files.gz differ
diff --git a/acct-group/Manifest.gz b/acct-group/Manifest.gz
index 1a986c0ef522..7403f3f2092d 100644
Binary files a/acct-group/Manifest.gz and b/acct-group/Manifest.gz differ
diff --git a/acct-group/dnscrypt-proxy/metadata.xml b/acct-group/dnscrypt-proxy/metadata.xml
index fd9e2163ba5d..979bcc7aec93 100644
--- a/acct-group/dnscrypt-proxy/metadata.xml
+++ b/acct-group/dnscrypt-proxy/metadata.xml
@@ -5,8 +5,4 @@
sam@gentoo.org
Sam James
-
- gyakovlev@gentoo.org
- Georgy Yakovlev
-
diff --git a/acct-user/Manifest.gz b/acct-user/Manifest.gz
index 9b4090e96129..15188693b2bd 100644
Binary files a/acct-user/Manifest.gz and b/acct-user/Manifest.gz differ
diff --git a/acct-user/dnscrypt-proxy/metadata.xml b/acct-user/dnscrypt-proxy/metadata.xml
index fd9e2163ba5d..979bcc7aec93 100644
--- a/acct-user/dnscrypt-proxy/metadata.xml
+++ b/acct-user/dnscrypt-proxy/metadata.xml
@@ -5,8 +5,4 @@
sam@gentoo.org
Sam James
-
- gyakovlev@gentoo.org
- Georgy Yakovlev
-
diff --git a/app-accessibility/Manifest.gz b/app-accessibility/Manifest.gz
index 51a0c30af019..29be2d8d44bf 100644
Binary files a/app-accessibility/Manifest.gz and b/app-accessibility/Manifest.gz differ
diff --git a/app-accessibility/accerciser/Manifest b/app-accessibility/accerciser/Manifest
index ab37e08f3150..53f17c429cf0 100644
--- a/app-accessibility/accerciser/Manifest
+++ b/app-accessibility/accerciser/Manifest
@@ -1 +1,2 @@
DIST accerciser-3.22.0.tar.xz 3060756 BLAKE2B a648c764c5f101f323458c692cb4171704b7b710558f4103b57d87ca58c2d0d9c03cad72de1d3be9483d317ad94c95e43bb2437515093d6ffd93089a58e5fab1 SHA512 980db5dcd0bdc78314ab87cce95cfcfa018bf302acc66ea2dd1bddfb61de5bfe2e64344cff63740c38be33124ff49c75699aa6867d5e85b25d422b5af1b025c1
+DIST accerciser-3.36.2.tar.xz 1995756 BLAKE2B 14d569f159cda685bb5217cb650d64c473c296e6c0e74bf2d6290908ea4aef06fd736aa8bdb7782a7bbd5231895a53e85fa362382fd15cf0554721fe46c8cbe9 SHA512 fb2ecb35826f1a868a8badcefcb4941258273bfc639996b8d4cecbd5d9700cb48e102891105842fcf3b0cb5f7a53df28de3283a80130d83695528db06ff0f268
diff --git a/app-accessibility/accerciser/accerciser-3.36.2.ebuild b/app-accessibility/accerciser/accerciser-3.36.2.ebuild
new file mode 100644
index 000000000000..b9c382d195a4
--- /dev/null
+++ b/app-accessibility/accerciser/accerciser-3.36.2.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python3_{6,7} )
+PYTHON_REQ_USE="xml"
+
+inherit gnome2 python-single-r1
+
+DESCRIPTION="Interactive Python accessibility explorer"
+HOMEPAGE="https://wiki.gnome.org/Apps/Accerciser"
+
+LICENSE="BSD CC-BY-SA-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ >=app-accessibility/at-spi2-core-2.5.2:2
+ >=x11-libs/gtk+-3.1.13:3[introspection]
+ $(python_gen_cond_dep '
+ >=dev-python/pygobject-2.90.3:3[${PYTHON_USEDEP}]
+ >=dev-python/ipython-0.11[${PYTHON_USEDEP}]
+ >=dev-python/pyatspi-2.1.5[${PYTHON_USEDEP}]
+ dev-python/pycairo[${PYTHON_USEDEP}]
+ dev-python/python-xlib[${PYTHON_USEDEP}]
+ ')
+
+ dev-libs/atk[introspection]
+ >=dev-libs/glib-2.28:2
+ dev-libs/gobject-introspection:=
+ x11-libs/gdk-pixbuf[introspection]
+ x11-libs/libwnck:3[introspection]
+ x11-libs/pango[introspection]
+ gnome-base/librsvg[introspection]
+ ${PYTHON_DEPS}
+"
+DEPEND="${RDEPEND}
+ dev-util/itstool
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+"
+
+src_install() {
+ gnome2_src_install
+ python_optimize
+}
diff --git a/app-admin/Manifest.gz b/app-admin/Manifest.gz
index 2796119d716a..99b35fe1330e 100644
Binary files a/app-admin/Manifest.gz and b/app-admin/Manifest.gz differ
diff --git a/app-admin/denyhosts/Manifest b/app-admin/denyhosts/Manifest
index 23c4ab6ea9ba..46ed157092aa 100644
--- a/app-admin/denyhosts/Manifest
+++ b/app-admin/denyhosts/Manifest
@@ -1,2 +1 @@
-DIST denyhosts-2.9.tar.gz 49472 BLAKE2B 94f18da3db9dd7e0d979d4fb536160114fe1dc95ac43ad1f7bf3f235702698210e62b3872bf7f3360945228b187d97a274797d535a9b12b552bddf649b5d1fdf SHA512 f41e2985e84f0eeaa493def6b8609de934889d02b124962b0bfd02ebe5e41d0670822124eb50ed84eb1c3b8a2a96775fbe09386cef48a3c3e04949fd6b1452c1
DIST denyhosts-3.0.tar.gz 56283 BLAKE2B 1ecb8a13ec9511cb4ac65579aa8f88117264f231b586c30a61ad9c78abd17aeebc5642e70f162fa7e73fe81a99821d494efca213b1bf864fd0e2043fa4374e6a SHA512 8a1c796c259049ffab2c88cef780b175ec75c94216841421f831dfbf45f4ba0cdbcfbb0e3dab7200aa79eeb2416db5234ad5016d5770d8ab2f28ef4c9754e70d
diff --git a/app-admin/denyhosts/denyhosts-2.9.ebuild b/app-admin/denyhosts/denyhosts-2.9.ebuild
deleted file mode 100644
index 7711a19aa6d9..000000000000
--- a/app-admin/denyhosts/denyhosts-2.9.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-PYTHON_COMPAT=( python2_7 )
-
-inherit distutils-r1 eutils readme.gentoo systemd
-
-DESCRIPTION="DenyHosts is a utility to help sys admins thwart ssh hackers"
-HOMEPAGE="http://denyhost.sourceforge.net/"
-SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm hppa ppc sparc x86"
-IUSE=""
-
-DEPEND=""
-RDEPEND=""
-
-DISABLE_AUTOFORMATTING="yes"
-DOC_CONTENTS="
->=net-misc/openssh-6.7p1 dropped support for sys-apps/tcp-wrappers
-(see bug#531156) that means you either have patch openssh or use
-denyhosts' iptables feature to get any protection.
-
-You can configure DenyHosts to run as a daemon by running:
-# rc-update add denyhosts default
-or:
-# systemctl enable denyhosts.service
-(if you use systemd)
-
-To run DenyHosts as a cronjob instead of a daemon add the following
-to /etc/crontab
-# run DenyHosts every 10 minutes
-*/10 * * * * root /usr/bin/denyhosts.py -c /etc/denyhosts.conf
-
-More information can be found at ${HOMEPAGE}faq.html"
-
-src_prepare() {
- #systemd needs HOSTNAME
- epatch "${FILESDIR}"/${PN}-2.6-hostname.patch
-
- sed -e '/^DENY_THRESHOLD_VALID =/s/=.*/= 5/' \
- -e '/^SECURE_LOG/s/^/#/' \
- -e '\@#SECURE_LOG.*/var/log/messages@s/^#//' \
- -i denyhosts.conf || die "sed failed"
-
- distutils-r1_src_prepare
-}
-
-src_install() {
- readme.gentoo_create_doc
-
- dodoc CHANGELOG.txt README.txt PKG-INFO
- distutils-r1_src_install
-
- dodir /etc/logrotate.d
- insinto /etc/logrotate.d
- newins "${FILESDIR}"/${PN}.logrotate-r2 ${PN}
-
- newinitd "${FILESDIR}"/denyhosts.init-r2 denyhosts
- systemd_dounit "${FILESDIR}"/${PN}.service
-
- keepdir /var/lib/denyhosts
-}
-
-pkg_postinst() {
- [[ -f "${EROOT}etc/hosts.deny" ]] || touch "${EROOT}etc/hosts.deny"
-
- readme.gentoo_print_elog
-}
diff --git a/app-admin/denyhosts/denyhosts-3.0.ebuild b/app-admin/denyhosts/denyhosts-3.0.ebuild
deleted file mode 100644
index cd2c9fdeea38..000000000000
--- a/app-admin/denyhosts/denyhosts-3.0.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-PYTHON_COMPAT=( python2_7 )
-
-inherit distutils-r1 eutils readme.gentoo systemd
-
-DESCRIPTION="DenyHosts is a utility to help sys admins thwart ssh hackers"
-HOMEPAGE="https://github.com/denyhosts/denyhosts"
-SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~hppa ~ppc ~sparc x86"
-IUSE=""
-
-DEPEND=""
-RDEPEND=""
-
-DISABLE_AUTOFORMATTING="yes"
-DOC_CONTENTS="
->=net-misc/openssh-6.7p1 dropped support for sys-apps/tcp-wrappers
-(see bug#531156) that means you either have patch openssh or use
-denyhosts' iptables feature to get any protection.
-
-You can configure DenyHosts to run as a daemon by running:
-# rc-update add denyhosts default
-or:
-# systemctl enable denyhosts.service
-(if you use systemd)
-
-To run DenyHosts as a cronjob instead of a daemon add the following
-to /etc/crontab
-# run DenyHosts every 10 minutes
-*/10 * * * * root /usr/bin/denyhosts.py -c /etc/denyhosts.conf
-
-More information can be found at ${HOMEPAGE}faq.html"
-
-src_prepare() {
- sed -e '/^DENY_THRESHOLD_VALID =/s/=.*/= 5/' \
- -e '/^SECURE_LOG/s/^/#/' \
- -e '\@#SECURE_LOG.*/var/log/messages@s/^#//' \
- -i denyhosts.conf || die "sed failed"
-
- distutils-r1_src_prepare
-}
-
-src_install() {
- readme.gentoo_create_doc
-
- dodoc CHANGELOG.txt README.md
- distutils-r1_src_install
-
- dodir /etc/logrotate.d
- insinto /etc/logrotate.d
- newins "${FILESDIR}"/${PN}.logrotate-r2 ${PN}
-
- newinitd "${FILESDIR}"/denyhosts.init-r2 denyhosts
- systemd_dounit "${FILESDIR}"/${PN}.service
-
- keepdir /var/lib/denyhosts
-}
diff --git a/app-admin/denyhosts/files/denyhosts-2.6-hostname.patch b/app-admin/denyhosts/files/denyhosts-2.6-hostname.patch
deleted file mode 100644
index 56d881319c5f..000000000000
--- a/app-admin/denyhosts/files/denyhosts-2.6-hostname.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ./denyhosts.py.orig ./denyhosts.py
---- ./denyhosts.py.orig 2012-01-30 13:14:41.146715839 -0600
-+++ ./denyhosts.py 2012-01-30 14:45:14.372539341 -0600
-@@ -1,5 +1,6 @@
- #!/usr/bin/env python
- import os
-+import platform
- import sys
-
- import DenyHosts.python_version
-@@ -107,6 +108,10 @@ if __name__ == '__main__':
- print "DenyHosts version:", VERSION
- sys.exit(0)
-
-+ # This is generally expected to be in the environment, but there's no
-+ # non-hackish way to get systemd to set it, so just hack it in here.
-+ os.environ['HOSTNAME'] = platform.node()
-+
- prefs = Prefs(config_file)
-
- first_time = 0
diff --git a/app-admin/denyhosts/metadata.xml b/app-admin/denyhosts/metadata.xml
index 3e89d981c937..463b166d5858 100644
--- a/app-admin/denyhosts/metadata.xml
+++ b/app-admin/denyhosts/metadata.xml
@@ -1,10 +1,7 @@
-
- proxy-maint@gentoo.org
- Proxy Maintainers
-
+
denyhosts/denyhosts
denyhost
diff --git a/app-admin/hcloud/Manifest b/app-admin/hcloud/Manifest
index 4c7c830f89e4..1cfa05c5fca0 100644
--- a/app-admin/hcloud/Manifest
+++ b/app-admin/hcloud/Manifest
@@ -1,2 +1,2 @@
DIST hcloud-1.16.1.tar.xz 649100 BLAKE2B a019f21d8c87dd47fc3c2eb069576fd367c1dd6dac7a5909f76a9c31fe9922e93ba4e1fdde3bd86dcbdb25bb2cf84b1eaddd9c7e6b62bb08647ba9d7a804e06a SHA512 e8a4e3d9c883b009eea98443716264115d55b93b212b0a0df64316f63310210a3812b3948d16f822b6f8f32d029029da5b51be7b7561d9396f28a406061a507c
-DIST hcloud-1.16.2.tar.xz 678408 BLAKE2B 01d10032b93295ac5e255103b38023b323b545cb30f78cbd9e6a0dc392579c94142b9c7575e383c5dbd5e88fb17ca1b51419df014782d517f4392683e987c9a5 SHA512 74902f212ebd432d4bec8c566a13daddf38349989e3329b62d75f332941930b55839392efcb7d9e8081700352505def9912220b228f45b92a4a3e853b8091722
+DIST hcloud-1.17.0.tar.xz 687880 BLAKE2B c83530946dd04afc59d45a2bbb12b6a4034dfe5b8c3826e4e78f29e88891672c21e896fd9d24394ce943f9b6574928ae144a564abde3fec8a243cc5fc87e8bdb SHA512 5025357392e9b7661876f059a416e6d6f9eea89e16a9abaacaeb72506aaa5d4d6a193e266d23f01cd0f5d32048f66a3f6e22a1c9c042c2e3183a1e164da2ccc6
diff --git a/app-admin/hcloud/hcloud-1.16.2.ebuild b/app-admin/hcloud/hcloud-1.17.0.ebuild
similarity index 100%
rename from app-admin/hcloud/hcloud-1.16.2.ebuild
rename to app-admin/hcloud/hcloud-1.17.0.ebuild
diff --git a/app-admin/puppet-lint/puppet-lint-2.4.2.ebuild b/app-admin/puppet-lint/puppet-lint-2.4.2.ebuild
index 738798f64b2f..78d9bfa89e77 100644
--- a/app-admin/puppet-lint/puppet-lint-2.4.2.ebuild
+++ b/app-admin/puppet-lint/puppet-lint-2.4.2.ebuild
@@ -1,8 +1,8 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
-USE_RUBY="ruby24 ruby25 ruby26"
+USE_RUBY="ruby24 ruby25 ruby26 ruby27"
RUBY_FAKEGEM_RECIPE_TEST="rspec3"
diff --git a/app-arch/Manifest.gz b/app-arch/Manifest.gz
index fc7e580ab987..7ce3c77a0d1f 100644
Binary files a/app-arch/Manifest.gz and b/app-arch/Manifest.gz differ
diff --git a/app-arch/fastjar/fastjar-0.98-r3.ebuild b/app-arch/fastjar/fastjar-0.98-r3.ebuild
index 34ca86e5a0bd..c33c9d06c5b7 100644
--- a/app-arch/fastjar/fastjar-0.98-r3.ebuild
+++ b/app-arch/fastjar/fastjar-0.98-r3.ebuild
@@ -11,7 +11,7 @@ SRC_URI="mirror://nongnu/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="amd64 ppc ppc64 x86 ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris"
+KEYWORDS="amd64 ~arm64 ppc ppc64 x86 ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris"
IUSE=""
diff --git a/app-arch/pigz/files/2.4-trailing-junk.patch b/app-arch/pigz/files/2.4-trailing-junk.patch
new file mode 100644
index 000000000000..eb5585b7d362
--- /dev/null
+++ b/app-arch/pigz/files/2.4-trailing-junk.patch
@@ -0,0 +1,27 @@
+From 1414ff3eb0b1ac9e5f096b0a28efa459cb8be1cd Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev
+Date: Fri, 10 Jul 2020 19:46:10 -0700
+Subject: [PATCH] Ignore trailing junk on .gz by default, to emulate gzip.
+
+backport of
+https://github.com/madler/pigz/commit/9696c84cb1963651707e649978afb07d0c11b254
+---
+ pigz.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pigz.c b/pigz.c
+index bbbfd2c..f2e79d7 100644
+--- a/pigz.c
++++ b/pigz.c
+@@ -3368,7 +3368,7 @@ local void infchk(void) {
+ cat();
+ else if (was > 1 && get_header(0) != -5)
+ complain("warning: %s: entries after the first were ignored", g.inf);
+- else if ((was == 0 && ret != -1) || (was == 1 && (GET(), !g.in_eof)))
++ else if (( g.verbosity > 1 && was == 0 && ret != -1) || (was == 1 && (GET(), !g.in_eof)))
+ complain("warning: %s: trailing junk was ignored", g.inf);
+ }
+
+--
+2.27.0
+
diff --git a/app-arch/pigz/pigz-2.4.ebuild b/app-arch/pigz/pigz-2.4-r1.ebuild
similarity index 94%
rename from app-arch/pigz/pigz-2.4.ebuild
rename to app-arch/pigz/pigz-2.4-r1.ebuild
index fe1190bc3a3f..29c9951c6bfa 100644
--- a/app-arch/pigz/pigz-2.4.ebuild
+++ b/app-arch/pigz/pigz-2.4-r1.ebuild
@@ -21,6 +21,8 @@ DEPEND="${RDEPEND}
static? ( ${LIB_DEPEND} )
test? ( app-arch/ncompress )"
+PATCHES=( "${FILESDIR}/${PV}-trailing-junk.patch" )
+
src_compile() {
use static && append-ldflags -static
emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
diff --git a/app-doc/Manifest.gz b/app-doc/Manifest.gz
index 37dd088fc248..97ddffcdc082 100644
Binary files a/app-doc/Manifest.gz and b/app-doc/Manifest.gz differ
diff --git a/app-doc/doxygen/doxygen-1.8.17.ebuild b/app-doc/doxygen/doxygen-1.8.17.ebuild
index ec9079cd682c..bf7d60e1406b 100644
--- a/app-doc/doxygen/doxygen-1.8.17.ebuild
+++ b/app-doc/doxygen/doxygen-1.8.17.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} = *9999* ]]; then
SRC_URI=""
else
SRC_URI="http://doxygen.nl/files/${P}.src.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
DESCRIPTION="Documentation system for most programming languages"
diff --git a/app-emulation/Manifest.gz b/app-emulation/Manifest.gz
index 617805927ad2..791cc6ecd46e 100644
Binary files a/app-emulation/Manifest.gz and b/app-emulation/Manifest.gz differ
diff --git a/app-emulation/protontricks/protontricks-1.4.1-r1.ebuild b/app-emulation/protontricks/protontricks-1.4.1-r1.ebuild
index e8c4edf44be5..aff61b39a84c 100644
--- a/app-emulation/protontricks/protontricks-1.4.1-r1.ebuild
+++ b/app-emulation/protontricks/protontricks-1.4.1-r1.ebuild
@@ -3,7 +3,7 @@
EAPI=7
-PYTHON_COMPAT=( python3_{6..9} )
+PYTHON_COMPAT=( python3_{6..9} pypy3 )
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_SETUPTOOLS=rdepend
diff --git a/app-emulation/qemu-riscv64-bin/Manifest b/app-emulation/qemu-riscv64-bin/Manifest
index 366c8ee33a9b..dca4fafb8830 100644
--- a/app-emulation/qemu-riscv64-bin/Manifest
+++ b/app-emulation/qemu-riscv64-bin/Manifest
@@ -1 +1,2 @@
DIST qemu-riscv64-bin-3.1.0-r4.tar.xz 889764 BLAKE2B 888fef2f27f44be098e9b834b083558ce18d98337612b4de2278ffe5d6599248d9ed4e99153ad9b2c1a5b773131c420bb23ce6d080943af744df34464660bc42 SHA512 bc92110f6730c61bd39056d0bf3f84b35ed340a47af51b28b27554f9f2f72409221d2c81826b718742475d0fc48040c81e8f051e29b4f13412c3a39e282471e0
+DIST qemu-riscv64-bin-5.0.0.tar.xz 922240 BLAKE2B d4ff41c8e45ca99bc1b9e795d9e218b05be283b32d179e8ab88d07bd333a52fce7893739e6572219083d5d56a7abb7cc1870df7c585ca41af15b56a5dc30369d SHA512 1ba28679ce4bf1f11b77059dae8cb76f0095cc4427159d769947b8a1b1212c9de0a25a236c69ff9780dd111a22fa6e01519a3017b0b0a5d29069575501552f40
diff --git a/app-emulation/qemu-riscv64-bin/qemu-riscv64-bin-5.0.0.ebuild b/app-emulation/qemu-riscv64-bin/qemu-riscv64-bin-5.0.0.ebuild
new file mode 100644
index 000000000000..650e2af57e19
--- /dev/null
+++ b/app-emulation/qemu-riscv64-bin/qemu-riscv64-bin-5.0.0.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2019-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Statically linked x86-64 binary of app-emulation/qemu, riscv64 emulator"
+
+HOMEPAGE="http://www.qemu.org"
+SRC_URI="https://dev.gentoo.org/~dilfridge/distfiles/${PN}-${PVR}.tar.xz"
+LICENSE="GPL-2 LGPL-2 BSD-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="!app-emulation/qemu[qemu_user_targets_riscv64]"
+
+QA_PREBUILT="*"
+
+S=${WORKDIR}
+
+src_install() {
+ dobin qemu-riscv64
+}
diff --git a/app-emulation/qemu/metadata.xml b/app-emulation/qemu/metadata.xml
index 0c30c4582643..eda19489ec96 100644
--- a/app-emulation/qemu/metadata.xml
+++ b/app-emulation/qemu/metadata.xml
@@ -40,6 +40,7 @@
Enable rados block device backend support, see http://ceph.newdream.net/wiki/QEMU-RBD
Enable the SDL-based console
SDL Image support for icons
+ Enable TCP/IP in hypervisor via net-libs/libslirp
Enable Spice protocol support via app-emulation/spice
Enable SSH based block device support via net-libs/libssh2
Build the User targets as static binaries
@@ -58,8 +59,7 @@
Enable VirtFS via virtio-9p-pci / fsdev. See http://wiki.qemu.org/Documentation/9psetup
Enable terminal support (x11-libs/vte) in the GTK+ interface
Add support for getting and setting POSIX extended attributes, through
- sys-apps/attr. Requisite for the virtfs backend.
-
+ sys-apps/attr. Requisite for the virtfs backend.
Enables support for Xen backends
Support xfsctl() notification and syncing for XFS backed
virtual disks.
diff --git a/app-emulation/qemu/qemu-5.0.0-r2.ebuild b/app-emulation/qemu/qemu-5.0.0-r2.ebuild
new file mode 100644
index 000000000000..dd30807e9857
--- /dev/null
+++ b/app-emulation/qemu/qemu-5.0.0-r2.ebuild
@@ -0,0 +1,840 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+PYTHON_COMPAT=( python{3_6,3_7,3_8} )
+PYTHON_REQ_USE="ncurses,readline"
+
+PLOCALES="bg de_DE fr_FR hu it tr zh_CN"
+
+FIRMWARE_ABI_VERSION="4.0.0-r50"
+
+inherit eutils linux-info toolchain-funcs multilib python-r1 \
+ udev fcaps readme.gentoo-r1 pax-utils l10n xdg-utils
+
+if [[ ${PV} = *9999* ]]; then
+ EGIT_REPO_URI="https://git.qemu.org/git/qemu.git"
+ EGIT_SUBMODULES=(
+ tests/fp/berkeley-{test,soft}float-3
+ ui/keycodemapdb
+ )
+ inherit git-r3
+ SRC_URI=""
+else
+ SRC_URI="https://download.qemu.org/${P}.tar.xz"
+ KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
+fi
+
+DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
+HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
+
+LICENSE="GPL-2 LGPL-2 BSD-2"
+SLOT="0"
+
+IUSE="accessibility +aio alsa bzip2 capstone +caps +curl debug doc
+ +fdt glusterfs gnutls gtk infiniband iscsi io-uring
+ jemalloc +jpeg kernel_linux
+ kernel_FreeBSD lzo ncurses nfs nls numa opengl +oss +pin-upstream-blobs
+ plugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux
+ slirp
+ smartcard snappy spice ssh static static-user systemtap tci test usb
+ usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen
+ xfs +xkb zstd"
+
+COMMON_TARGETS="aarch64 alpha arm cris hppa i386 m68k microblaze microblazeel
+ mips mips64 mips64el mipsel nios2 or1k ppc ppc64 riscv32 riscv64 s390x
+ sh4 sh4eb sparc sparc64 x86_64 xtensa xtensaeb"
+IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS}
+ lm32 moxie rx tricore unicore32"
+IUSE_USER_TARGETS="${COMMON_TARGETS}
+ aarch64_be 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})
+IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
+
+RESTRICT="!test? ( test )"
+# Allow no targets to be built so that people can get a tools-only build.
+# Block USE flag configurations known to not work.
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+ qemu_softmmu_targets_arm? ( fdt )
+ qemu_softmmu_targets_microblaze? ( fdt )
+ qemu_softmmu_targets_mips64el? ( fdt )
+ qemu_softmmu_targets_ppc64? ( fdt )
+ qemu_softmmu_targets_ppc? ( fdt )
+ qemu_softmmu_targets_riscv32? ( fdt )
+ qemu_softmmu_targets_riscv64? ( fdt )
+ static? ( static-user !alsa !gtk !opengl !pulseaudio !plugins !rbd !snappy )
+ static-user? ( !plugins )
+ virtfs? ( xattr )
+ vte? ( gtk )
+ plugins? ( !static !static-user )
+"
+
+# 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 external library.
+ALL_DEPEND="
+ >=dev-libs/glib-2.0[static-libs(+)]
+ sys-libs/zlib[static-libs(+)]
+ python? ( ${PYTHON_DEPS} )
+ systemtap? ( dev-util/systemtap )
+ xattr? ( sys-apps/attr[static-libs(+)] )"
+
+# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
+# softmmu targets (qemu-system-*).
+SOFTMMU_TOOLS_DEPEND="
+ dev-libs/libxml2[static-libs(+)]
+ xkb? ( x11-libs/libxkbcommon[static-libs(+)] )
+ >=x11-libs/pixman-0.28.0[static-libs(+)]
+ accessibility? (
+ app-accessibility/brltty[api]
+ app-accessibility/brltty[static-libs(+)]
+ )
+ aio? ( dev-libs/libaio[static-libs(+)] )
+ alsa? ( >=media-libs/alsa-lib-1.0.13 )
+ bzip2? ( app-arch/bzip2[static-libs(+)] )
+ capstone? ( dev-libs/capstone:= )
+ caps? ( sys-libs/libcap-ng[static-libs(+)] )
+ curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
+ fdt? ( >=sys-apps/dtc-1.5.0[static-libs(+)] )
+ glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
+ gnutls? (
+ dev-libs/nettle:=[static-libs(+)]
+ >=net-libs/gnutls-3.0:=[static-libs(+)]
+ )
+ gtk? (
+ x11-libs/gtk+:3
+ vte? ( x11-libs/vte:2.91 )
+ )
+ infiniband? (
+ sys-fabric/libibumad:=[static-libs(+)]
+ sys-fabric/libibverbs:=[static-libs(+)]
+ sys-fabric/librdmacm:=[static-libs(+)]
+ )
+ iscsi? ( net-libs/libiscsi )
+ io-uring? ( sys-libs/liburing[static-libs(+)] )
+ jemalloc? ( dev-libs/jemalloc )
+ jpeg? ( virtual/jpeg:0=[static-libs(+)] )
+ lzo? ( dev-libs/lzo:2[static-libs(+)] )
+ ncurses? (
+ sys-libs/ncurses:0=[unicode]
+ sys-libs/ncurses:0=[static-libs(+)]
+ )
+ nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )
+ numa? ( sys-process/numactl[static-libs(+)] )
+ opengl? (
+ virtual/opengl
+ media-libs/libepoxy[static-libs(+)]
+ media-libs/mesa[static-libs(+)]
+ media-libs/mesa[egl,gbm]
+ )
+ png? ( media-libs/libpng:0=[static-libs(+)] )
+ pulseaudio? ( media-sound/pulseaudio )
+ rbd? ( sys-cluster/ceph )
+ sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
+ sdl? (
+ media-libs/libsdl2[video]
+ media-libs/libsdl2[static-libs(+)]
+ )
+ sdl-image? ( media-libs/sdl2-image[static-libs(+)] )
+ seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
+ slirp? ( net-libs/libslirp )
+ smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
+ snappy? ( app-arch/snappy:= )
+ spice? (
+ >=app-emulation/spice-protocol-0.12.3
+ >=app-emulation/spice-0.12.0[static-libs(+)]
+ )
+ ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )
+ usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
+ usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
+ 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(+)] )
+ zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )
+"
+
+X86_FIRMWARE_DEPEND="
+ pin-upstream-blobs? (
+ ~sys-firmware/edk2-ovmf-201905[binary]
+ ~sys-firmware/ipxe-1.0.0_p20190728[binary]
+ ~sys-firmware/seabios-1.12.0[binary,seavgabios]
+ ~sys-firmware/sgabios-0.1_pre8[binary]
+ )
+ !pin-upstream-blobs? (
+ sys-firmware/edk2-ovmf
+ sys-firmware/ipxe
+ >=sys-firmware/seabios-1.10.2[seavgabios]
+ sys-firmware/sgabios
+ )"
+PPC64_FIRMWARE_DEPEND="
+ pin-upstream-blobs? (
+ ~sys-firmware/seabios-1.12.0[binary,seavgabios]
+ )
+ !pin-upstream-blobs? (
+ >=sys-firmware/seabios-1.10.2[seavgabios]
+ )
+"
+
+BDEPEND="
+ $(python_gen_impl_dep)
+ dev-lang/perl
+ sys-apps/texinfo
+ virtual/pkgconfig
+ doc? ( dev-python/sphinx )
+ gtk? ( nls? ( sys-devel/gettext ) )
+ test? (
+ dev-libs/glib[utils]
+ sys-devel/bc
+ )
+"
+CDEPEND="
+ !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} )
+ qemu_softmmu_targets_ppc64? ( ${PPC64_FIRMWARE_DEPEND} )
+"
+DEPEND="${CDEPEND}
+ kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
+ static? (
+ ${ALL_DEPEND}
+ ${SOFTMMU_TOOLS_DEPEND}
+ )
+ static-user? ( ${ALL_DEPEND} )"
+RDEPEND="${CDEPEND}
+ acct-group/kvm
+ selinux? ( sec-policy/selinux-qemu )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.11.1-capstone_include_path.patch
+ "${FILESDIR}"/${PN}-4.0.0-mkdir_systemtap.patch #684902
+ "${FILESDIR}"/${PN}-4.2.0-cflags.patch
+ "${FILESDIR}"/${PN}-5.0.0-epoll-strace.patch
+ "${FILESDIR}"/${PN}-5.0.0-ipv6-slirp-CVE-2020-10756.patch #731992
+)
+
+QA_PREBUILT="
+ usr/share/qemu/hppa-firmware.img
+ usr/share/qemu/openbios-ppc
+ usr/share/qemu/openbios-sparc64
+ usr/share/qemu/openbios-sparc32
+ usr/share/qemu/palcode-clipper
+ usr/share/qemu/s390-ccw.img
+ usr/share/qemu/s390-netboot.img
+ usr/share/qemu/u-boot.e500"
+
+QA_WX_LOAD="usr/bin/qemu-i386
+ usr/bin/qemu-x86_64
+ usr/bin/qemu-alpha
+ usr/bin/qemu-arm
+ usr/bin/qemu-cris
+ usr/bin/qemu-m68k
+ usr/bin/qemu-microblaze
+ usr/bin/qemu-microblazeel
+ usr/bin/qemu-mips
+ usr/bin/qemu-mipsel
+ usr/bin/qemu-or1k
+ usr/bin/qemu-ppc
+ usr/bin/qemu-ppc64
+ usr/bin/qemu-ppc64abi32
+ usr/bin/qemu-sh4
+ usr/bin/qemu-sh4eb
+ usr/bin/qemu-sparc
+ usr/bin/qemu-sparc64
+ usr/bin/qemu-armeb
+ usr/bin/qemu-sparc32plus
+ 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.
+ 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.
+
+Make sure your user is in the 'kvm' group. Just run
+ $ gpasswd -a kvm
+then have 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
+ eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
+ elif use kernel_linux; then
+ if ! linux_config_exists; then
+ eerror "Unable to check your kernel for KVM support"
+ else
+ CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
+ ERROR_KVM="You must enable KVM in your kernel to continue"
+ ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
+ ERROR_KVM_AMD+=" your kernel configuration."
+ ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
+ ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
+ ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
+ ERROR_TUN+=" into your kernel or loaded as a module to use the"
+ ERROR_TUN+=" virtual network device if using -net tap."
+ ERROR_BRIDGE="You will also need support for 802.1d"
+ ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
+ use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
+ ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
+ ERROR_VHOST_NET+=" support"
+
+ if use amd64 || use x86 || use amd64-linux || use x86-linux; then
+ if grep -q AuthenticAMD /proc/cpuinfo; then
+ CONFIG_CHECK+=" ~KVM_AMD"
+ elif grep -q GenuineIntel /proc/cpuinfo; then
+ CONFIG_CHECK+=" ~KVM_INTEL"
+ fi
+ fi
+
+ use python && CONFIG_CHECK+=" ~DEBUG_FS"
+ ERROR_DEBUG_FS="debugFS support required for kvm_stat"
+
+ # Now do the actual checks setup above
+ check_extra_config
+ fi
+ fi
+
+ if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
+ eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
+ eerror "instances are still pointing to it. Please update your"
+ eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
+ eerror "and the right system binary (e.g. qemu-system-x86_64)."
+ die "update your virt configs to not use qemu-kvm"
+ fi
+}
+
+# Sanity check to make sure target lists are kept up-to-date.
+check_targets() {
+ local var=$1 mak=$2
+ local detected sorted
+
+ pushd "${S}"/default-configs >/dev/null || die
+
+ # Force C locale until glibc is updated. #564936
+ detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
+ sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
+ if [[ ${sorted} != "${detected}" ]] ; then
+ eerror "The ebuild needs to be kept in sync."
+ eerror "${var}: ${sorted}"
+ eerror "$(printf '%-*s' ${#var} configure): ${detected}"
+ die "sync ${var} to the list of targets"
+ fi
+
+ popd >/dev/null
+}
+
+handle_locales() {
+ # Make sure locale list is kept up-to-date.
+ local detected sorted
+ detected=$(echo $(cd po && printf '%s\n' *.po | grep -v messages.po | sed 's:.po$::' | sort -u))
+ sorted=$(echo $(printf '%s\n' ${PLOCALES} | sort -u))
+ if [[ ${sorted} != "${detected}" ]] ; then
+ eerror "The ebuild needs to be kept in sync."
+ eerror "PLOCALES: ${sorted}"
+ eerror " po/*.po: ${detected}"
+ die "sync PLOCALES"
+ fi
+
+ # Deal with selective install of locales.
+ if use nls ; then
+ # Delete locales the user does not want. #577814
+ rm_loc() { rm po/$1.po || die; }
+ l10n_for_each_disabled_locale_do rm_loc
+ else
+ # Cheap hack to disable gettext .mo generation.
+ rm -f po/*.po
+ fi
+}
+
+src_prepare() {
+ check_targets IUSE_SOFTMMU_TARGETS softmmu
+ check_targets IUSE_USER_TARGETS linux-user
+
+ default
+
+ # Use correct toolchain to fix cross-compiling
+ tc-export AR AS LD NM OBJCOPY PKG_CONFIG RANLIB
+ export WINDRES=${CHOST}-windres
+
+ # Verbose builds
+ MAKEOPTS+=" V=1"
+
+ # Run after we've applied all patches.
+ handle_locales
+
+ # Remove bundled copy of libfdt
+ rm -r dtc || die
+}
+
+##
+# configures qemu based on the build directory and the build type
+# we are using.
+#
+qemu_src_configure() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ local buildtype=$1
+ local builddir="${S}/${buildtype}-build"
+
+ mkdir "${builddir}"
+
+ local conf_opts=(
+ --prefix=/usr
+ --sysconfdir=/etc
+ --bindir=/usr/bin
+ --libdir=/usr/$(get_libdir)
+ --datadir=/usr/share
+ --docdir=/usr/share/doc/${PF}/html
+ --mandir=/usr/share/man
+ --with-confsuffix=/qemu
+ --localstatedir=/var
+ --disable-bsd-user
+ --disable-guest-agent
+ --disable-strip
+ --disable-werror
+ # We support gnutls/nettle for crypto operations. It is possible
+ # to use gcrypt when gnutls/nettle are disabled (but not when they
+ # are enabled), but it's not really worth the hassle. Disable it
+ # all the time to avoid automatically detecting it. #568856
+ --disable-gcrypt
+ --python="${PYTHON}"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --host-cc="$(tc-getBUILD_CC)"
+ $(use_enable debug debug-info)
+ $(use_enable debug debug-tcg)
+ $(use_enable doc docs)
+ $(use_enable plugins)
+ $(use_enable tci tcg-interpreter)
+ $(use_enable xattr attr)
+ )
+
+ # 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
+ use_enable "$@"
+ fi
+ }
+ conf_opts+=(
+ $(conf_notuser accessibility brlapi)
+ $(conf_notuser aio linux-aio)
+ $(conf_notuser bzip2)
+ $(conf_notuser capstone)
+ $(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 io-uring linux-io-uring)
+ $(conf_notuser jemalloc jemalloc)
+ $(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 sdl-image)
+ $(conf_notuser seccomp)
+ $(conf_notuser slirp slirp system)
+ $(conf_notuser smartcard)
+ $(conf_notuser snappy)
+ $(conf_notuser spice)
+ $(conf_notuser ssh libssh)
+ $(conf_notuser usb libusb)
+ $(conf_notuser usbredir usb-redir)
+ $(conf_notuser vde)
+ $(conf_notuser vhost-net)
+ $(conf_notuser vhost-user-fs)
+ $(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)
+ $(conf_notuser xkb xkbcommon)
+ $(conf_notuser zstd)
+ )
+
+ if [[ ${buildtype} == "user" ]] ; then
+ conf_opts+=( --disable-libxml2 )
+ else
+ conf_opts+=( --enable-libxml2 )
+ fi
+
+ if [[ ! ${buildtype} == "user" ]] ; then
+ # audio options
+ local audio_opts=(
+ # Note: backend order matters here: #716202
+ # We iterate from higher-level to lower level.
+ $(usex pulseaudio pa "")
+ $(usev sdl)
+ $(usev alsa)
+ $(usev oss)
+ )
+ conf_opts+=(
+ --audio-drv-list=$(printf "%s," "${audio_opts[@]}")
+ )
+ fi
+
+ case ${buildtype} in
+ user)
+ conf_opts+=(
+ --enable-linux-user
+ --disable-system
+ --disable-blobs
+ --disable-tools
+ )
+ local static_flag="static-user"
+ ;;
+ softmmu)
+ conf_opts+=(
+ --disable-linux-user
+ --enable-system
+ --disable-tools
+ )
+ local static_flag="static"
+ ;;
+ tools)
+ conf_opts+=(
+ --disable-linux-user
+ --disable-system
+ --disable-blobs
+ --enable-tools
+ )
+ local static_flag="static"
+ ;;
+ esac
+
+ local targets="${buildtype}_targets"
+ [[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
+
+ # Add support for SystemTAP
+ use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
+
+ # We always want to attempt to build with PIE support as it results
+ # in a more secure binary. But it doesn't work with static or if
+ # the current GCC doesn't have PIE support.
+ if use ${static_flag}; then
+ conf_opts+=( --static --disable-pie )
+ else
+ tc-enables-pie && conf_opts+=( --enable-pie )
+ fi
+
+ echo "../configure ${conf_opts[*]}"
+ cd "${builddir}"
+ ../configure "${conf_opts[@]}" || die "configure failed"
+
+ # FreeBSD's kernel does not support QEMU assigning/grabbing
+ # host USB devices yet
+ use kernel_FreeBSD && \
+ sed -i -E -e "s|^(HOST_USB=)bsd|\1stub|" "${S}"/config-host.mak
+}
+
+src_configure() {
+ local target
+
+ python_setup
+
+ softmmu_targets= softmmu_bins=()
+ user_targets= user_bins=()
+
+ for target in ${IUSE_SOFTMMU_TARGETS} ; do
+ if use "qemu_softmmu_targets_${target}"; then
+ softmmu_targets+=",${target}-softmmu"
+ softmmu_bins+=( "qemu-system-${target}" )
+ fi
+ done
+
+ for target in ${IUSE_USER_TARGETS} ; do
+ if use "qemu_user_targets_${target}"; then
+ user_targets+=",${target}-linux-user"
+ user_bins+=( "qemu-${target}" )
+ fi
+ done
+
+ softmmu_targets=${softmmu_targets#,}
+ user_targets=${user_targets#,}
+
+ [[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
+ [[ -n ${user_targets} ]] && qemu_src_configure "user"
+ qemu_src_configure "tools"
+}
+
+src_compile() {
+ if [[ -n ${user_targets} ]]; then
+ cd "${S}/user-build"
+ default
+ fi
+
+ if [[ -n ${softmmu_targets} ]]; then
+ cd "${S}/softmmu-build"
+ default
+ fi
+
+ cd "${S}/tools-build"
+ default
+}
+
+src_test() {
+ if [[ -n ${softmmu_targets} ]]; then
+ cd "${S}/softmmu-build"
+ pax-mark m */qemu-system-* #515550
+ emake check
+ fi
+}
+
+qemu_python_install() {
+ python_domodule "${S}/python/qemu"
+
+ python_doscript "${S}/scripts/kvm/vmxcap"
+ python_doscript "${S}/scripts/qmp/qmp-shell"
+ 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
+
+ # we use 'printf' here to be portable across 'sh'
+ # implementations: #679168
+ cat <>"${out}"
+ if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then
+ printf '%s\n' ':${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.
+ 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
+ cd "${S}/softmmu-build"
+ emake DESTDIR="${ED}" install
+
+ # This might not exist if the test failed. #512010
+ [[ -e check-report.html ]] && dodoc check-report.html
+
+ if use kernel_linux; then
+ udev_newrules "${FILESDIR}"/65-kvm.rules-r1 65-kvm.rules
+ fi
+
+ if use python; then
+ python_foreach_impl qemu_python_install
+ fi
+ 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 mr "${softmmu_bins[@]}" "${user_bins[@]}" # bug 575594
+ popd >/dev/null
+
+ # Install config file example for qemu-bridge-helper
+ insinto "/etc/qemu"
+ doins "${FILESDIR}/bridge.conf"
+
+ cd "${S}"
+ dodoc Changelog MAINTAINERS docs/specs/pci-ids.txt
+ newdoc pc-bios/README README.pc-bios
+
+ # Disallow stripping of prebuilt firmware files.
+ dostrip -x ${QA_PREBUILT}
+
+ if [[ -n ${softmmu_targets} ]]; then
+ # Remove SeaBIOS since we're using the SeaBIOS packaged one
+ rm "${ED}/usr/share/qemu/bios.bin"
+ rm "${ED}/usr/share/qemu/bios-256k.bin"
+ if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
+ dosym ../seabios/bios.bin /usr/share/qemu/bios.bin
+ dosym ../seabios/bios-256k.bin /usr/share/qemu/bios-256k.bin
+ fi
+
+ # Remove vgabios since we're using the seavgabios packaged one
+ rm "${ED}/usr/share/qemu/vgabios.bin"
+ rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
+ rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
+ rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
+ rm "${ED}/usr/share/qemu/vgabios-virtio.bin"
+ rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
+ # PPC64 loads vgabios-stdvga
+ if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc64; then
+ dosym ../seavgabios/vgabios-isavga.bin /usr/share/qemu/vgabios.bin
+ dosym ../seavgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
+ dosym ../seavgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
+ dosym ../seavgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
+ dosym ../seavgabios/vgabios-virtio.bin /usr/share/qemu/vgabios-virtio.bin
+ dosym ../seavgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
+ fi
+
+ # Remove sgabios since we're using the sgabios packaged one
+ rm "${ED}/usr/share/qemu/sgabios.bin"
+ if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
+ dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
+ fi
+
+ # Remove iPXE since we're using the iPXE packaged one
+ rm "${ED}"/usr/share/qemu/pxe-*.rom
+ if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
+ dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
+ dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
+ dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
+ dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
+ dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
+ dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
+ fi
+ fi
+
+ DISABLE_AUTOFORMATTING=true
+ readme.gentoo_create_doc
+}
+
+firmware_abi_change() {
+ local pv
+ for pv in ${REPLACING_VERSIONS}; do
+ if ver_test $pv -lt ${FIRMWARE_ABI_VERSION}; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+pkg_postinst() {
+ if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
+ udev_reload
+ fi
+
+ xdg_icon_cache_update
+
+ [[ -z ${EPREFIX} ]] && [[ -f ${EROOT}/usr/libexec/qemu-bridge-helper ]] && \
+ fcaps cap_net_admin ${EROOT}/usr/libexec/qemu-bridge-helper
+
+ DISABLE_AUTOFORMATTING=true
+ readme.gentoo_print_elog
+
+ if use pin-upstream-blobs && firmware_abi_change; then
+ ewarn "This version of qemu pins new versions of firmware blobs:"
+ ewarn " $(best_version sys-firmware/edk2-ovmf)"
+ ewarn " $(best_version sys-firmware/ipxe)"
+ ewarn " $(best_version sys-firmware/seabios)"
+ ewarn " $(best_version sys-firmware/sgabios)"
+ ewarn "This might break resume of hibernated guests (started with a different"
+ ewarn "firmware version) and live migration to/from qemu versions with different"
+ ewarn "firmware. Please (cold) restart all running guests. For functional"
+ ewarn "guest migration ensure that all"
+ ewarn "hosts run at least"
+ ewarn " app-emulation/qemu-${FIRMWARE_ABI_VERSION}."
+ fi
+}
+
+pkg_info() {
+ echo "Using:"
+ echo " $(best_version app-emulation/spice-protocol)"
+ echo " $(best_version sys-firmware/edk2-ovmf)"
+ if has_version 'sys-firmware/edk2-ovmf[binary]'; then
+ echo " USE=binary"
+ else
+ echo " USE=''"
+ fi
+ echo " $(best_version sys-firmware/ipxe)"
+ echo " $(best_version sys-firmware/seabios)"
+ if has_version 'sys-firmware/seabios[binary]'; then
+ echo " USE=binary"
+ else
+ echo " USE=''"
+ fi
+ echo " $(best_version sys-firmware/sgabios)"
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+}
diff --git a/app-emulation/qemu/qemu-9999.ebuild b/app-emulation/qemu/qemu-9999.ebuild
index 8b929852984f..cf78c79fb472 100644
--- a/app-emulation/qemu/qemu-9999.ebuild
+++ b/app-emulation/qemu/qemu-9999.ebuild
@@ -16,7 +16,6 @@ inherit eutils linux-info toolchain-funcs multilib python-r1 \
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://git.qemu.org/git/qemu.git"
EGIT_SUBMODULES=(
- slirp
tests/fp/berkeley-{test,soft}float-3
ui/keycodemapdb
)
@@ -38,6 +37,7 @@ IUSE="accessibility +aio alsa bzip2 capstone +caps +curl debug doc
jemalloc +jpeg kernel_linux
kernel_FreeBSD lzo ncurses nfs nls numa opengl +oss +pin-upstream-blobs
plugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux
+ slirp
smartcard snappy spice ssh static static-user systemtap tci test usb
usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen
xfs +xkb zstd"
@@ -146,6 +146,7 @@ SOFTMMU_TOOLS_DEPEND="
)
sdl-image? ( media-libs/sdl2-image[static-libs(+)] )
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
+ slirp? ( net-libs/libslirp )
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
snappy? ( app-arch/snappy:= )
spice? (
@@ -468,6 +469,7 @@ qemu_src_configure() {
$(conf_notuser sdl)
$(conf_notuser sdl-image)
$(conf_notuser seccomp)
+ $(conf_notuser slirp slirp system)
$(conf_notuser smartcard)
$(conf_notuser snappy)
$(conf_notuser spice)
diff --git a/app-emulation/vagrant/metadata.xml b/app-emulation/vagrant/metadata.xml
index b63908369576..4f92768cfae5 100644
--- a/app-emulation/vagrant/metadata.xml
+++ b/app-emulation/vagrant/metadata.xml
@@ -1,10 +1,7 @@
-
- gyakovlev@gentoo.org
- Georgy Yakovlev
-
+