From 7e85b0f4a1116a69e2bd344c3f86f94e9571725d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20S=C5=82omi=C5=84ski?= Date: Fri, 10 Jan 2025 21:52:16 +0100 Subject: [PATCH 1/4] sys-boot/limine: add 8.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Kacper Słomiński --- sys-boot/limine/Manifest | 1 + sys-boot/limine/limine-8.7.0.ebuild | 49 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 sys-boot/limine/limine-8.7.0.ebuild diff --git a/sys-boot/limine/Manifest b/sys-boot/limine/Manifest index 35ba0b622f..51f249f352 100644 --- a/sys-boot/limine/Manifest +++ b/sys-boot/limine/Manifest @@ -18,3 +18,4 @@ DIST limine-8.3.2.tar.gz 562262 BLAKE2B f519c2ecc2167b8fa28f4eff47e6c4e45103a42a DIST limine-8.4.0.tar.gz 602897 BLAKE2B 924631c9cd6f6c6400bf2f355c3cb044c19c8574bf37758be9b8f773043071ae8a79d58acf3d4d46a8bf1bc53ce445e02b18d25889e3868539f34c2df91d7fc7 SHA512 e8679acf49e71458becf47183280b7ecc367d9523d927bec1dce0840e7f9c95d038de57c09d7e1315d17582fdf50ad939d658a7d2bfa3cc228f1efd63110b077 DIST limine-8.5.0.tar.gz 597435 BLAKE2B e39a41c6182bbb992bf14399990b733ca851e14a26dc167ea233dfa1822928958479ec014a9c654e29644c375bdb83c02a4c500931073b1ba951bceb64938a13 SHA512 1cf27e464deb01e69b31007a67558606fb69570e80d7f9261aa78d4fef5e558ad78edf3ec526a8ab064ac18bc9746111a862bcad5355cf30911102a8faa85100 DIST limine-8.6.0.tar.gz 598538 BLAKE2B a24a416f4d26f2716839e8e1b3852fab0bcbbf8e195f415450cff688d2c853486cfa1d484bb8f440cc494725342b4da02ef5354404469faead173869c99fc0c8 SHA512 a10c066697d26d212f1d77dc0bd666a8c545630002e15564a8628891a759c28d088e61183eb09e58ca079e0aa1a993a63653d02e43d0243649fa5f2f5869ef48 +DIST limine-8.7.0.tar.gz 603144 BLAKE2B fdfbae9ccb238c3dd84f6a7fb8cf80b03f6f9e47fd9556452c30c2658fa6209886df07c8065cd5140036887e4aaf63d9b1ded8853c9ba70c80df8079fa04291d SHA512 f494d644199fda13974d0938626a0753e42dec606c5357d71cd26a8d6c72f6d34ba245c68ef3c9206c304e179da3c28d9061c79d059cd87a18fb1f45c76a09d3 diff --git a/sys-boot/limine/limine-8.7.0.ebuild b/sys-boot/limine/limine-8.7.0.ebuild new file mode 100644 index 0000000000..bf81f5137a --- /dev/null +++ b/sys-boot/limine/limine-8.7.0.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( {16..19} ) +inherit llvm-r1 + +DESCRIPTION="Limine is a modern, advanced, and portable BIOS/UEFI multiprotocol bootloader" +HOMEPAGE="https://limine-bootloader.org/" +SRC_URI="https://github.com/limine-bootloader/limine/releases/download/v${PV}/limine-${PV}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64" +IUSE="+bios +bios-pxe +bios-cd +cd-efi +uefi32 +uefi64 +uefiaa64 +uefirv64 +uefiloong64" + +MY_LLVM_TARGETS="AArch64 ARM X86 RISCV LoongArch" +MY_LLVM_FLAGS="llvm_targets_${MY_LLVM_TARGETS// /(-),llvm_targets_}(-)" + +BDEPEND=" + app-alternatives/gzip + dev-lang/nasm + sys-apps/findutils + $(llvm_gen_dep " + llvm-core/llvm:\${LLVM_SLOT}[${MY_LLVM_FLAGS}] + llvm-core/clang:\${LLVM_SLOT}[${MY_LLVM_FLAGS}] + llvm-core/lld:\${LLVM_SLOT} + ") + cd-efi? ( sys-fs/mtools ) +" + +src_configure() { + local myconf=( + "$(use_enable bios)" + "$(use_enable bios-cd)" + "$(use_enable bios-pxe)" + + "$(use_enable uefi32 uefi-ia32)" + "$(use_enable uefi64 uefi-x86-64)" + "$(use_enable uefiaa64 uefi-aarch64)" + "$(use_enable uefirv64 uefi-riscv64)" + "$(use_enable uefiloong64 uefi-loongarch64)" + "$(use_enable cd-efi uefi-cd)" + ) + + TOOLCHAIN_FOR_TARGET=llvm \ + econf "${myconf[@]}" +} From 09e83652920c6db7d912f6cbbd3636ceb2e0e458 Mon Sep 17 00:00:00 2001 From: Denis Reva Date: Sat, 11 Jan 2025 14:25:20 +0500 Subject: [PATCH 2/4] app-containers/waydroid: add -r1, which fixes bugs Also fixed a bug (via patch from upstream) with intel haswell vulkan api Closes: https://bugs.gentoo.org/947280 Signed-off-by: Denis Reva --- .../waydroid/files/waydroid-1.4.3-r1.patch | 174 ++++++++++++++++++ .../waydroid/waydroid-1.4.3-r1.ebuild | 117 ++++++++++++ 2 files changed, 291 insertions(+) create mode 100644 app-containers/waydroid/files/waydroid-1.4.3-r1.patch create mode 100644 app-containers/waydroid/waydroid-1.4.3-r1.ebuild diff --git a/app-containers/waydroid/files/waydroid-1.4.3-r1.patch b/app-containers/waydroid/files/waydroid-1.4.3-r1.patch new file mode 100644 index 0000000000..1bfa0b99c0 --- /dev/null +++ b/app-containers/waydroid/files/waydroid-1.4.3-r1.patch @@ -0,0 +1,174 @@ +From c9ea5abff749e660c9aca0fcd224875464c3dacd Mon Sep 17 00:00:00 2001 +From: Alessandro Astone +Date: Sat, 10 Aug 2024 16:10:14 +0200 +Subject: [PATCH 1/3] debian: Use new polkitd package + +Prefer the new polkitd name but keep supporting policykit-1 for +older distros + +Fixes: #1484 +--- + debian/control | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/debian/control b/debian/control +index 2b63f56b..8f0dfa42 100644 +--- a/debian/control ++++ b/debian/control +@@ -20,7 +20,7 @@ Depends: ${misc:Depends}, + gir1.2-gtk-3.0, + python3-dbus, + dbus, +- policykit-1, ++ polkitd | policykit-1, + iptables + Description: Android™ application support + waydroid allows running a separate Android™ environment + +From 5000c9703de873e4f477ebcdd3556ad163252115 Mon Sep 17 00:00:00 2001 +From: Alessandro Astone +Date: Wed, 4 Sep 2024 23:27:58 +0200 +Subject: [PATCH 2/3] initializer: Refactor setup to better handle preinstalled + images + +Bail out early when using preinstalled images. +There's no reason to attempt fetching the OTA channels if we're +going to use preinstalled images. + +Fixes: #1550 +--- + tools/actions/initializer.py | 52 ++++++++++++++++++++---------------- + 1 file changed, 29 insertions(+), 23 deletions(-) + +diff --git a/tools/actions/initializer.py b/tools/actions/initializer.py +index 8f6c2c3b..87250971 100644 +--- a/tools/actions/initializer.py ++++ b/tools/actions/initializer.py +@@ -35,20 +35,37 @@ def setup_config(args): + args.arch = helpers.arch.host() + cfg["waydroid"]["arch"] = args.arch + ++ args.vendor_type = get_vendor_type(args) ++ cfg["waydroid"]["vendor_type"] = args.vendor_type ++ ++ helpers.drivers.setupBinderNodes(args) ++ cfg["waydroid"]["binder"] = args.BINDER_DRIVER ++ cfg["waydroid"]["vndbinder"] = args.VNDBINDER_DRIVER ++ cfg["waydroid"]["hwbinder"] = args.HWBINDER_DRIVER ++ ++ has_preinstalled_images = False + preinstalled_images_paths = tools.config.defaults["preinstalled_images_paths"] +- if not args.images_path: +- for preinstalled_images in preinstalled_images_paths: +- if os.path.isdir(preinstalled_images): +- if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"): +- args.images_path = preinstalled_images +- break +- else: +- logging.warning("Found directory {} but missing system or vendor image, ignoring...".format(preinstalled_images)) ++ for preinstalled_images in preinstalled_images_paths: ++ if os.path.isdir(preinstalled_images): ++ if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"): ++ has_preinstalled_images = True ++ args.images_path = preinstalled_images ++ break ++ else: ++ logging.warning("Found directory {} but missing system or vendor image, ignoring...".format(preinstalled_images)) + + if not args.images_path: + args.images_path = tools.config.defaults["images_path"] + cfg["waydroid"]["images_path"] = args.images_path + ++ if has_preinstalled_images: ++ cfg["waydroid"]["system_ota"] = args.system_ota = "None" ++ cfg["waydroid"]["vendor_ota"] = args.vendor_ota = "None" ++ cfg["waydroid"]["system_datetime"] = tools.config.defaults["system_datetime"] ++ cfg["waydroid"]["vendor_datetime"] = tools.config.defaults["vendor_datetime"] ++ tools.config.save(args, cfg) ++ return True ++ + channels_cfg = tools.config.load_channels() + if not args.system_channel: + args.system_channel = channels_cfg["channels"]["system_channel"] +@@ -67,11 +84,8 @@ def setup_config(args): + "/waydroid_" + args.arch + "/" + args.system_type + ".json" + system_request = helpers.http.retrieve(args.system_ota) + if system_request[0] != 200: +- if args.images_path not in preinstalled_images_paths: +- raise ValueError( +- "Failed to get system OTA channel: {}, error: {}".format(args.system_ota, system_request[0])) +- else: +- args.system_ota = "None" ++ raise ValueError( ++ "Failed to get system OTA channel: {}, error: {}".format(args.system_ota, system_request[0])) + + device_codename = helpers.props.host_get(args, "ro.product.device") + args.vendor_type = None +@@ -85,12 +99,8 @@ def setup_config(args): + break + + if not args.vendor_type: +- if args.images_path not in preinstalled_images_paths: +- raise ValueError( +- "Failed to get vendor OTA channel: {}".format(vendor_ota)) +- else: +- args.vendor_ota = "None" +- args.vendor_type = get_vendor_type(args) ++ raise ValueError( ++ "Failed to get vendor OTA channel: {}".format(vendor_ota)) + + if args.system_ota != cfg["waydroid"].get("system_ota"): + cfg["waydroid"]["system_datetime"] = tools.config.defaults["system_datetime"] +@@ -100,10 +110,6 @@ def setup_config(args): + cfg["waydroid"]["vendor_type"] = args.vendor_type + cfg["waydroid"]["system_ota"] = args.system_ota + cfg["waydroid"]["vendor_ota"] = args.vendor_ota +- helpers.drivers.setupBinderNodes(args) +- cfg["waydroid"]["binder"] = args.BINDER_DRIVER +- cfg["waydroid"]["vndbinder"] = args.VNDBINDER_DRIVER +- cfg["waydroid"]["hwbinder"] = args.HWBINDER_DRIVER + tools.config.save(args, cfg) + return True + + +From 023c4e31e06e2a31110a346516a841e68063d473 Mon Sep 17 00:00:00 2001 +From: Alessandro Astone +Date: Sat, 14 Dec 2024 16:40:05 +0100 +Subject: [PATCH 3/3] gpu: Use intel_hasvk on intel graphics gen 8 or lower + +Closes: #1604 +--- + tools/helpers/gpu.py | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/tools/helpers/gpu.py b/tools/helpers/gpu.py +index 55343d42..2a38cfe8 100644 +--- a/tools/helpers/gpu.py ++++ b/tools/helpers/gpu.py +@@ -4,6 +4,9 @@ + + unsupported = ["nvidia"] + ++def getMinor(args, dev): ++ return tools.helpers.props.file_get(args, "/sys/class/drm/{}/uevent".format(dev), "MINOR") ++ + def getKernelDriver(args, dev): + return tools.helpers.props.file_get(args, "/sys/class/drm/{}/device/uevent".format(dev), "DRIVER") + +@@ -32,6 +35,16 @@ def getVulkanDriver(args, dev): + "nouveau": "nouveau", + } + kernel_driver = getKernelDriver(args, dev) ++ ++ if kernel_driver == "i915": ++ try: ++ gen = tools.helpers.run.user(args,["awk", "/^graphics version:|^gen:/ {print $NF}", ++ "/sys/kernel/debug/dri/{}/i915_capabilities".format(getMinor(args, dev))], output_return=True) ++ if int(gen) < 9: ++ return "intel_hasvk" ++ except: ++ pass ++ + if kernel_driver in mapping: + return mapping[kernel_driver] + return "" diff --git a/app-containers/waydroid/waydroid-1.4.3-r1.ebuild b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild new file mode 100644 index 0000000000..106dfd17cf --- /dev/null +++ b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild @@ -0,0 +1,117 @@ +# Copyright 2022-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit linux-info xdg python-single-r1 + +DESCRIPTION="Container-based approach to boot a full Android system on Linux systems" +HOMEPAGE="https://waydro.id" +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~x86" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +IUSE="apparmor +clipboard systemd" + +PATCHES=( + "${FILESDIR}/waydroid-1.4.3-r1.patch" + ) + +DEPEND="|| ( virtual/linux-sources virtual/dist-kernel )" +RDEPEND=" + systemd? ( sys-apps/systemd ) + app-containers/lxc[systemd?,apparmor?,seccomp] + $(python_gen_cond_dep ' + clipboard? ( >=dev-python/pyclip-0.7.0[wayland,${PYTHON_USEDEP}] ) + dev-python/pygobject[${PYTHON_USEDEP}] + >=dev-python/gbinder-1.1.1[${PYTHON_USEDEP}] + dev-python/dbus-python[${PYTHON_USEDEP}] + ') + net-firewall/nftables + net-dns/dnsmasq + >=dev-libs/libglibutil-1.0.79 + >=dev-libs/gbinder-1.1.41 + ${PYTHON_DEPS} +" + +CONFIG_CHECK=" + ~ANDROID_BINDER_IPC + ~ANDROID_BINDERFS + ~MEMFD_CREATE + ~NETFILTER_XT_TARGET_MASQUERADE + ~NETFILTER_XT_NAT + ~PSI + ~!PSI_DEFAULT_DISABLED + ~NF_TABLES + ~NF_TABLES_INET + ~NF_TABLES_NETDEV + ~NFT_NUMGEN + ~NFT_NAT + ~NFT_TUNNEL + ~NFT_QUOTA + ~NFT_SOCKET + ~NF_FLOW_TABLE + ~NFT_BRIDGE_META + ~NFT_BRIDGE_REJECT +" +ERROR_ANDROID_BINDERFS="CONFIG_ANDROID_BINDERFS: need for creating Android-specific binder IPC channels" +ERROR_ANDROID_BINDER_IPC="CONFIG_ANDROID_BINDER_IPC: need for creating Android-specific binder IPC channels" +ERROR_MEMFD_CREATE="CONFIG_MEMFD_CREATE: it completely replaced deprecated ISHMEM drivers, + therefore it's vital for android-specific memory management" +ERROR_NETFILTER_XT_NAT="CONFIG_NETFILTER_XT_NAT: see bug #937106" +ERROR_NETFILTER_XT_TARGET_MASQUERADE="CONFIG_NETFILTER_XT_TARGET_MASQUERADE: see bug #937106" +ERROR_PSI="CONFIG_PSI: see bug #947280" +ERROR_NF_TABLES="CONFIG_NF_TABLES: Make sure you have NFTABLES up and running in your kernel" +ERROR_NFT_NAT="CONFIG_NFT_NAT: see bug #947280" +ERROR_NFT_BRIDGE_META="CONFIG_NFT_BRIDGE_META: see bug #947280" + +pkg_setup() { + linux-info_pkg_setup + python-single-r1_pkg_setup +} + +src_prepare() { + if ! use apparmor; then + # https://github.com/waydroid/waydroid/issues/652 + sed -e '/^lxc\.apparmor\.profile =/d' \ + -i data/configs/config_3 || die + fi + default +} + +src_install() { + python_fix_shebang waydroid.py + emake install DESTDIR="${D}" USE_NFTABLES=1 USE_SYSTEMD=$(usex systemd 1 0) + if ! use systemd; then + elog "Installing waydroid OpenRC daemon" + doinitd "${FILESDIR}"/waydroid + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + elog "After package installation run either 'emerge --config app-containers/waydroid'" + elog "or 'waydroid init' from root shell to install android container runtime" + elog "To run waydroid, 1. Start container: 'rc-service waydroid start'" + elog "2. start wayland channel (from user shell) 'waydroid session start'" + elog "Contact https://docs.waydro.id/usage/install-on-desktops for how-to guides" + elog "(does not cover Gentoo-specific things sadly)" + elog + + ewarn "Make sure you have NFTABLES up and running in your kernel. See" + ewarn "https://wiki.gentoo.org/wiki/Nftables for how-to details" + ewarn + + if use apparmor; then + ewarn "Check the known issues for apparmor:" + ewarn "https://docs.waydro.id/debugging/known-issues" + fi +} + +pkg_config() { + "${EROOT}"/usr/bin/waydroid init +} From 8b113684a563f77b00955d4e91a183591c55b518 Mon Sep 17 00:00:00 2001 From: Denis Reva Date: Sat, 11 Jan 2025 14:33:52 +0500 Subject: [PATCH 3/4] app-containers/waydroid: improved intentdation I attempted to fix pkgcheck, but it still warns about unused line. I'm in doubt why. Signed-off-by: Denis Reva --- app-containers/waydroid/waydroid-1.4.3-r1.ebuild | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app-containers/waydroid/waydroid-1.4.3-r1.ebuild b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild index 106dfd17cf..dea2bec9a2 100644 --- a/app-containers/waydroid/waydroid-1.4.3-r1.ebuild +++ b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -19,7 +19,6 @@ IUSE="apparmor +clipboard systemd" PATCHES=( "${FILESDIR}/waydroid-1.4.3-r1.patch" ) - DEPEND="|| ( virtual/linux-sources virtual/dist-kernel )" RDEPEND=" systemd? ( sys-apps/systemd ) @@ -36,7 +35,6 @@ RDEPEND=" >=dev-libs/gbinder-1.1.41 ${PYTHON_DEPS} " - CONFIG_CHECK=" ~ANDROID_BINDER_IPC ~ANDROID_BINDERFS @@ -101,11 +99,9 @@ pkg_postinst() { elog "Contact https://docs.waydro.id/usage/install-on-desktops for how-to guides" elog "(does not cover Gentoo-specific things sadly)" elog - ewarn "Make sure you have NFTABLES up and running in your kernel. See" ewarn "https://wiki.gentoo.org/wiki/Nftables for how-to details" ewarn - if use apparmor; then ewarn "Check the known issues for apparmor:" ewarn "https://docs.waydro.id/debugging/known-issues" From 7ea8f45b12450dfbf635c2daf1cc29dba184e4c5 Mon Sep 17 00:00:00 2001 From: David Roman Date: Sat, 11 Jan 2025 13:44:31 +0100 Subject: [PATCH 4/4] app-text/dooit: fix unnecesarily restrictive depndency on click Signed-off-by: David Roman --- app-text/dooit/dooit-3.1.0.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-text/dooit/dooit-3.1.0.ebuild b/app-text/dooit/dooit-3.1.0.ebuild index a3e63caad7..f7fded8149 100644 --- a/app-text/dooit/dooit-3.1.0.ebuild +++ b/app-text/dooit/dooit-3.1.0.ebuild @@ -32,7 +32,7 @@ RDEPEND=" =dev-python/tzlocal-5.2*[${PYTHON_USEDEP}] ~dev-python/sqlalchemy-2.0.36[${PYTHON_USEDEP}] ~dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}] - ~dev-python/click-8.1.7[${PYTHON_USEDEP}] +