From 677b7ba5c317778df2ad7e70df94b9b7eec4adbc Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 10 Sep 2021 04:21:55 +0100 Subject: gentoo resync : 10.09.2021 --- app-emulation/Manifest.gz | Bin 20548 -> 20539 bytes app-emulation/conmon/Manifest | 2 + app-emulation/conmon/conmon-2.0.29.ebuild | 48 ++ app-emulation/flannel/Manifest | 2 + app-emulation/flannel/flannel-0.14.0.ebuild | 54 ++ app-emulation/img/Manifest | 4 +- app-emulation/img/img-0.5.11.ebuild | 5 +- app-emulation/img/img-0.5.7-r1.ebuild | 34 - app-emulation/libvirt/Manifest | 2 +- app-emulation/libvirt/libvirt-7.3.0.ebuild | 2 +- app-emulation/podman/Manifest | 6 +- app-emulation/podman/podman-3.1.2-r1.ebuild | 164 ----- app-emulation/podman/podman-3.2.1-r1.ebuild | 164 ----- app-emulation/podman/podman-3.3.1.ebuild | 164 +++++ app-emulation/qemu/Manifest | 6 +- app-emulation/qemu/qemu-6.0.0-r2.ebuild | 910 ------------------------ app-emulation/qemu/qemu-6.0.0-r3.ebuild | 910 ++++++++++++++++++++++++ app-emulation/qemu/qemu-6.0.0-r52.ebuild | 911 ------------------------- app-emulation/qemu/qemu-6.0.0-r53.ebuild | 911 +++++++++++++++++++++++++ app-emulation/qemu/qemu-9999.ebuild | 4 +- app-emulation/simplevirt/Manifest | 12 + app-emulation/simplevirt/simplevirt-0.1.ebuild | 71 ++ 22 files changed, 2186 insertions(+), 2200 deletions(-) create mode 100644 app-emulation/conmon/conmon-2.0.29.ebuild create mode 100644 app-emulation/flannel/flannel-0.14.0.ebuild delete mode 100644 app-emulation/img/img-0.5.7-r1.ebuild delete mode 100644 app-emulation/podman/podman-3.1.2-r1.ebuild delete mode 100644 app-emulation/podman/podman-3.2.1-r1.ebuild create mode 100644 app-emulation/podman/podman-3.3.1.ebuild delete mode 100644 app-emulation/qemu/qemu-6.0.0-r2.ebuild create mode 100644 app-emulation/qemu/qemu-6.0.0-r3.ebuild delete mode 100644 app-emulation/qemu/qemu-6.0.0-r52.ebuild create mode 100644 app-emulation/qemu/qemu-6.0.0-r53.ebuild create mode 100644 app-emulation/simplevirt/simplevirt-0.1.ebuild (limited to 'app-emulation') diff --git a/app-emulation/Manifest.gz b/app-emulation/Manifest.gz index 9b7ca6d52775..1c6c7a174f58 100644 Binary files a/app-emulation/Manifest.gz and b/app-emulation/Manifest.gz differ diff --git a/app-emulation/conmon/Manifest b/app-emulation/conmon/Manifest index 8d5d189b1ce6..0006b8305983 100644 --- a/app-emulation/conmon/Manifest +++ b/app-emulation/conmon/Manifest @@ -1,7 +1,9 @@ DIST conmon-2.0.22.tar.gz 103371 BLAKE2B f509ba800c847886ec2350e141d2b965ff1cc09822467718fb0d94acdabdc86c6f40dff9428679e4c4171ac6a522b3ba7622d66ebd8108be1a68cbf7418d5c09 SHA512 819e1d9279c1a22388220d710b975cdeb3c0b56413afb177afe1c96b649e2dce496d5f51fe4094f572111f771102ccd0ae86f1776e99fedb2e76e6e9130c2d5c DIST conmon-2.0.26.tar.gz 104681 BLAKE2B fc8369258a414d3a169b64019199c604d1d8bded70d5a38230f243053dcf09c6f9aee931b328913e6cbbe3c495aab4894647897f40f537a79eb587ecee58517a SHA512 5cbb66053fb48b514f93b3be4d4ac428f9eea8a3e1452b4df232250e9cd01202ecb7477c05e1e4dfb21595f2d1881be35cdea9b23f43c02bb7c0e67a3161396e DIST conmon-2.0.27.tar.gz 106647 BLAKE2B f242b1be4f86b18ca94dade3d1f5522d1ae1951f4b7abf7e563e1a93472c2a673cd48a136fdff12b410ebaa46694b70ffbf173fc37a3bbefb03891452c22dfae SHA512 2bc389fa3963cbb612669ec1d288adc888d7ac1de2b9bf483f18e0f62220775327ebcb771bfa7236815ef7247adb8fc6b8ae38748f7a383ec9590e3ee5769b65 +DIST conmon-2.0.29.tar.gz 160628 BLAKE2B 9cff934a6774ea51476624b9c56bc0dc71eeb9383d48fbb3d6b04ad7be462e8cb792e72cf9d98f9ca54eff274f1a3c2bbad3f8d8cf53fe0d2e259e4f6d93ed7e SHA512 0eec0322ee209efacae93b6e96c3bea2468a309d6211c8c047b49fa3bd8b5d1a198a16b3ff1ffe629dc37a12e2e0db1979e8876833c5cef0f69be35d4be8b550 EBUILD conmon-2.0.22.ebuild 1184 BLAKE2B 75c40011ce14d692ab11310ba9e32a9bece265c4f636680bec93186fc9d751e916ef2ad4b9e6cf9f7ebcb6a6d38ff7d37f6f7ba68a50a73cc17564ad1b9a6b73 SHA512 22244dd45ac55b9231b685f0fdd7dcb62d9f4f08f7aea114cc2eb161e3911435f7042d47a7464130d240fe065871694c46f6caace4b6876dd3598dafbe154d6a EBUILD conmon-2.0.26.ebuild 1184 BLAKE2B efa932a65151a81d7163adce779affaa458f61a7afee968352af3703189660c5051d3de0b09dc17e1a26057e63a8f5e7b54503fb8b3d103650fdcab60e6a8b43 SHA512 91eb9099ee247b638a8cc5d256278e4dc23c7e40b3053e91d7b724f1ab6658f690e5e8cda79b0176a976319fbe1006ac095b81bec3f1a0646a5c22f20aeb8061 EBUILD conmon-2.0.27.ebuild 1083 BLAKE2B 03930066ab4151282bffff47f34b101a74c2dcc2d011ab38b5f118393276af122c23f2e2de36bd9f118187f8a422f3036177bf2a00d943e72eb47af978149247 SHA512 eb742663c9816978588143346822c0803e386d3cd72a2fbe15908d1ac98afaab2b8a861eb7e01d802cb1d604348c3ba01eb905cd64d878fd541b19b757b5904c +EBUILD conmon-2.0.29.ebuild 1083 BLAKE2B 03930066ab4151282bffff47f34b101a74c2dcc2d011ab38b5f118393276af122c23f2e2de36bd9f118187f8a422f3036177bf2a00d943e72eb47af978149247 SHA512 eb742663c9816978588143346822c0803e386d3cd72a2fbe15908d1ac98afaab2b8a861eb7e01d802cb1d604348c3ba01eb905cd64d878fd541b19b757b5904c MISC metadata.xml 326 BLAKE2B 88e40bbfd92c360f7ed559dc1f3ebe8d35a4905c413de8208a72e255e531d32f61dea3ad710b3a2743df01b29f3f5426440beff3ffcd59139d6f5ce118c17557 SHA512 0709bf7dd7300225974bbf974a3c90c27a368ae6862e080c95f0fb30f314b94c0502258773649fe2cdeba22ad9f5c0d29d000f95e8f7d961e9cdfbea108b4775 diff --git a/app-emulation/conmon/conmon-2.0.29.ebuild b/app-emulation/conmon/conmon-2.0.29.ebuild new file mode 100644 index 000000000000..0a7306d1c2d7 --- /dev/null +++ b/app-emulation/conmon/conmon-2.0.29.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit toolchain-funcs + +DESCRIPTION="An OCI container runtime monitor" +HOMEPAGE="https://github.com/containers/conmon" +SRC_URI="https://github.com/containers/conmon/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~ppc64" +IUSE="systemd" +RESTRICT="test" + +RDEPEND="dev-libs/glib:= + systemd? ( sys-apps/systemd:= )" +DEPEND="${RDEPEND} + dev-go/go-md2man" + +src_prepare() { + default + + if ! use systemd; then + sed -e 's| $(PKG_CONFIG) --exists libsystemd-journal | false |' \ + -e 's| $(PKG_CONFIG) --exists libsystemd | false |' \ + -i Makefile || die + fi + sed -e 's|make -C tools|$(MAKE) -C tools|' -i Makefile || die + sed -e 's|^GOMD2MAN = .*|GOMD2MAN = go-md2man|' -i docs/Makefile || die +} + +src_compile() { + tc-export CC + emake GIT_COMMIT="v${PV}" \ + all +} + +src_install() { + emake DESTDIR="${D}" \ + PREFIX="/usr" \ + install + dodir /usr/libexec/podman + ln "${ED}/usr/"{bin,libexec/podman}/conmon || die + dodoc README.md +} diff --git a/app-emulation/flannel/Manifest b/app-emulation/flannel/Manifest index 159eae16846b..ab022c2f204c 100644 --- a/app-emulation/flannel/Manifest +++ b/app-emulation/flannel/Manifest @@ -5,5 +5,7 @@ AUX flanneld.initd 518 BLAKE2B 36859121c77fcd7b53f679eff455ad1ba1f9c6c58fc6a015e AUX flanneld.logrotated 77 BLAKE2B 778f7289a6268cf6b150b1c58895514808c304b56baca56b1df3297df4ff0a4c9ec6e70a3ddbf16c55c0bd5be146bcfa20f7b4ac8ceb08fa9af223164c19a905 SHA512 d84258a164adcec0f1cef7fcafcf0cadb3bf3959b393b905c4897274adeff476279ce96ec42e9aa9d574c6bd7d37649d92c7c52563975f85d303cade990a3942 AUX flanneld.service 476 BLAKE2B ea838e26be0834943bafb985a37e71b45219bffbd68784b8442c065d9bafc8c9cb2b097c8a00629c19faf4b7bb1fb4ae33071e51d4bf6ffdd62cf5898de1f3cf SHA512 4a7d09f25f117b1cda9b02914a394c0d6d6ddd6c02503f61c0646ede1934cb4cad831992058c5738401b1ac7be6e4c7cd83b1c4a70c04084bb4bb01338c08220 DIST flannel-0.11.0.tar.gz 6443391 BLAKE2B 5358e513a73fec6d8fcdb0182ec814fcf204eb12830f7d60acb3d4432f821ccc9e174fcc7adb57584ab1782c3f285e46b51bb0f76635fab9cf851cb2bd40c1b3 SHA512 72d18cd4ec58ede3848da3b94b7f3e33f8dda59d9fceb13864757998a24f0b312bc5b5d7927d3da8a805475efee469095ac09390fa632eb0c6ef9dd0f5d38a3b +DIST flannel-0.14.0.tar.gz 8324790 BLAKE2B 47fd65d531f9fa10e602ccf1858549ede97d8f8c9afa32ffeb010d733060703262cafd02b5daddc65142dfa96b1c6b429eaff30b7fdaca27e2a5397c0d756e7c SHA512 a5d9f45d55f18c744e635b4d697200cf9d5a8c4387cd6d9c57220e652e3688337f2ee50fef193135dd0073b14edb8800fac8d5ca9f9d0d3e9ef70d09a52f259c EBUILD flannel-0.11.0.ebuild 1477 BLAKE2B 2cd6c0d2dfb46de7bdd8eb0f091bec5e170e6a6fe5db34f10c085cbecb4ab5e50da6bc40e3873c0c4c14fb0c5bd4acecf12a6b16a6bb8c033179038c5d688c10 SHA512 82f2f231da38cfda355979f0ecf47ae652ab57d96fa030a07802bac41bbfc9761137a9ce2ab065c09c31c466b3cbf625d78ed1a89be322d4bf7987e6d5e0a46c +EBUILD flannel-0.14.0.ebuild 1418 BLAKE2B 94b7e426dc6e3d769b3564f60e969a28d21628a1f963721a9d78e3f3568bd6ef2a5b481406b6aa93aa072c47209ab1f7eb1c375429d66d8cd11910bacde07c6f SHA512 1dea57abed0dc5dc46b720d046788fc16e3d471d01bc0fe2115b156c3a7888b6d834f0da85eed00b644ed3318817e858126aabacdf40e94e53d06d3736bef43a MISC metadata.xml 305 BLAKE2B d34792ab0473ba56a75b4e9dc559b4a12b2eed48313cfecac65ce7b13a9df59a651721fbdd72a744314181f4002b52510c9200b85c1fac6fa03d3d78573db842 SHA512 ff219bf7233d4659475fd4e25366d5eef5d3575cd1250d6c9bbddc7351515418ca17730a8df61d102c71b515813b20bb182b355448db16b5fb43a9a46401bd04 diff --git a/app-emulation/flannel/flannel-0.14.0.ebuild b/app-emulation/flannel/flannel-0.14.0.ebuild new file mode 100644 index 000000000000..ec33f31625ba --- /dev/null +++ b/app-emulation/flannel/flannel-0.14.0.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit go-module systemd tmpfiles + +KEYWORDS="~amd64 ~arm64" +DESCRIPTION="An etcd backed network fabric for containers" +HOMEPAGE="https://github.com/coreos/flannel" +SRC_URI="https://github.com/coreos/flannel/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0 BSD ISC LGPL-3 MIT" +SLOT="0" +IUSE="hardened" + +RESTRICT+=" test" + +src_prepare() { + default + sed -e "s:^var Version =.*:var Version = \"${PV}\":" \ + -i "${S}/version/version.go" || die +} + +src_compile() { + CGO_LDFLAGS="$(usex hardened '-fno-PIC ' '')"\ + go build -o dist/flanneld -ldflags " + -X github.com/flannel-io/flannel/version.Version=v${PV} + -extldflags \"-static\"" . || die +} + +src_test() { + GOPATH="${WORKDIR}/${P}" \ + go test -v -work -x "${EGO_PN}" || die +} + +src_install() { + dobin dist/${PN}d + exeinto /usr/libexec/flannel + doexe dist/mk-docker-opts.sh + insinto /etc/systemd/system/docker.service.d + newins "${FILESDIR}/flannel-docker.conf" flannel.conf + newinitd "${FILESDIR}"/flanneld.initd flanneld + newconfd "${FILESDIR}"/flanneld.confd flanneld + keepdir /var/log/${PN} + insinto /etc/logrotate.d + newins "${FILESDIR}"/flanneld.logrotated flanneld + newtmpfiles "${FILESDIR}/flannel.tmpfilesd" flannel.conf + systemd_dounit "${FILESDIR}/flanneld.service" + dodoc README.md +} + +pkg_postinst() { + tmpfiles_process flannel.conf +} diff --git a/app-emulation/img/Manifest b/app-emulation/img/Manifest index 0f6bd2b890d7..df8c1901af26 100644 --- a/app-emulation/img/Manifest +++ b/app-emulation/img/Manifest @@ -510,8 +510,6 @@ DIST honnef.co%2Fgo%2Ftools%2F@v%2Fv0.0.0-20180728063816-88497007e858.mod 26 BLA DIST honnef.co%2Fgo%2Ftools%2F@v%2Fv0.0.0-20190102054323-c2f93a96b099.mod 26 BLAKE2B db6cc87a17bed88b955e6b36a17568930239c94a969211b02c2d5acc70386fbea63ac44365a0d3241e900125bd64644d698d8f1bdcabc3e6cf99c47259c63df5 SHA512 d00ae74b24e7fb3ff351ff68b88e59636153bbcf92b36e81e91556e3e75a7ccfb08ce471f757f92fd7612378944de3d7309c73923812e2df6a26b74e999ca9ce DIST honnef.co%2Fgo%2Ftools%2F@v%2Fv0.0.0-20190523083050-ea95bdfd59fc.mod 26 BLAKE2B db6cc87a17bed88b955e6b36a17568930239c94a969211b02c2d5acc70386fbea63ac44365a0d3241e900125bd64644d698d8f1bdcabc3e6cf99c47259c63df5 SHA512 d00ae74b24e7fb3ff351ff68b88e59636153bbcf92b36e81e91556e3e75a7ccfb08ce471f757f92fd7612378944de3d7309c73923812e2df6a26b74e999ca9ce DIST img-0.5.11.tar.gz 4743864 BLAKE2B 6e08ddce536d666539bca9d06fc14c8a01cedb012024ee7f970a7c4ea5a701f28b52a0b247e9f681e72bff1aab354e6f6d02d12bdde4d434aa2dd6ff92de949c SHA512 de80c2c26dd2fb780fb0447f07b5478e1571067ec934fb2adb32dff1aa3853ff872388b9c9c168c139194ab5d38672fb3b4c76c4f77fd8e61ce48bde8cae8c1b -DIST img-0.5.7.tar.gz 3875988 BLAKE2B dd8f13f6861eadc3a4c3d2d07ac826e53a8f3b83d66974717e9312c579967e0c9b57657c8fe6e86f03bb91fd7a82bc6d8d7d87a70be4dd85da10800d8909a51d SHA512 a42247c2ceac0ccfcc2cfd6a561a058855869f0219994cd8fa2bdd5092be17803057e4cb48a2d5277fdfded74dd06eb7c3c3db590fbde91502aebcaf593ddef7 DIST k8s.io%2Fkubernetes%2F@v%2Fv1.13.0.mod 25 BLAKE2B 4060536d51fac9854215957b1108a158adb0b3aeb8bfc659eca1140efdcf79cffe378db6f3cb1f4a4b68aa36468b7d5631e993d5a089eb839bd03b6b608496be SHA512 2349b7dbe8409836cc70d97c5b336f518b809f5731baf05ce68d957c9970895a9b7f89caf09763794cf13824ee29410b3a6e431b2da7f64610895c44b86c4d2d -EBUILD img-0.5.11.ebuild 36794 BLAKE2B 10f53fe9aa5e1091976082b34c910208db5554477b0fd618ce592f2cb9c11e3bae9e1326a776e3e6e245907b5e3034b3b39b0e5d2f32a1fe192207b9aa03aea3 SHA512 e73c1ee435729f638cfd30afbd8b875868fe30377175cb180211df934f9f35426a9cc9d97ca8bee2ef72dcbfccb89c21c05345a281090e58e4667ac8e7b5d1fb -EBUILD img-0.5.7-r1.ebuild 866 BLAKE2B 10d5041a3b379840b8675490a7abf54e5dc9c437e5d9424e4f3dab670fc5df138f1f768afb18391e2ee6ae966134f05ad5c956a917337b01f305e9aa93f7a946 SHA512 e5f07e98f8bced65cdecebc1a0b827c47ddeecbcf45963202638ac71b7b13a28ded8b3c2b31d19a87395f37e5a1cb406185d3d313959601c817052b836a3f6e1 +EBUILD img-0.5.11.ebuild 36749 BLAKE2B 44cb0a1ea79ff7d69d1f5d64f071dbd4b8400422b9ae62d9d0787e03983cf2f87df42e448d9536b7a1559eec3a2a8926035322a5a60470c387dece58ddcbb188 SHA512 4174fc8463e6dc8fd364f46c6eb91fdec877030f0189dea60bc64eae2c2d071e2f8d32bb1cd190c7c960ea98476054af108fc095b2acc59848296e7c2f61d6c8 MISC metadata.xml 248 BLAKE2B 65f712fa82650530a08edb7671e6c6104649422106cd65d55253bdf920e84cc64ed47038feca9da18e770997c52cc6fdec416a6d82eb4146677b78d8509048ca SHA512 0de2cc5b3231aa87bc19df0801003e020b1599bf4a006a991a2d46d84495569245bb04756c1537376293765593167f2c083c46470389a5438ca7b44abafb0a2c diff --git a/app-emulation/img/img-0.5.11.ebuild b/app-emulation/img/img-0.5.11.ebuild index 154fb007ce4b..cd92124e2d1f 100644 --- a/app-emulation/img/img-0.5.11.ebuild +++ b/app-emulation/img/img-0.5.11.ebuild @@ -536,10 +536,9 @@ RDEPEND="${DEPEND} app-emulation/runc" src_compile() { - GOCACHE="${T}/go-cache" \ IMG_DISABLE_EMBEDDED_RUNC=1 \ - go build -v -work -x -tags "noembed $(usev seccomp)" \ - -ldflags="-s -w -X version.VERSION=${PV}" || die + go build -tags "noembed $(usev seccomp)" \ + -ldflags="-X version.VERSION=${PV}" || die } src_install() { diff --git a/app-emulation/img/img-0.5.7-r1.ebuild b/app-emulation/img/img-0.5.7-r1.ebuild deleted file mode 100644 index 4b2367c13e4e..000000000000 --- a/app-emulation/img/img-0.5.7-r1.ebuild +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -EGO_PN="github.com/genuinetools/img" - -inherit golang-vcs-snapshot - -DESCRIPTION="Standalone daemon-less unprivileged Dockerfile and OCI container image builder" -HOMEPAGE="https://github.com/genuinetools/img" -SRC_URI="https://github.com/genuinetools/img/archive/v${PV}.tar.gz -> ${P}.tar.gz" - -KEYWORDS="~amd64" -LICENSE="MIT" -SLOT="0" -IUSE="seccomp" - -DEPEND="seccomp? ( sys-libs/libseccomp )" -RDEPEND="${DEPEND} - app-emulation/runc" - -src_compile() { - GOPATH="${S}:$(get_golibdir_gopath)" \ - GOCACHE="${T}/go-cache" \ - IMG_DISABLE_EMBEDDED_RUNC=1 \ - go build -v -work -x -tags "noembed $(usev seccomp)" \ - -ldflags="-s -w -X ${EGO_PN}/version.VERSION=${PV}" "${EGO_PN}" || die -} - -src_install() { - dobin img - dodoc "src/${EGO_PN}"/{README.md,AUTHORS} -} diff --git a/app-emulation/libvirt/Manifest b/app-emulation/libvirt/Manifest index 7eca2af676f9..cd4b6c7aa988 100644 --- a/app-emulation/libvirt/Manifest +++ b/app-emulation/libvirt/Manifest @@ -27,7 +27,7 @@ DIST libvirt-7.5.0.tar.xz.asc 833 BLAKE2B ab9ba2a02e4af90002fffbcd0bc04f9faa1d5a EBUILD libvirt-7.0.0-r3.ebuild 8827 BLAKE2B eed8aa4baf06ba16aaed2cf6fab85b003627a32c7279ebf2011a6c42da9f802e0d9db0fb19c0f38c49390574371f0b07ca10efbd4fc57f00ce56c24af4db64f0 SHA512 06fcd3e2a54acb7fc4963ad62cb82f8d30e671755cb1a3b4826161f7a528b60fb1472d0b96c0f8025619398842ac2e108d40cd9aef7ed8d0b7c3bb6052f8d489 EBUILD libvirt-7.1.0-r1.ebuild 8518 BLAKE2B 25d37b8130237c1ce2f5c00f577196f361ffc23a33b1deccf13aea69320295eb08dac16bd4cfcddfa1274916a353a90befd7208dadeb3738ea305a3e4bba2d84 SHA512 701762b4a87afa9b4cf0eb9c2efc23d8fc3bce9cea11a1e9af2c9492b68a7ebb2f8feeb9ccf4229c1e8f77e4fa0e70a10e47ca17dfe906f25e9d50b06598bb4b EBUILD libvirt-7.2.0-r1.ebuild 8324 BLAKE2B d784f644bc4b404c2e53619d5edbef7c23dc9f05d48c1d487f7848c31d65f98a80b8a42f6c79f014c84b0206ea931fbd5473234ada7ea8c53978f94e7daba611 SHA512 dfd57fee30b103081ab144ba2aa97b491c4f9c708f31f7cfc1c1590a269d4767299f29537b11701e45b6ffb75380405969f11c1fa6cf1ece45e71631a8564341 -EBUILD libvirt-7.3.0.ebuild 8220 BLAKE2B 623174f24371ffa181aa18a70cd1f32a6ea3f7b7280608ba023b8f6d5dc0d40654abeb4f10407e74e83989a10b4442d0778d733f4885e795dd173caa86b062c0 SHA512 3aaa8e7979b4bf2382c7d76b5ed3d5e6f555e8884c04deaa53cad523482f0203f33ff202239695c09aae144480e3a896d43e7655325e1ea578681f869dd443b2 +EBUILD libvirt-7.3.0.ebuild 8219 BLAKE2B 591ed0d35275dfd78196dd5edfb05026d6c8c40a075f57b925a57d0a731a9abb0fdb327df4b55583f1583a4887a3a672bfeccc2e052a9175016946d042a61fd8 SHA512 f9fe11aabda9c857dca633e1d3feb54e722ae22ffce052b950e05d9963c114f1aff2e9eec2721ae138adc4674d78191c77f2caaeecac3f4c08a39ea321f66b8d EBUILD libvirt-7.4.0.ebuild 8244 BLAKE2B 7a47ef108058c902eebb346d9790ba4df0bb28b8a8496a96d1524f0729dd2505ebc2190cf0c0d59284713d5d6df90621c164e20c11d5e9d0dd78a3dc79e811b4 SHA512 9f9038cf92992f1af707dff71b666a3031a13bcbecd5c6f0dff5094fac33dd1685498873ad6f1e7df6548cccb2f79845ef985eff49b040b624cbe05e38c62a00 EBUILD libvirt-7.5.0.ebuild 8248 BLAKE2B 94be85984caddd918f6ca087a529135968fae60029b0a2072927c23c90f6c3b7d0be50607a4a50ac7238bf26512d722b90ed118365199806d2ddc4bb921d8336 SHA512 0ca222fd6b8e7125d76859c4ce147455aee2ced256f6609912b57b0e9b899bedfcabf591101554a8982abb335d8b0e214283b5227937c87a10c944d26207b4db EBUILD libvirt-9999.ebuild 8248 BLAKE2B 94be85984caddd918f6ca087a529135968fae60029b0a2072927c23c90f6c3b7d0be50607a4a50ac7238bf26512d722b90ed118365199806d2ddc4bb921d8336 SHA512 0ca222fd6b8e7125d76859c4ce147455aee2ced256f6609912b57b0e9b899bedfcabf591101554a8982abb335d8b0e214283b5227937c87a10c944d26207b4db diff --git a/app-emulation/libvirt/libvirt-7.3.0.ebuild b/app-emulation/libvirt/libvirt-7.3.0.ebuild index 36e4bd27d748..08386a30d6f0 100644 --- a/app-emulation/libvirt/libvirt-7.3.0.ebuild +++ b/app-emulation/libvirt/libvirt-7.3.0.ebuild @@ -15,7 +15,7 @@ if [[ ${PV} = *9999* ]]; then else SRC_URI="https://libvirt.org/sources/${P}.tar.xz verify-sig? ( https://libvirt.org/sources/${P}.tar.xz.asc )" - KEYWORDS="amd64 ~arm64 ~ppc64 x86" + KEYWORDS="amd64 arm64 ~ppc64 x86" SLOT="0/${PV}" fi diff --git a/app-emulation/podman/Manifest b/app-emulation/podman/Manifest index 7f6c303bb688..7cabc1a67e4e 100644 --- a/app-emulation/podman/Manifest +++ b/app-emulation/podman/Manifest @@ -1,8 +1,6 @@ AUX podman.confd 328 BLAKE2B e03a1f7f5cec555f195bd1ca9bea050a67ccac7866bd68f0c74dcbd3a6629b2da6f368274b4b664eaaa410773337a1f352c3144c3682ea0ea56b8c958b9d00a6 SHA512 58b05b7ff574f2153d7eeb3f726808e22ebe0821afc4d86dc3dea189944cdd6f2d6e1b051046456e149505b4b558a7957a278c1dba21db2fec65f2efbb3e1d84 AUX podman.initd 704 BLAKE2B 2fc4ffaa3b971774957ea244e05d851fa2797ec074529ea7c23bc6d7a3f597c04268d7f5580852dae4ab412629a513fed152f6a20a7ed432ef00cb96848c290c SHA512 bcf3e74a4a77bac82fc4679b3161091692b301426ecf81af7c5ea7e23ba66d15602d0cf1284f160d4179e52ae78f309ad826d9f3698dfcb78c2be2c6ac51417c AUX podman.logrotated 85 BLAKE2B 730899f93ee354e476629276b69224cfeaaa1603b6690cac3c0cd905cd75add19179f99e26f29edbd963d5f44c38a3a2db0b5a3613dc665ab801654eac13dc2e SHA512 0136d063b15b07c41a9370ba1845c4f368ec46a7a30683b7ff7cbb0b12e5b2711c9a45329f5102af6a969e562edcec006a8de9055e43e1caf9395847d0c5ec45 -DIST podman-3.1.2.tar.gz 10488539 BLAKE2B 8536f6856e436467541f7714e75d5055545e1514604d6541671894117e752609a9e791355c162ef8fcdbc0cbd992823ecab8a3ab760bab3a469d9768b6b008e4 SHA512 fdc26368f3cce6a11fe9adeae34a2f04396a554bb5f245e07fc98d1ce21dff66faba5549e9e0b94793d67768ff03fea2990e7a2759dd41ed2b72778431f5dd9d -DIST podman-3.2.1.tar.gz 10754823 BLAKE2B 6c4e7292ba30969ef8632ad514a87650131a05baafab65d49fe182bddaa1b106de5766ec6677b73d0a2e5166c56f1439de6c800ca7de8ac59e026de1286bf2d4 SHA512 8fa4e2a72d1e655c600fa4dc7ad2366975314a154ff9fa7496622da6042e54c6fe93aca0344e6615e2ce3d400c1bc5de7d8462df45f950a119c3303b3ae520e4 -EBUILD podman-3.1.2-r1.ebuild 4701 BLAKE2B d6f52c64327f9d7a965e7eb6128642ed9320b7936041a767b6cf7fbb2b5ec9964ec20881d42d7e79dc819ff7a95d6349ba57deddea61f185e4f7038caa8f2fb1 SHA512 f4a551673e2e2814f912229ff4d79b5f4ceba7ec2569c37db3e26e9ad7f05cbc7d371bdb95848a15ec504722bd938ec0a931fa0b01fcb55668519777befca9a7 -EBUILD podman-3.2.1-r1.ebuild 4708 BLAKE2B 90840547fa6bdafdfc30a7ae71b0f5be3957a2eb55f35e10db91fb5b9d004965a01ddfa4070630f189a57539a5806b2fdbde60a9bdab3cf526b5199876305619 SHA512 6f40c8c41821f0637aba52daba9a986ef148c4f239edad660bcca406040308d0a84a5f9b1d18c87f5247329ec896d54adc8def0c24a677b7fa73ccb0e50c577f +DIST podman-3.3.1.tar.gz 10917305 BLAKE2B fe7856c2ad8893e40ec42fb242a088794ea18910388d5e8089885013cab45c98e03bef99a5e911749f95ce469518e6fa5b6d30400f52696645c9ba8c140ba445 SHA512 19003f63c17c1c5788f34d0d6426a366035fc76aa2312e6355464d204d6536e5f78652abaf01643d4be7c2ee5224c25717b41760a4be4f6de8031cca9b06efaa +EBUILD podman-3.3.1.ebuild 4708 BLAKE2B 81122dfab3c2cc5f2b9011bbaeac253865662b4d0966125a405d3beadc09798d5b19694a0672d0f44b75cee00c2c1598cc385ac4632a75e22b9d7cd75ab4ef92 SHA512 a4415f1be56365bcba5a9be5dade198ac22ac20111fffcd660d9f3ccd47f2e7cddb3002a57d6d18cf6506c713a3220ff88137758d010b25a6d3b88360f29d98e MISC metadata.xml 1160 BLAKE2B d56944aa9a0b3793aa581ea68233ec7b29c7caec3042aae9985d1b228e5ba205a7a631c61d31cef923e38714c934fbaf3202d5a8cf260b78f78fafe81730870e SHA512 0b1e63e5cad075899045c876d6dc93638eb36afd01fb7acef59b59c6795d767f250926cf77789f159481a7efdde09848d2a63fb7452d28ff250146d16a289064 diff --git a/app-emulation/podman/podman-3.1.2-r1.ebuild b/app-emulation/podman/podman-3.1.2-r1.ebuild deleted file mode 100644 index ce8fb2e74712..000000000000 --- a/app-emulation/podman/podman-3.1.2-r1.ebuild +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -EGIT_COMMIT="51b8ddbc22cf5b10dd76dd9243924aa66ad7db39" - -inherit bash-completion-r1 flag-o-matic go-module tmpfiles - -DESCRIPTION="Library and podman tool for running OCI-based containers in Pods" -HOMEPAGE="https://github.com/containers/podman/" -MY_PN=podman -MY_P=${MY_PN}-${PV} -SRC_URI="https://github.com/containers/podman/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz" -LICENSE="Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT MPL-2.0" -SLOT="0" - -KEYWORDS="~amd64 ~arm64" -IUSE="apparmor btrfs +fuse +rootless selinux" -RESTRICT="test" - -COMMON_DEPEND=" - app-crypt/gpgme:= - >=app-emulation/conmon-2.0.0 - || ( >=app-emulation/runc-1.0.0_rc6 app-emulation/crun ) - dev-libs/libassuan:= - dev-libs/libgpg-error:= - >=net-misc/cni-plugins-0.8.6 - sys-fs/lvm2 - sys-libs/libseccomp:= - - apparmor? ( sys-libs/libapparmor ) - btrfs? ( sys-fs/btrfs-progs ) - rootless? ( app-emulation/slirp4netns ) - selinux? ( sys-libs/libselinux:= ) -" -DEPEND=" - ${COMMON_DEPEND} - dev-go/go-md2man" -RDEPEND="${COMMON_DEPEND} - fuse? ( sys-fs/fuse-overlayfs )" - -S=${WORKDIR}/${MY_P} - -src_prepare() { - default - - # Disable installation of python modules here, since those are - # installed by separate ebuilds. - local makefile_sed_args=( - -e '/^GIT_.*/d' - -e 's/$(GO) build/$(GO) build -v -work -x/' - -e 's/^\(install:.*\) install\.python$/\1/' - -e 's|^pkg/varlink/iopodman.go: .gopathok pkg/varlink/io.podman.varlink$|pkg/varlink/iopodman.go: pkg/varlink/io.podman.varlink|' - ) - - has_version -b '>=dev-lang/go-1.13.9' || makefile_sed_args+=(-e 's:GO111MODULE=off:GO111MODULE=on:') - - sed "${makefile_sed_args[@]}" -i Makefile || die - - sed -e 's|OUTPUT="${CIRRUS_TAG:.*|OUTPUT='v${PV}'|' \ - -i hack/get_release_info.sh || die -} - -src_compile() { - local git_commiT=${EGIT_COMMIT} - - # Filter unsupported linker flags - filter-flags '-Wl,*' - - [[ -f hack/apparmor_tag.sh ]] || die - if use apparmor; then - echo -e "#!/bin/sh\necho apparmor" > hack/apparmor_tag.sh || die - else - echo -e "#!/bin/sh\ntrue" > hack/apparmor_tag.sh || die - fi - - [[ -f hack/btrfs_installed_tag.sh ]] || die - if use btrfs; then - echo -e "#!/bin/sh\ntrue" > hack/btrfs_installed_tag.sh || die - else - echo -e "#!/bin/sh\necho exclude_graphdriver_btrfs" > \ - hack/btrfs_installed_tag.sh || die - fi - - [[ -f hack/selinux_tag.sh ]] || die - if use selinux; then - echo -e "#!/bin/sh\necho selinux" > hack/selinux_tag.sh || die - else - echo -e "#!/bin/sh\ntrue" > hack/selinux_tag.sh || die - fi - - # Avoid this error when generating pkg/varlink/iopodman.go: - # cannot find package "github.com/varlink/go/varlink/idl" - mkdir -p _output || die - ln -snf ../vendor _output/src || die - GO111MODULE=off GOPATH=${PWD}/_output go generate ./pkg/varlink/... || die - rm _output/src || die - - export -n GOCACHE GOPATH XDG_CACHE_HOME - GOBIN="${S}/bin" \ - emake all \ - GIT_BRANCH=master \ - GIT_BRANCH_CLEAN=master \ - COMMIT_NO="${git_commit}" \ - GIT_COMMIT="${git_commit}" -} - -src_install() { - emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" install - - insinto /etc/containers - newins test/registries.conf registries.conf.example - newins test/policy.json policy.json.example - - insinto /usr/share/containers - doins vendor/github.com/containers/common/pkg/seccomp/seccomp.json - - newconfd "${FILESDIR}"/podman.confd podman - newinitd "${FILESDIR}"/podman.initd podman - - insinto /etc/logrotate.d - newins "${FILESDIR}/podman.logrotated" podman - - dobashcomp completions/bash/* - - insinto /usr/share/zsh/site-functions - doins completions/zsh/* - - insinto /usr/share/fish/vendor_completions.d - doins completions/fish/* - - keepdir /var/lib/containers -} - -pkg_preinst() { - PODMAN_ROOTLESS_UPGRADE=false - if use rootless; then - has_version 'app-emulation/podman[rootless]' || PODMAN_ROOTLESS_UPGRADE=true - fi -} - -pkg_postinst() { - tmpfiles_process podman.conf - - local want_newline=false - if [[ ! ( -e ${EROOT%/*}/etc/containers/policy.json && -e ${EROOT%/*}/etc/containers/registries.conf ) ]]; then - elog "You need to create the following config files:" - elog "/etc/containers/registries.conf" - elog "/etc/containers/policy.json" - elog "To copy over default examples, use:" - elog "cp /etc/containers/registries.conf{.example,}" - elog "cp /etc/containers/policy.json{.example,}" - want_newline=true - fi - if [[ ${PODMAN_ROOTLESS_UPGRADE} == true ]] ; then - ${want_newline} && elog "" - elog "For rootless operation, you need to configure subuid/subgid" - elog "for user running podman. In case subuid/subgid has only been" - elog "configured for root, run:" - elog "usermod --add-subuids 1065536-1131071 " - elog "usermod --add-subgids 1065536-1131071 " - want_newline=true - fi -} diff --git a/app-emulation/podman/podman-3.2.1-r1.ebuild b/app-emulation/podman/podman-3.2.1-r1.ebuild deleted file mode 100644 index 090d5367af64..000000000000 --- a/app-emulation/podman/podman-3.2.1-r1.ebuild +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -EGIT_COMMIT="152952fe6b18581615c3efd1fafef2d8142738e8" - -inherit bash-completion-r1 flag-o-matic go-module tmpfiles - -DESCRIPTION="Library and podman tool for running OCI-based containers in Pods" -HOMEPAGE="https://github.com/containers/podman/" -MY_PN=podman -MY_P=${MY_PN}-${PV} -SRC_URI="https://github.com/containers/podman/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz" -LICENSE="Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT MPL-2.0" -SLOT="0" - -KEYWORDS="~amd64 ~arm64 ~ppc64" -IUSE="apparmor btrfs +fuse +rootless selinux" -RESTRICT="test" - -COMMON_DEPEND=" - app-crypt/gpgme:= - >=app-emulation/conmon-2.0.0 - || ( >=app-emulation/runc-1.0.0_rc6 app-emulation/crun ) - dev-libs/libassuan:= - dev-libs/libgpg-error:= - >=net-misc/cni-plugins-0.8.6 - sys-fs/lvm2 - sys-libs/libseccomp:= - - apparmor? ( sys-libs/libapparmor ) - btrfs? ( sys-fs/btrfs-progs ) - rootless? ( app-emulation/slirp4netns ) - selinux? ( sys-libs/libselinux:= ) -" -DEPEND=" - ${COMMON_DEPEND} - dev-go/go-md2man" -RDEPEND="${COMMON_DEPEND} - fuse? ( sys-fs/fuse-overlayfs )" - -S=${WORKDIR}/${MY_P} - -src_prepare() { - default - - # Disable installation of python modules here, since those are - # installed by separate ebuilds. - local makefile_sed_args=( - -e '/^GIT_.*/d' - -e 's/$(GO) build/$(GO) build -v -work -x/' - -e 's/^\(install:.*\) install\.python$/\1/' - -e 's|^pkg/varlink/iopodman.go: .gopathok pkg/varlink/io.podman.varlink$|pkg/varlink/iopodman.go: pkg/varlink/io.podman.varlink|' - ) - - has_version -b '>=dev-lang/go-1.13.9' || makefile_sed_args+=(-e 's:GO111MODULE=off:GO111MODULE=on:') - - sed "${makefile_sed_args[@]}" -i Makefile || die - - sed -e 's|OUTPUT="${CIRRUS_TAG:.*|OUTPUT='v${PV}'|' \ - -i hack/get_release_info.sh || die -} - -src_compile() { - local git_commiT=${EGIT_COMMIT} - - # Filter unsupported linker flags - filter-flags '-Wl,*' - - [[ -f hack/apparmor_tag.sh ]] || die - if use apparmor; then - echo -e "#!/bin/sh\necho apparmor" > hack/apparmor_tag.sh || die - else - echo -e "#!/bin/sh\ntrue" > hack/apparmor_tag.sh || die - fi - - [[ -f hack/btrfs_installed_tag.sh ]] || die - if use btrfs; then - echo -e "#!/bin/sh\ntrue" > hack/btrfs_installed_tag.sh || die - else - echo -e "#!/bin/sh\necho exclude_graphdriver_btrfs" > \ - hack/btrfs_installed_tag.sh || die - fi - - [[ -f hack/selinux_tag.sh ]] || die - if use selinux; then - echo -e "#!/bin/sh\necho selinux" > hack/selinux_tag.sh || die - else - echo -e "#!/bin/sh\ntrue" > hack/selinux_tag.sh || die - fi - - # Avoid this error when generating pkg/varlink/iopodman.go: - # cannot find package "github.com/varlink/go/varlink/idl" - mkdir -p _output || die - ln -snf ../vendor _output/src || die - GO111MODULE=off GOPATH=${PWD}/_output go generate ./pkg/varlink/... || die - rm _output/src || die - - export -n GOCACHE GOPATH XDG_CACHE_HOME - GOBIN="${S}/bin" \ - emake all \ - GIT_BRANCH=master \ - GIT_BRANCH_CLEAN=master \ - COMMIT_NO="${git_commit}" \ - GIT_COMMIT="${git_commit}" -} - -src_install() { - emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" install - - insinto /etc/containers - newins test/registries.conf registries.conf.example - newins test/policy.json policy.json.example - - insinto /usr/share/containers - doins vendor/github.com/containers/common/pkg/seccomp/seccomp.json - - newconfd "${FILESDIR}"/podman.confd podman - newinitd "${FILESDIR}"/podman.initd podman - - insinto /etc/logrotate.d - newins "${FILESDIR}/podman.logrotated" podman - - dobashcomp completions/bash/* - - insinto /usr/share/zsh/site-functions - doins completions/zsh/* - - insinto /usr/share/fish/vendor_completions.d - doins completions/fish/* - - keepdir /var/lib/containers -} - -pkg_preinst() { - PODMAN_ROOTLESS_UPGRADE=false - if use rootless; then - has_version 'app-emulation/podman[rootless]' || PODMAN_ROOTLESS_UPGRADE=true - fi -} - -pkg_postinst() { - tmpfiles_process podman.conf - - local want_newline=false - if [[ ! ( -e ${EROOT%/*}/etc/containers/policy.json && -e ${EROOT%/*}/etc/containers/registries.conf ) ]]; then - elog "You need to create the following config files:" - elog "/etc/containers/registries.conf" - elog "/etc/containers/policy.json" - elog "To copy over default examples, use:" - elog "cp /etc/containers/registries.conf{.example,}" - elog "cp /etc/containers/policy.json{.example,}" - want_newline=true - fi - if [[ ${PODMAN_ROOTLESS_UPGRADE} == true ]] ; then - ${want_newline} && elog "" - elog "For rootless operation, you need to configure subuid/subgid" - elog "for user running podman. In case subuid/subgid has only been" - elog "configured for root, run:" - elog "usermod --add-subuids 1065536-1131071 " - elog "usermod --add-subgids 1065536-1131071 " - want_newline=true - fi -} diff --git a/app-emulation/podman/podman-3.3.1.ebuild b/app-emulation/podman/podman-3.3.1.ebuild new file mode 100644 index 000000000000..e0b339df33ae --- /dev/null +++ b/app-emulation/podman/podman-3.3.1.ebuild @@ -0,0 +1,164 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +EGIT_COMMIT="4c5283fabff2de5145838f1847a5a7b2b1fbc0a5" + +inherit bash-completion-r1 flag-o-matic go-module tmpfiles + +DESCRIPTION="Library and podman tool for running OCI-based containers in Pods" +HOMEPAGE="https://github.com/containers/podman/" +MY_PN=podman +MY_P=${MY_PN}-${PV} +SRC_URI="https://github.com/containers/podman/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz" +LICENSE="Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT MPL-2.0" +SLOT="0" + +KEYWORDS="~amd64 ~arm64 ~ppc64" +IUSE="apparmor btrfs +fuse +rootless selinux" +RESTRICT="test" + +COMMON_DEPEND=" + app-crypt/gpgme:= + >=app-emulation/conmon-2.0.0 + || ( >=app-emulation/runc-1.0.0_rc6 app-emulation/crun ) + dev-libs/libassuan:= + dev-libs/libgpg-error:= + >=net-misc/cni-plugins-0.8.6 + sys-fs/lvm2 + sys-libs/libseccomp:= + + apparmor? ( sys-libs/libapparmor ) + btrfs? ( sys-fs/btrfs-progs ) + rootless? ( app-emulation/slirp4netns ) + selinux? ( sys-libs/libselinux:= ) +" +DEPEND=" + ${COMMON_DEPEND} + dev-go/go-md2man" +RDEPEND="${COMMON_DEPEND} + fuse? ( sys-fs/fuse-overlayfs )" + +S=${WORKDIR}/${MY_P} + +src_prepare() { + default + + # Disable installation of python modules here, since those are + # installed by separate ebuilds. + local makefile_sed_args=( + -e '/^GIT_.*/d' + -e 's/$(GO) build/$(GO) build -v -work -x/' + -e 's/^\(install:.*\) install\.python$/\1/' + -e 's|^pkg/varlink/iopodman.go: .gopathok pkg/varlink/io.podman.varlink$|pkg/varlink/iopodman.go: pkg/varlink/io.podman.varlink|' + ) + + has_version -b '>=dev-lang/go-1.13.9' || makefile_sed_args+=(-e 's:GO111MODULE=off:GO111MODULE=on:') + + sed "${makefile_sed_args[@]}" -i Makefile || die + + sed -e 's|OUTPUT="${CIRRUS_TAG:.*|OUTPUT='v${PV}'|' \ + -i hack/get_release_info.sh || die +} + +src_compile() { + local git_commiT=${EGIT_COMMIT} + + # Filter unsupported linker flags + filter-flags '-Wl,*' + + [[ -f hack/apparmor_tag.sh ]] || die + if use apparmor; then + echo -e "#!/bin/sh\necho apparmor" > hack/apparmor_tag.sh || die + else + echo -e "#!/bin/sh\ntrue" > hack/apparmor_tag.sh || die + fi + + [[ -f hack/btrfs_installed_tag.sh ]] || die + if use btrfs; then + echo -e "#!/bin/sh\ntrue" > hack/btrfs_installed_tag.sh || die + else + echo -e "#!/bin/sh\necho exclude_graphdriver_btrfs" > \ + hack/btrfs_installed_tag.sh || die + fi + + [[ -f hack/selinux_tag.sh ]] || die + if use selinux; then + echo -e "#!/bin/sh\necho selinux" > hack/selinux_tag.sh || die + else + echo -e "#!/bin/sh\ntrue" > hack/selinux_tag.sh || die + fi + + # Avoid this error when generating pkg/varlink/iopodman.go: + # cannot find package "github.com/varlink/go/varlink/idl" + mkdir -p _output || die + ln -snf ../vendor _output/src || die + GO111MODULE=off GOPATH=${PWD}/_output go generate ./pkg/varlink/... || die + rm _output/src || die + + export -n GOCACHE GOPATH XDG_CACHE_HOME + GOBIN="${S}/bin" \ + emake all \ + GIT_BRANCH=master \ + GIT_BRANCH_CLEAN=master \ + COMMIT_NO="${git_commit}" \ + GIT_COMMIT="${git_commit}" +} + +src_install() { + emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" install + + insinto /etc/containers + newins test/registries.conf registries.conf.example + newins test/policy.json policy.json.example + + insinto /usr/share/containers + doins vendor/github.com/containers/common/pkg/seccomp/seccomp.json + + newconfd "${FILESDIR}"/podman.confd podman + newinitd "${FILESDIR}"/podman.initd podman + + insinto /etc/logrotate.d + newins "${FILESDIR}/podman.logrotated" podman + + dobashcomp completions/bash/* + + insinto /usr/share/zsh/site-functions + doins completions/zsh/* + + insinto /usr/share/fish/vendor_completions.d + doins completions/fish/* + + keepdir /var/lib/containers +} + +pkg_preinst() { + PODMAN_ROOTLESS_UPGRADE=false + if use rootless; then + has_version 'app-emulation/podman[rootless]' || PODMAN_ROOTLESS_UPGRADE=true + fi +} + +pkg_postinst() { + tmpfiles_process podman.conf + + local want_newline=false + if [[ ! ( -e ${EROOT%/*}/etc/containers/policy.json && -e ${EROOT%/*}/etc/containers/registries.conf ) ]]; then + elog "You need to create the following config files:" + elog "/etc/containers/registries.conf" + elog "/etc/containers/policy.json" + elog "To copy over default examples, use:" + elog "cp /etc/containers/registries.conf{.example,}" + elog "cp /etc/containers/policy.json{.example,}" + want_newline=true + fi + if [[ ${PODMAN_ROOTLESS_UPGRADE} == true ]] ; then + ${want_newline} && elog "" + elog "For rootless operation, you need to configure subuid/subgid" + elog "for user running podman. In case subuid/subgid has only been" + elog "configured for root, run:" + elog "usermod --add-subuids 1065536-1131071 " + elog "usermod --add-subgids 1065536-1131071 " + want_newline=true + fi +} diff --git a/app-emulation/qemu/Manifest b/app-emulation/qemu/Manifest index 020314705fee..74e04c89b5ef 100644 --- a/app-emulation/qemu/Manifest +++ b/app-emulation/qemu/Manifest @@ -9,7 +9,7 @@ AUX qemu-6.0.0-make.patch 306 BLAKE2B 701c6d929dc7544a2e155243a2545dc488765cf8b7 AUX qemu-binfmt.initd.head 1442 BLAKE2B 23aa5338914aa7c47f9b1cc1d28291abd0ea037a33cca81f990decfafac2907c86c042350c9dd45591d16330846d4e11d2c8a2a409a68ad81656d9c2c51964c0 SHA512 3fec8946a37bfbd2089f5d95089ed5987a198fc0139ee7482d4bb38c2ffa0e165667a7853afcf2b458bc3e2a6540f172c929ca5a334a00db47e2d0f881382c0e AUX qemu-binfmt.initd.tail 245 BLAKE2B dd59f2944c6e3f0c4d282b94b687a9b5c51dd77c5103fb9889bd9ce56874495397676ae6c8375d9e9e23094828477240778d9e0f361e68cdd63fdad574851561 SHA512 bcca16805f8380d52cc591ea3d65a8f6e5de456730618f6aee301510edb75d235a22d4d7aeed224882210392840adb403eb53234b6cb76a4cb24533852a8b737 DIST qemu-6.0.0.tar.xz 107333232 BLAKE2B 7746329d3e13782b7c346ce4052cc517cfc65cd9b2d514d199e4d5b8570ca79566ec04b0c114db2e97c84e68eb551e0d4cdce1b14b91a88fe08d2a5f682c1418 SHA512 ee3ff00aebec4d8891d2ff6dabe4e667e510b2a4fe3f6190aa34673a91ea32dcd2db2e9bf94c2f1bf05aa79788f17cfbbedc6027c0988ea08a92587b79ee05e4 -EBUILD qemu-6.0.0-r2.ebuild 25695 BLAKE2B f0617808f53a084e1a3f9a7a8b2e81c015a9f8164f2a22d6abb2e9658def2112e5ebf76b034871ac8c950b50578347df28aab1250e38f246be98953a3f3351fb SHA512 01d3d4f26149b3821fc7948aafd4715e4921dad8bbd593dbff602c4ebd3b68875f83810f1d7b806dedf08057063ae6437eabdfb4ad23d93eabeb99e492247ae6 -EBUILD qemu-6.0.0-r52.ebuild 25763 BLAKE2B a2d0c8774081713d1a3b3042a3f81b8a19fc15cabd4a7614af068628629443edebff1c0ac80ed6fa07a12472e4b251358ce3cef895d8e82f6e99d0de48d28802 SHA512 7244351f30b9e52926d69fbe81b305733826327864b361ec0f8dc347a3a1639a33c90148febca72d5e1be18c0bdc3b57f25acbbfd049b3a455db19125f6c1002 -EBUILD qemu-9999.ebuild 25725 BLAKE2B 92b669324e09cf5d5d9e7de8589558b5afdf17f3a934cb25502b8ac595ea3bf9f5216e23d8a4e49edf4fd6c211231bdd37d1eb9a26f64b177777602c85391e10 SHA512 edbe8a6b1619459c51198be8515f6a44ac93496465a18ebf4508625a99b8ee1ee2127a877e638b8c856503bbbfadfc243b6b177123681da7b0941a4197b06650 +EBUILD qemu-6.0.0-r3.ebuild 25687 BLAKE2B d27bfd13df26badcde5a3a3140d1980f3d8fdcad459c6500fa8f668461b2d23ae9fd9f0530dd58484fc688979a60754de01d0d8e8dbb314d982b61d929b5c441 SHA512 03f5132fc62db51a661b20d619bf4ff9b28eb509e90493f2ebb05a3a20d48d947bb139c0b17ba017539e2337cf4a363de08ced82d97e4a769d107d35e8955121 +EBUILD qemu-6.0.0-r53.ebuild 25755 BLAKE2B 28f009e1e9f8d02941ddffda8c1ab50cd2740ba779ef6ae6d7b30cae6e18e4ac5580bcb690db9c1651ce277b1fc025a4d875d5496bc72d2252fbf239139c0716 SHA512 87e40774c283b3fdd30236db7d01f28c6e8ae90b68ffa9d617e130dc0b4e74f3e30b3e6a105f1cc465c22ce9460e47d7408bf9140fcf695f53ab4aa727e87d16 +EBUILD qemu-9999.ebuild 25717 BLAKE2B 1205ede5d7bc9d7e0390e336cae226274ebdc0dff8668aedc8d4ef9eff7d45d0123338c5e5f5c4e1b47cb7bdf712bc1a7ff32b66e482c41a345a1b919ccd95bb SHA512 1fd85860eb57d9532adc47b15d04e917facf8576081de036eaf97b2c5fcd3d63d01d5db797216ebdfbfb9cdb6f8a9871b98158b2ed87f720f03011b8cf55bec3 MISC metadata.xml 4403 BLAKE2B d8794248d1fc44363d107d2a0148a14d27de016fd4b311fa7feaf9125e35678c390f2ff07d35a48d3c224fe56ab467eb2c4a8cae4fc65f8c2aad98c62205a645 SHA512 f2b8daaa06e80b7f19915c794d3c010122d8578061d471564b1fd73df3a567bb4937b733058205346441a7d487a7f8eb03c3238a22d60a48b5e9cd02569d7e9e diff --git a/app-emulation/qemu/qemu-6.0.0-r2.ebuild b/app-emulation/qemu/qemu-6.0.0-r2.ebuild deleted file mode 100644 index 6b82204f2794..000000000000 --- a/app-emulation/qemu/qemu-6.0.0-r2.ebuild +++ /dev/null @@ -1,910 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -PYTHON_COMPAT=( python3_{7,8,9,10} ) -PYTHON_REQ_USE="ncurses,readline" - -FIRMWARE_ABI_VERSION="5.2.0-r50" - -inherit eutils linux-info toolchain-funcs multilib python-r1 -inherit udev fcaps readme.gentoo-r1 pax-utils xdg-utils - -if [[ ${PV} = *9999* ]]; then - EGIT_REPO_URI="https://git.qemu.org/git/qemu.git" - EGIT_SUBMODULES=( - meson - tests/fp/berkeley-softfloat-3 - tests/fp/berkeley-testfloat-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 fuse glusterfs gnutls gtk infiniband iscsi io-uring - jack jemalloc +jpeg kernel_linux - kernel_FreeBSD lzo multipath - 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 test udev usb - usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen - xfs 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} - avr - lm32 - moxie - rx - tricore - unicore32 -" -IUSE_USER_TARGETS=" - ${COMMON_TARGETS} - aarch64_be - armeb - hexagon - mipsn32 - mipsn32el - ppc64abi32 - ppc64le - sparc32plus -" - -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 ) - sdl-image? ( sdl ) - static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy ) - static-user? ( !plugins ) - vhost-user-fs? ( caps seccomp ) - virgl? ( opengl ) - virtfs? ( caps xattr ) - vte? ( gtk ) - multipath? ( udev ) - 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(+)] - >=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(+)] ) - fuse? ( >=sys-fs/fuse-3.1:3[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(+)] ) - jack? ( virtual/jack ) - jemalloc? ( dev-libs/jemalloc ) - jpeg? ( virtual/jpeg:0=[static-libs(+)] ) - lzo? ( dev-libs/lzo:2[static-libs(+)] ) - multipath? ( sys-fs/multipath-tools ) - ncurses? ( - sys-libs/ncurses:=[unicode(+)] - sys-libs/ncurses:=[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[static-libs(+)] ) - 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(+)] ) - udev? ( virtual/libudev[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(+)] ) -" - -SEABIOS_VERSION="1.14.0" - -X86_FIRMWARE_DEPEND=" - pin-upstream-blobs? ( - ~sys-firmware/edk2-ovmf-202008[binary] - ~sys-firmware/ipxe-1.21.1[binary,qemu] - ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] - ~sys-firmware/sgabios-0.1_pre10[binary] - ) - !pin-upstream-blobs? ( - sys-firmware/edk2-ovmf - sys-firmware/ipxe[qemu] - >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios] - sys-firmware/sgabios - )" -PPC_FIRMWARE_DEPEND=" - pin-upstream-blobs? ( - ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] - ) - !pin-upstream-blobs? ( - >=sys-firmware/seabios-${SEABIOS_VERSION}[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_ppc? ( ${PPC_FIRMWARE_DEPEND} ) - qemu_softmmu_targets_ppc64? ( ${PPC_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}-5.2.0-strings.patch - "${FILESDIR}"/${PN}-5.2.0-cleaner-werror.patch - "${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch - "${FILESDIR}"/${PN}-5.2.0-dce-locks.patch - "${FILESDIR}"/${PN}-6.0.0-make.patch -) - -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/opensbi-riscv64-generic-fw_dynamic.elf - usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf - 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 requires 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/targets/ >/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 -} - -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 STRINGS - export WINDRES=${CHOST}-windres - - # Verbose builds - MAKEOPTS+=" V=1" - - # 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 - --localstatedir=/var - --disable-bsd-user - --disable-containers # bug #732972 - --disable-guest-agent - --disable-strip - - # bug #746752: TCG interpreter has a few limitations: - # - it does not support FPU - # - it's generally slower on non-self-modifying code - # It's advantage is support for host architectures - # where native codegeneration is not implemented. - # Gentoo has qemu keyworded only on targets with - # native code generation available. Avoid the interpreter. - --disable-tcg-interpreter - - --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 nls gettext) - $(use_enable plugins) - $(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 - } - # Enable option only for softmmu build, but not 'user' or 'tools' - conf_softmmu() { - if [[ ${buildtype} == "softmmu" ]] ; then - use_enable "$@" - else - echo "--disable-${2:-$1}" - fi - } - # Enable option only for tools build, but not 'user' or 'softmmu' - conf_tools() { - if [[ ${buildtype} == "tools" ]] ; then - use_enable "$@" - else - echo "--disable-${2:-$1}" - 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 fuse) - $(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 multipath mpath) - $(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_softmmu 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 udev libudev) - $(conf_notuser usb libusb) - $(conf_notuser usbredir usb-redir) - $(conf_notuser vde) - $(conf_notuser vhost-net) - $(conf_notuser vhost-user-fs) - $(conf_tools vhost-user-fs virtiofsd) - $(conf_notuser virgl virglrenderer) - $(conf_softmmu virtfs) - $(conf_notuser vnc) - $(conf_notuser vte) - $(conf_notuser xen) - $(conf_notuser xen xen-pci-passthrough) - $(conf_notuser xfs xfsctl) - # use prebuilt keymaps, bug #759604 - --disable-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 jack) - $(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 - - # Meson will not use a cross-file unless cross_prefix is set. - tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" ) - - # Plumb through equivalent of EXTRA_ECONF to allow experiments - # like bug #747928. - conf_opts+=( ${EXTRA_CONF_QEMU} ) - - 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-r2 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 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" - # PPC/PPC64 loads vgabios-stdvga - if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || 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-6.0.0-r3.ebuild b/app-emulation/qemu/qemu-6.0.0-r3.ebuild new file mode 100644 index 000000000000..30b2df14de08 --- /dev/null +++ b/app-emulation/qemu/qemu-6.0.0-r3.ebuild @@ -0,0 +1,910 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_REQ_USE="ncurses,readline" + +FIRMWARE_ABI_VERSION="5.2.0-r50" + +inherit eutils linux-info toolchain-funcs multilib python-r1 +inherit udev fcaps readme.gentoo-r1 pax-utils xdg-utils + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="https://git.qemu.org/git/qemu.git" + EGIT_SUBMODULES=( + meson + tests/fp/berkeley-softfloat-3 + tests/fp/berkeley-testfloat-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 fuse glusterfs gnutls gtk infiniband iscsi io-uring + jack jemalloc +jpeg kernel_linux + kernel_FreeBSD lzo multipath + 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 test udev usb + usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen + xfs 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} + avr + lm32 + moxie + rx + tricore + unicore32 +" +IUSE_USER_TARGETS=" + ${COMMON_TARGETS} + aarch64_be + armeb + hexagon + mipsn32 + mipsn32el + ppc64abi32 + ppc64le + sparc32plus +" + +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 ) + sdl-image? ( sdl ) + static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy !udev ) + static-user? ( !plugins ) + vhost-user-fs? ( caps seccomp ) + virgl? ( opengl ) + virtfs? ( caps xattr ) + vte? ( gtk ) + multipath? ( udev ) + 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(+)] + >=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(+)] ) + fuse? ( >=sys-fs/fuse-3.1:3[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(+)] ) + jack? ( virtual/jack ) + jemalloc? ( dev-libs/jemalloc ) + jpeg? ( virtual/jpeg:0=[static-libs(+)] ) + lzo? ( dev-libs/lzo:2[static-libs(+)] ) + multipath? ( sys-fs/multipath-tools ) + ncurses? ( + sys-libs/ncurses:=[unicode(+)] + sys-libs/ncurses:=[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[static-libs(+)] ) + 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(+)] ) + udev? ( virtual/libudev:= ) + 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(+)] ) +" + +SEABIOS_VERSION="1.14.0" + +X86_FIRMWARE_DEPEND=" + pin-upstream-blobs? ( + ~sys-firmware/edk2-ovmf-202008[binary] + ~sys-firmware/ipxe-1.21.1[binary,qemu] + ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] + ~sys-firmware/sgabios-0.1_pre10[binary] + ) + !pin-upstream-blobs? ( + sys-firmware/edk2-ovmf + sys-firmware/ipxe[qemu] + >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios] + sys-firmware/sgabios + )" +PPC_FIRMWARE_DEPEND=" + pin-upstream-blobs? ( + ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] + ) + !pin-upstream-blobs? ( + >=sys-firmware/seabios-${SEABIOS_VERSION}[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_ppc? ( ${PPC_FIRMWARE_DEPEND} ) + qemu_softmmu_targets_ppc64? ( ${PPC_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}-5.2.0-strings.patch + "${FILESDIR}"/${PN}-5.2.0-cleaner-werror.patch + "${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch + "${FILESDIR}"/${PN}-5.2.0-dce-locks.patch + "${FILESDIR}"/${PN}-6.0.0-make.patch +) + +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/opensbi-riscv64-generic-fw_dynamic.elf + usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf + 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 requires 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/targets/ >/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 +} + +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 STRINGS + export WINDRES=${CHOST}-windres + + # Verbose builds + MAKEOPTS+=" V=1" + + # 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 + --localstatedir=/var + --disable-bsd-user + --disable-containers # bug #732972 + --disable-guest-agent + --disable-strip + + # bug #746752: TCG interpreter has a few limitations: + # - it does not support FPU + # - it's generally slower on non-self-modifying code + # It's advantage is support for host architectures + # where native codegeneration is not implemented. + # Gentoo has qemu keyworded only on targets with + # native code generation available. Avoid the interpreter. + --disable-tcg-interpreter + + --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 nls gettext) + $(use_enable plugins) + $(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 + } + # Enable option only for softmmu build, but not 'user' or 'tools' + conf_softmmu() { + if [[ ${buildtype} == "softmmu" ]] ; then + use_enable "$@" + else + echo "--disable-${2:-$1}" + fi + } + # Enable option only for tools build, but not 'user' or 'softmmu' + conf_tools() { + if [[ ${buildtype} == "tools" ]] ; then + use_enable "$@" + else + echo "--disable-${2:-$1}" + 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 fuse) + $(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 multipath mpath) + $(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_softmmu 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 udev libudev) + $(conf_notuser usb libusb) + $(conf_notuser usbredir usb-redir) + $(conf_notuser vde) + $(conf_notuser vhost-net) + $(conf_notuser vhost-user-fs) + $(conf_tools vhost-user-fs virtiofsd) + $(conf_notuser virgl virglrenderer) + $(conf_softmmu virtfs) + $(conf_notuser vnc) + $(conf_notuser vte) + $(conf_notuser xen) + $(conf_notuser xen xen-pci-passthrough) + $(conf_notuser xfs xfsctl) + # use prebuilt keymaps, bug #759604 + --disable-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 jack) + $(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 + + # Meson will not use a cross-file unless cross_prefix is set. + tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" ) + + # Plumb through equivalent of EXTRA_ECONF to allow experiments + # like bug #747928. + conf_opts+=( ${EXTRA_CONF_QEMU} ) + + 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-r2 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 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" + # PPC/PPC64 loads vgabios-stdvga + if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || 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-6.0.0-r52.ebuild b/app-emulation/qemu/qemu-6.0.0-r52.ebuild deleted file mode 100644 index 43f93745ed87..000000000000 --- a/app-emulation/qemu/qemu-6.0.0-r52.ebuild +++ /dev/null @@ -1,911 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -PYTHON_COMPAT=( python3_{7,8,9,10} ) -PYTHON_REQ_USE="ncurses,readline" - -FIRMWARE_ABI_VERSION="6.0.0-r50" - -inherit eutils linux-info toolchain-funcs multilib python-r1 -inherit udev fcaps readme.gentoo-r1 pax-utils xdg-utils - -if [[ ${PV} = *9999* ]]; then - EGIT_REPO_URI="https://git.qemu.org/git/qemu.git" - EGIT_SUBMODULES=( - meson - tests/fp/berkeley-softfloat-3 - tests/fp/berkeley-testfloat-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 fuse glusterfs gnutls gtk infiniband iscsi io-uring - jack jemalloc +jpeg kernel_linux - kernel_FreeBSD lzo multipath - 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 test udev usb - usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen - xfs 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} - avr - lm32 - moxie - rx - tricore - unicore32 -" -IUSE_USER_TARGETS=" - ${COMMON_TARGETS} - aarch64_be - armeb - hexagon - mipsn32 - mipsn32el - ppc64abi32 - ppc64le - sparc32plus -" - -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 ) - sdl-image? ( sdl ) - static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy ) - static-user? ( !plugins ) - vhost-user-fs? ( caps seccomp ) - virgl? ( opengl ) - virtfs? ( caps xattr ) - vte? ( gtk ) - multipath? ( udev ) - 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(+)] - >=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(+)] ) - fuse? ( >=sys-fs/fuse-3.1:3[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(+)] ) - jack? ( virtual/jack ) - jemalloc? ( dev-libs/jemalloc ) - jpeg? ( virtual/jpeg:0=[static-libs(+)] ) - lzo? ( dev-libs/lzo:2[static-libs(+)] ) - multipath? ( sys-fs/multipath-tools ) - ncurses? ( - sys-libs/ncurses:=[unicode(+)] - sys-libs/ncurses:=[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[static-libs(+)] ) - 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(+)] ) - udev? ( virtual/libudev[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(+)] ) -" - -EDK2_OVMF_VERSION="202105" -SEABIOS_VERSION="1.14.0" - -X86_FIRMWARE_DEPEND=" - pin-upstream-blobs? ( - ~sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}[binary] - ~sys-firmware/ipxe-1.21.1[binary,qemu] - ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] - ~sys-firmware/sgabios-0.1_pre10[binary] - ) - !pin-upstream-blobs? ( - >=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION} - sys-firmware/ipxe[qemu] - >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios] - sys-firmware/sgabios - )" -PPC_FIRMWARE_DEPEND=" - pin-upstream-blobs? ( - ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] - ) - !pin-upstream-blobs? ( - >=sys-firmware/seabios-${SEABIOS_VERSION}[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_ppc? ( ${PPC_FIRMWARE_DEPEND} ) - qemu_softmmu_targets_ppc64? ( ${PPC_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}-5.2.0-strings.patch - "${FILESDIR}"/${PN}-5.2.0-cleaner-werror.patch - "${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch - "${FILESDIR}"/${PN}-5.2.0-dce-locks.patch - "${FILESDIR}"/${PN}-6.0.0-make.patch -) - -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/opensbi-riscv64-generic-fw_dynamic.elf - usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf - 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 requires 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/targets/ >/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 -} - -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 STRINGS - export WINDRES=${CHOST}-windres - - # Verbose builds - MAKEOPTS+=" V=1" - - # 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 - --localstatedir=/var - --disable-bsd-user - --disable-containers # bug #732972 - --disable-guest-agent - --disable-strip - - # bug #746752: TCG interpreter has a few limitations: - # - it does not support FPU - # - it's generally slower on non-self-modifying code - # It's advantage is support for host architectures - # where native codegeneration is not implemented. - # Gentoo has qemu keyworded only on targets with - # native code generation available. Avoid the interpreter. - --disable-tcg-interpreter - - --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 nls gettext) - $(use_enable plugins) - $(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 - } - # Enable option only for softmmu build, but not 'user' or 'tools' - conf_softmmu() { - if [[ ${buildtype} == "softmmu" ]] ; then - use_enable "$@" - else - echo "--disable-${2:-$1}" - fi - } - # Enable option only for tools build, but not 'user' or 'softmmu' - conf_tools() { - if [[ ${buildtype} == "tools" ]] ; then - use_enable "$@" - else - echo "--disable-${2:-$1}" - 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 fuse) - $(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 multipath mpath) - $(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_softmmu 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 udev libudev) - $(conf_notuser usb libusb) - $(conf_notuser usbredir usb-redir) - $(conf_notuser vde) - $(conf_notuser vhost-net) - $(conf_notuser vhost-user-fs) - $(conf_tools vhost-user-fs virtiofsd) - $(conf_notuser virgl virglrenderer) - $(conf_softmmu virtfs) - $(conf_notuser vnc) - $(conf_notuser vte) - $(conf_notuser xen) - $(conf_notuser xen xen-pci-passthrough) - $(conf_notuser xfs xfsctl) - # use prebuilt keymaps, bug #759604 - --disable-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 jack) - $(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 - - # Meson will not use a cross-file unless cross_prefix is set. - tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" ) - - # Plumb through equivalent of EXTRA_ECONF to allow experiments - # like bug #747928. - conf_opts+=( ${EXTRA_CONF_QEMU} ) - - 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-r2 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 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" - # PPC/PPC64 loads vgabios-stdvga - if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || 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-6.0.0-r53.ebuild b/app-emulation/qemu/qemu-6.0.0-r53.ebuild new file mode 100644 index 000000000000..7a0e85ac85a1 --- /dev/null +++ b/app-emulation/qemu/qemu-6.0.0-r53.ebuild @@ -0,0 +1,911 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_REQ_USE="ncurses,readline" + +FIRMWARE_ABI_VERSION="6.0.0-r50" + +inherit eutils linux-info toolchain-funcs multilib python-r1 +inherit udev fcaps readme.gentoo-r1 pax-utils xdg-utils + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="https://git.qemu.org/git/qemu.git" + EGIT_SUBMODULES=( + meson + tests/fp/berkeley-softfloat-3 + tests/fp/berkeley-testfloat-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 fuse glusterfs gnutls gtk infiniband iscsi io-uring + jack jemalloc +jpeg kernel_linux + kernel_FreeBSD lzo multipath + 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 test udev usb + usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen + xfs 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} + avr + lm32 + moxie + rx + tricore + unicore32 +" +IUSE_USER_TARGETS=" + ${COMMON_TARGETS} + aarch64_be + armeb + hexagon + mipsn32 + mipsn32el + ppc64abi32 + ppc64le + sparc32plus +" + +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 ) + sdl-image? ( sdl ) + static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy !udev ) + static-user? ( !plugins ) + vhost-user-fs? ( caps seccomp ) + virgl? ( opengl ) + virtfs? ( caps xattr ) + vte? ( gtk ) + multipath? ( udev ) + 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(+)] + >=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(+)] ) + fuse? ( >=sys-fs/fuse-3.1:3[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(+)] ) + jack? ( virtual/jack ) + jemalloc? ( dev-libs/jemalloc ) + jpeg? ( virtual/jpeg:0=[static-libs(+)] ) + lzo? ( dev-libs/lzo:2[static-libs(+)] ) + multipath? ( sys-fs/multipath-tools ) + ncurses? ( + sys-libs/ncurses:=[unicode(+)] + sys-libs/ncurses:=[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[static-libs(+)] ) + 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(+)] ) + udev? ( virtual/libudev:= ) + 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(+)] ) +" + +EDK2_OVMF_VERSION="202105" +SEABIOS_VERSION="1.14.0" + +X86_FIRMWARE_DEPEND=" + pin-upstream-blobs? ( + ~sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}[binary] + ~sys-firmware/ipxe-1.21.1[binary,qemu] + ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] + ~sys-firmware/sgabios-0.1_pre10[binary] + ) + !pin-upstream-blobs? ( + >=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION} + sys-firmware/ipxe[qemu] + >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios] + sys-firmware/sgabios + )" +PPC_FIRMWARE_DEPEND=" + pin-upstream-blobs? ( + ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios] + ) + !pin-upstream-blobs? ( + >=sys-firmware/seabios-${SEABIOS_VERSION}[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_ppc? ( ${PPC_FIRMWARE_DEPEND} ) + qemu_softmmu_targets_ppc64? ( ${PPC_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}-5.2.0-strings.patch + "${FILESDIR}"/${PN}-5.2.0-cleaner-werror.patch + "${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch + "${FILESDIR}"/${PN}-5.2.0-dce-locks.patch + "${FILESDIR}"/${PN}-6.0.0-make.patch +) + +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/opensbi-riscv64-generic-fw_dynamic.elf + usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf + 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 requires 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/targets/ >/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 +} + +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 STRINGS + export WINDRES=${CHOST}-windres + + # Verbose builds + MAKEOPTS+=" V=1" + + # 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 + --localstatedir=/var + --disable-bsd-user + --disable-containers # bug #732972 + --disable-guest-agent + --disable-strip + + # bug #746752: TCG interpreter has a few limitations: + # - it does not support FPU + # - it's generally slower on non-self-modifying code + # It's advantage is support for host architectures + # where native codegeneration is not implemented. + # Gentoo has qemu keyworded only on targets with + # native code generation available. Avoid the interpreter. + --disable-tcg-interpreter + + --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 nls gettext) + $(use_enable plugins) + $(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 + } + # Enable option only for softmmu build, but not 'user' or 'tools' + conf_softmmu() { + if [[ ${buildtype} == "softmmu" ]] ; then + use_enable "$@" + else + echo "--disable-${2:-$1}" + fi + } + # Enable option only for tools build, but not 'user' or 'softmmu' + conf_tools() { + if [[ ${buildtype} == "tools" ]] ; then + use_enable "$@" + else + echo "--disable-${2:-$1}" + 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 fuse) + $(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 multipath mpath) + $(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_softmmu 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 udev libudev) + $(conf_notuser usb libusb) + $(conf_notuser usbredir usb-redir) + $(conf_notuser vde) + $(conf_notuser vhost-net) + $(conf_notuser vhost-user-fs) + $(conf_tools vhost-user-fs virtiofsd) + $(conf_notuser virgl virglrenderer) + $(conf_softmmu virtfs) + $(conf_notuser vnc) + $(conf_notuser vte) + $(conf_notuser xen) + $(conf_notuser xen xen-pci-passthrough) + $(conf_notuser xfs xfsctl) + # use prebuilt keymaps, bug #759604 + --disable-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 jack) + $(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 + + # Meson will not use a cross-file unless cross_prefix is set. + tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" ) + + # Plumb through equivalent of EXTRA_ECONF to allow experiments + # like bug #747928. + conf_opts+=( ${EXTRA_CONF_QEMU} ) + + 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-r2 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 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" + # PPC/PPC64 loads vgabios-stdvga + if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || 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 3c10cc9beb9f..8aa463f41c8e 100644 --- a/app-emulation/qemu/qemu-9999.ebuild +++ b/app-emulation/qemu/qemu-9999.ebuild @@ -109,7 +109,7 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE} qemu_softmmu_targets_riscv32? ( fdt ) qemu_softmmu_targets_riscv64? ( fdt ) sdl-image? ( sdl ) - static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy ) + static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy !udev ) static-user? ( !plugins ) vhost-user-fs? ( caps seccomp ) virgl? ( opengl ) @@ -202,7 +202,7 @@ SOFTMMU_TOOLS_DEPEND=" >=app-emulation/spice-0.12.0[static-libs(+)] ) ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] ) - udev? ( virtual/libudev[static-libs(+)] ) + udev? ( virtual/libudev:= ) usb? ( >=virtual/libusb-1-r2[static-libs(+)] ) usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] ) vde? ( net-misc/vde[static-libs(+)] ) diff --git a/app-emulation/simplevirt/Manifest b/app-emulation/simplevirt/Manifest index 65757b6f52d4..bbb1894d833a 100644 --- a/app-emulation/simplevirt/Manifest +++ b/app-emulation/simplevirt/Manifest @@ -1,10 +1,22 @@ AUX simplevirtd.confd 103 BLAKE2B 897b17aac8b81b60171267560c36a742dcd812cb3c883bb2855b2ec6fc0664d582f0779f2a5593105c94c0e18b82468dcbfc1b935f215f7d6b42f33043cd7121 SHA512 3e529de36a18bf082d7de220c8c0b52aedf6a1eb3860192db7a79cad5dc0d224d727d7377c8afde3c8d899d42b3ac4a6c56cbb4e17cd5b9217413b1657d0a516 AUX simplevirtd.initd 334 BLAKE2B beecf30220f420c787bc200e149bb47509f9ed46e22354ecc8faf41ee4f7745a0ac2a484acf8d69d43098124f060f79ea84a714c51619cc923d82df4688c6e16 SHA512 97be762c5a1a50255e2b64ff1b0ffa91f882062fe93c583191e2ab612d9e299f277b536fde322b613f720827e747a371487678653d818849b4d08c81a94ff8b8 +DIST github.com%2Finconshreveable%2Fmousetrap%2F@v%2Fv1.0.0.mod 44 BLAKE2B 764581d416faa477a91695a42c68cef5638d019a1622fb3bcee976c1581e904995d33c79ffed1d3b805f660931ece844b3e17437f158f8b82ddae82e95f0358f SHA512 0c77200112d96f9cddf8cf7da0059204914b06a8c400e2e672443bd02a45d9ebb3274275c20e6e7ee0728992e77579d945b36de44ccbaab2ee92fd55f382f7ac +DIST github.com%2Finconshreveable%2Fmousetrap%2F@v%2Fv1.0.0.zip 3712 BLAKE2B f4f79741bb83862583f51f2ac5e80181eb0e9c2a4578df32f7e24eb98f4f548b99333e0e6a377e03ef701057b01e852e6b710ab885b65170c861bef556863da4 SHA512 e16bd414c1df566a12944e4a99ebd84d2103f0cb3bf8ec312e3de400f20b3eae27845db50672801c10474dbf1dc61d0c2e16e5dcd3c4447681c0b77f9114a411 +DIST github.com%2Fspf13%2Fcobra%2F@v%2Fv0.0.3.mod 30 BLAKE2B cb72701c052ce4059500f4c6b3d0c4fb336d118865bf1f7f45ce0b0279e1d01b6e58d49f82182c2523681a97bcaa7a70216d63ceeca0ea1d09c1921226f6bc4e SHA512 ea13ed8e166d16a7bcd14a7cde90af1cacc0b05995d1c5ec245fa536208e0cbfffd689dd460d66c0a1ad315f2b0ae9f4b803ed72bcdfd89c4a98a7ed934289c7 +DIST github.com%2Fspf13%2Fcobra%2F@v%2Fv0.0.3.zip 139997 BLAKE2B c20d7292a69fd548bf0dbd62751dc08a41c66f120bd8b5142e96f498aafd208328ed4888d7ac59404b64dace96bcad210f64734e432f15ae63ce6d39dd308cf4 SHA512 1476716a98d5aa26c34af6d85eb93886cae211beac7cdc8f886d2030bf7f83802409aa56510ba09cbdb609dcd2faf87d3490c4e5392922e0e034edcd3d9fb1bf +DIST github.com%2Fspf13%2Fpflag%2F@v%2Fv1.0.2.mod 30 BLAKE2B 18c9fb79a291aaf800991a296c8d7b1933cf45bf56082301a64ce17ea64dd15fd304094fd4b0561bd99c48ada545dfe7fa8cf47a15593cd3166eb66657a5e114 SHA512 d08b4540b799cee9c5f088c4e1fe002c9fda86f1634380409eec1404598b84376d3ca26b4c1cbcf58bc19234ab56531ab11db8a00c6dd2e15a53f3b4ae757efc +DIST github.com%2Fspf13%2Fpflag%2F@v%2Fv1.0.2.zip 69513 BLAKE2B f0245b6dc9af841a0671ccc537c5b8db24d1339cbe4357060df7a81985654b8795af2da9019fe9af6e6796837fc5a3899049a6045875951ebde93aeebdc8c455 SHA512 4cb9a49c18f230383add346759d68f5831347227d202da227527971d6ca071a9832ffbf051740a4ac8f07fd1f2df41691dd297a9f17b023b889d99506aa6da23 DIST github.com-go-check-check-20d25e2804050c1cd24a7eea1e7a6447dd0e74ec.tar.gz 30367 BLAKE2B c18a0f1aff1bde8e6fc533ea627377ca4de4830d84289355f68163855ec97ac47f537b3b2627568c31714ac3a7672ebf86d60452269c75c80c2cd7565d7c97a0 SHA512 94342de3aad4db1c4442062f4cf4e57c723a43bbcb0069a8bed3b719e3864eef7500a24c9c99c755114708d6822e9b23f296b6d0b2b46f32cc6ffc65944d1729 DIST github.com-go-yaml-yaml-v2.2.1.tar.gz 70217 BLAKE2B 4ba34bd9432699ec60348d13d8b95498abf751a922f782bf177695e6854faf907c1728d1dc13ad1cb63215fe3a86366cd99068247d15c726ba77bd0cf434b9c6 SHA512 d49267ee361196b0a1e1b9ad6f6cfa903627ccf7925fc3acc8d1bd214b64d362a9dcee10ba524fb8887226235c5baa2c8812a9f62adc7e6719d4ed84baa4ce4b DIST github.com-inconshreveable-mousetrap-v1.0.0.tar.gz 2290 BLAKE2B bd46103e50dd916bad41aafbf8c1945d835222c131a88f4d3fba35feb4b11ae83c900280c9dafc6f0ef92f71b6a3ba02996dcb31d67eb49314b29d23fda2c8b8 SHA512 6f68bd6b7b1c7aa6651fe83b5230b6c8398b85561b01ca6a36ee638e186c325cc70444818de7a569db240159ba5840ed24f212e0defdf9f9890803a7641285d9 DIST github.com-spf13-cobra-v0.0.3.tar.gz 101526 BLAKE2B 8613eccdd5bbd31429b7aa8260ee9367e34a5cc78075b394b09db91a97445ed1dadfb53a86105b55cb6ea3b4c2f9d50553e9198d64dfb6033dd1db2805984a2c SHA512 c38db9432a168f913b41a1e1b11d84bedfade82ff70791be9d343a6cc86b8a05b18bae344d67ebd8bae4c98662db7ac664a9dc86fa9b9ad4aa5c96cbf0178efb DIST github.com-spf13-pflag-v1.0.2.tar.gz 44042 BLAKE2B 157fa6c2b1efa594abebd76ff03121050187974d62475b1aa66af325a2198ea64105655597703c37f25e22c4a07864d9fc31a6a29ba9233fdeefcceef400d5e5 SHA512 fd3cefd683329316eda4ec660193a970e38435515c16805190235e2c969c8d65a6f602fdc7c2f7cf3d9740c5a321ee5be5e8034bd6cd7c05c12722cf64d1e8ae +DIST gopkg.in%2Fcheck.v1%2F@v%2Fv0.0.0-20161208181325-20d25e280405.mod 25 BLAKE2B 6470f3d94700c4d8b3176d692bdb91646750f2c6a866ff2ef4183aff1de01f024a8757f97b4626ec0355092e5f25e7ded91cd5be845f627d107c58b1daf400d7 SHA512 9ac0f80ef05881387cb2f48f81560f3207fe586ea16495383662e6d62e43d93fac01dfe72e1d0063d3ab065331dab3a8098d7da4f1830ba1aff6f27f8e1bc1b2 +DIST gopkg.in%2Fcheck.v1%2F@v%2Fv0.0.0-20161208181325-20d25e280405.zip 39844 BLAKE2B b3dab69dbd1ebb999938c12595de7007dce9431cfeaeb5e77aba80c49918d1a4edf7fb95279e9b66686cb45deaf57a011c083e55fb66ec2c614582ba323954da SHA512 97c96a92ec86372c2f06141c30bceaa86ed62c1db34696f9542f43f3411cb0a37dea654de923a5ee054e603198179b9048e3b477da140e4092ffadc4525b9241 +DIST gopkg.in%2Fyaml.v2%2F@v%2Fv2.2.1.mod 95 BLAKE2B adb3684980f1d8e6c23444e91028f8db55f1bc496114eb3508dbecf9917dbc8a0a4bed7c0d761123335a75b9ffe727e180f2d6aa5f84312edb05a798185c8362 SHA512 916ff67ddb6c2ba39905db4277ce42596d9ca5a42f8aa7f47f16335e78d91a1b30419fd1b7b6967b37e248363397ec527b38d2f500b3546edda5d2bce1944379 +DIST gopkg.in%2Fyaml.v2%2F@v%2Fv2.2.1.zip 77767 BLAKE2B d77644df22edfcda7d99d4a4a23a1fd1154fa21489dc36b9a8f9ffc45e341d8d793faae76d4d3d32290766c7b13cea30d17efaa7e8e74786ead90b0605f70967 SHA512 bc935858e1d5c341c7d53c41bdf6f856976a469c8f54f017e41e8be742064ce9980cc6881353e022f854d6e19096a37f5ff62bf7b01019b0425a0c03dc6fe14a DIST simplevirt-0.0_p20181012.tar.gz 14652 BLAKE2B a6a648ed159d0648f27174c6598c9ae85e41530b218ef0360962884d1f61cfd16d2534ef4d2a01eb87138d0390fc7fe25e070c602f296344b8285c9dd2804287 SHA512 64c0edfc22ed0347c7335b942b06b6b9fd8c3f2ea7d374bf14b96b98b23248d15b6f38d7d1d809c8cd60b605f1809dfca8ff5c249e2df183c8b1636c26440ca8 +DIST simplevirt-0.1.tar.gz 15105 BLAKE2B 69e5aa5857f82e9067167b811fb26a728756aec5902b2d630434795b21455c40898ff695fa0d3c9e5ea0c34f66e6654ac2f26d66c9648ebf99cb2e68661bdad7 SHA512 cd5dba4fafd5a493fdb0d44219684f517b17dbd54c4843fb0ea277da5c302507415c5ceb2b8e47082425127c3ac5061d51b8b153b93c406a5b328cf3a47821db EBUILD simplevirt-0.0_p20181012-r1.ebuild 2088 BLAKE2B 7ee65bf2f0ae236e901d2abd66d6ff46963023dfb20017ca78f67c91843d298da83b0540136259f10db2d8a3b05f5238ebccbc2ef837f583fabab0ab0d53be72 SHA512 e10663b3b9c9574cb7d847d17c45d02d1111ff379f1fa812c934e40b64b48276abe631171b47b0881c4c3d936c24b7433d1e48c288663270f8d806f92e82897f +EBUILD simplevirt-0.1.ebuild 1960 BLAKE2B 74d45b3f7957bc8368ec2b099f8893fb81920813d06c3ed05be160b242b704b4c31e3900235e4ae9e20d473072a5b081ef4158226b9b6e0514575881589e47d6 SHA512 be644ecc24e5224a85ec6ba9250e3af0bf82826ca9aa25d1814fde9c93a13ce997f59dfb1bcfd697f89f32500ebc912b3405794eb3f8d9f29213e38a378c8f84 MISC metadata.xml 383 BLAKE2B aaa4ca5df2648bc7f2bd2229b9e7bb1045b412610ed53898a4c296ccab73e7f6e2adbcb7d0bad3b2e5b09a318e4ecf666e958001187f02421f10d2f8b1ca6abc SHA512 32cd61329f301b7a84fa45c64fe26465e81be96033a020dc309d4c92a9930fe89739711f07dfbcaa3ab1ce76907cdfa3e5bef42ab69da062602c53ce77888a04 diff --git a/app-emulation/simplevirt/simplevirt-0.1.ebuild b/app-emulation/simplevirt/simplevirt-0.1.ebuild new file mode 100644 index 000000000000..bf544e36aff1 --- /dev/null +++ b/app-emulation/simplevirt/simplevirt-0.1.ebuild @@ -0,0 +1,71 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit go-module linux-info + +DESCRIPTION="Simple virtual machine manager for Linux (QEMU/KVM)" +HOMEPAGE="https://github.com/rafaelmartins/simplevirt" + +EGO_SUM=( + "github.com/inconshreveable/mousetrap v1.0.0" + "github.com/inconshreveable/mousetrap v1.0.0/go.mod" + "github.com/spf13/cobra v0.0.3" + "github.com/spf13/cobra v0.0.3/go.mod" + "github.com/spf13/pflag v1.0.2" + "github.com/spf13/pflag v1.0.2/go.mod" + "gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405" + "gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod" + "gopkg.in/yaml.v2 v2.2.1" + "gopkg.in/yaml.v2 v2.2.1/go.mod" + ) +go-module_set_globals +SRC_URI="https://github.com/rafaelmartins/simplevirt/archive/v${PV}.tar.gz -> ${P}.tar.gz + ${EGO_SUM_SRC_URI}" + +LICENSE="Apache-2.0 BSD-2 BSD MIT" +SLOT="0" +KEYWORDS="" + +RDEPEND=" + acct-group/simplevirt + virtual/logger + app-emulation/qemu" + +CONFIG_CHECK="~TUN ~BRIDGE" +ERROR_TUN="CONFIG_TUN: Universal TUN/TAP driver required to setup bridge networking" +ERROR_BRIDGE="CONFIG_BRIDGE: 802.1d Ethernet Bridging required to setup bridge networking" + +src_compile() { + go build -ldflags " + -X github.com/rafaelmartins/simplevirt.Version=${PV}" ./cmd/... || die +} + +src_install() { + dobin simplevirtctl + dosbin simplevirtd + + newinitd "${FILESDIR}/simplevirtd.initd" simplevirtd + newconfd "${FILESDIR}/simplevirtd.confd" simplevirtd + + dodoc README.md + + keepdir /etc/simplevirt +} + +src_test() { + go test -v ./pkg/... || die +} + +pkg_postinst() { + elog + elog "To use simplevirt, the simplevirtd daemon must be running as root." + elog "To automatically start the daemon at boot, add it to the default runlevel:" + elog " rc-update add simplevirtd default" + elog + elog "systemd is not supported for now." + elog + elog "To use simplevirtctl as a non-root user, add yourself to the 'simplevirt' group:" + elog " usermod -aG simplevirt youruser" + elog +} -- cgit v1.2.3